source: nrEngine/src/ScriptLoader.cpp @ 23

Revision 23, 3.5 KB checked in by art, 13 years ago (diff)
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                // fill out supported resource types;
40                declareSupportedResourceType("Script");
41                declareSupportedResourceType("Config");
42                declareSupportedResourceType("nrScript");
43               
44                // we do only support dll files in windows version of our engine
45                declareSupportedFileType("nrscript");
46                declareSupportedFileType("cfg");
47                declareSupportedFileType("script");
48
49                // now delcare mapping of the types
50                declareTypeMap("nrscript", "nrScript");
51                declareTypeMap("script", "nrScript");
52                declareTypeMap("cfg", "Config");
53               
54                return OK;
55        }
56
57        //----------------------------------------------------------------------------------
58        Result ScriptLoader::loadResourceImpl(IResource* res, const std::string& fileName, PropertyList* param)
59        {
60                // load a file so we use its content as a script
61                FileStream* fStream = new FileStream();
62                Result ret = fStream->open(fileName);
63                if (ret == OK){
64
65                        // get the whole file content
66                        std::string str = fStream->getAsString();
67
68                        // cast the resource to the iscript interface
69                        IScript* scr = dynamic_cast<IScript*>(res);
70                       
71                        // load the script from a string
72                        ret = scr->loadFromString(str);
73
74                }
75                delete fStream;
76               
77                // return the last error
78                return ret;
79        }
80
81
82        //----------------------------------------------------------------------------------
83        IResource* ScriptLoader::createResourceImpl(const std::string& resourceType, PropertyList* params)
84        {
85                // check if we want to create just a script
86                if (resourceType == "Script" || resourceType == "nrScript")
87                        return new Script();
88                else if (resourceType == "Config"){
89                        // config scripts does run completely not stepwise
90                        Script* scr = new Script();
91                        scr->setRunStepwise(false);
92                        return scr;
93                }
94                return NULL;
95        }
96
97
98        //----------------------------------------------------------------------------------
99        IResource* ScriptLoader::createEmptyResource(const ::std::string& resourceType)
100        {
101                // create an instance of empty plugin
102                return new EmptyScript();
103        }
104
105
106};
107
Note: See TracBrowser for help on using the repository browser.