source: nrEngine/src/ScriptLoader.cpp @ 32

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