source: nrEngine/src/ScriptLoader.cpp @ 1

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