source: nrEngine/src/ScriptLoader.cpp @ 35

Revision 35, 3.5 KB checked in by art, 12 years ago (diff)

Big changes in resource managment system. Interface functions were renamed.
Resource loading is now done throughthe resource and not through the loader.

Line 
1/***************************************************************************
2 *                                                                         *
3 *   (c) Art Tevs, MPI Informatik Saarbruecken                             *
4 *       mailto: <tevs@mpi-sb.mpg.de>                                      *
5 *                                                                         *
6 *   This program is free software; you can redistribute it and/or modify  *
7 *   it under the terms of the GNU General Public License as published by  *
8 *   the Free Software Foundation; either version 2 of the License, or     *
9 *   (at your option) any later version.                                   *
10 *                                                                         *
11 ***************************************************************************/
12
13
14//----------------------------------------------------------------------------------
15// Includes
16//----------------------------------------------------------------------------------
17#include "ScriptLoader.h"
18#include "Log.h"
19#include "FileStream.h"
20#include "Kernel.h"
21
22namespace nrEngine{
23
24        //----------------------------------------------------------------------------------
25        ScriptLoader::ScriptLoader() : IResourceLoader("ScriptLoader")
26        {
27                initializeResourceLoader();
28        }
29
30
31        //----------------------------------------------------------------------------------
32        ScriptLoader::~ScriptLoader()
33        {
34
35        }
36
37        //----------------------------------------------------------------------------------
38        Result ScriptLoader::initializeResourceLoader()
39        {
40                // fill out supported resource types;
41                declareSupportedResourceType("Script");
42                declareSupportedResourceType("Config");
43                declareSupportedResourceType("nrScript");
44
45                // we do only support dll files in windows version of our engine
46                declareSupportedFileType("script");
47                declareSupportedFileType("nrscript");
48                declareSupportedFileType("cfg");
49
50                // now delcare mapping of the types
51                declareTypeMap("nrscript", "nrScript");
52                declareTypeMap("script", "nrScript");
53                declareTypeMap("cfg", "Config");
54
55                return OK;
56        }
57       
58        //----------------------------------------------------------------------------------
59        Result ScriptLoader::loadResource(IResource* res, const std::string& fileName, PropertyList* param)
60        {
61                // load a file so we use its content as a script
62                FileStream* fStream = new FileStream();
63                Result ret = fStream->open(fileName);
64                if (ret == OK){
65
66                        // get the whole file content
67                        std::string str = fStream->getAsString();
68
69                        // cast the resource to the iscript interface
70                        IScript* scr = dynamic_cast<IScript*>(res);
71
72                        // load the script from a string
73                        ret = scr->loadFromString(str);
74
75                }
76                delete fStream;
77
78                // return the last error
79                return ret;
80        }
81
82
83        //----------------------------------------------------------------------------------
84        IResource* ScriptLoader::createResource(const std::string& resourceType, PropertyList* params)
85        {
86                // check if we want to create just a script
87                if (resourceType == "Script" || resourceType == "nrScript")
88                        return new Script();
89                else if (resourceType == "Config"){
90                        // config scripts does run completely not stepwise
91                        Script* scr = new Script();
92                        scr->setRunStepwise(false);
93                        return scr;
94                }
95                return NULL;
96        }
97
98
99        //----------------------------------------------------------------------------------
100        IResource* ScriptLoader::createEmptyResource(const std::string& resourceType)
101        {
102                // create an instance of empty plugin
103                return new EmptyScript(resourceType);
104        }
105
106
107};
108
Note: See TracBrowser for help on using the repository browser.