Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/lib/script_engine/script_manager.cc @ 9727

Last change on this file since 9727 was 9727, checked in by bensch, 18 years ago

orxonox/new_class_id: new Executor construct, that is much more typesafe, faster, and easier to extend…

Also changed the LoadParam process, and adapted ScriptEngine calls

Then at the end, some missing headers appeared, and appended them to all the cc-files again.

File size: 2.1 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
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, or (at your option)
9   any later version.
10
11### File Specific:
12   main-programmer: Silvan Nellen
13   co-programmer: Benjamin Grauer
14*/
15
16
17#include <string>
18#include <list>
19
20#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD
21
22
23#include "script_manager.h"
24#include "lunar.h"
25
26#include "script.h"
27#include "script_trigger.h"
28#include "luaincl.h"
29#include "loading/load_param_xml.h"
30
31
32
33ScriptManager::ScriptManager(const TiXmlElement* root)
34{
35  this->setName("ScriptManager");
36
37  if (root != NULL)
38    this->loadParams(root);
39}
40
41
42
43ScriptManager::~ScriptManager()
44{
45  this->flush();
46}
47
48
49void ScriptManager::loadParams(const TiXmlElement* root)
50{
51  BaseObject::loadParams(root);
52  {
53    LoadParamXML(root, "Scripts", this, ScriptManager, createScripts);
54
55    LoadParamXML(root, "ScriptTriggers", this, ScriptManager, createTriggers);
56  } // make shure that the loading process is finished
57
58  // fill the scripts and triggers (doing that on runtime is very slow!)
59}
60
61
62
63void  ScriptManager::flush()
64{
65  //Delete all scripts as they aren't deleted automatically
66  while(!Script::objectList().empty())
67    delete Script::objectList().front();
68  //Delete all triggers
69  while(!ScriptTrigger::objectList().empty())
70    delete ScriptTrigger::objectList().front();
71
72}
73
74void  ScriptManager::createScripts(const TiXmlElement* scripts)
75{
76
77  LOAD_PARAM_START_CYCLE(scripts, object);
78  {
79    new Script(object);
80  }
81  LOAD_PARAM_END_CYCLE(object);
82
83}
84
85void ScriptManager::createTriggers(const TiXmlElement* triggers)
86{
87  LOAD_PARAM_START_CYCLE(triggers, object);
88  {
89    new ScriptTrigger(object);
90  }
91  LOAD_PARAM_END_CYCLE(object);
92
93}
94
95
96Script* ScriptManager::getScriptByFile(const std::string& file)
97{
98  for (ObjectList<Script>::const_iterator it = Script::objectList().begin();
99       it != Script::objectList().end();
100       ++it)
101    if( ((*it))->getFileName().compare(file) == 0)
102      return (*it);
103
104  return NULL;
105
106}
Note: See TracBrowser for help on using the repository browser.