Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/new_class_id/src/story_entities/story_entity.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: 4.9 KB
Line 
1
2
3/*
4   orxonox - the future of 3D-vertical-scrollers
5
6   Copyright (C) 2004 orx
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2, or (at your option)
11   any later version.
12
13   ### File Specific:
14   main-programmer: Patrick Boenzli
15   co-programmer:
16*/
17
18
19#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD
20
21
22#include "story_entity.h"
23
24#include "util/loading/load_param.h"
25#include "util/loading/resource_manager.h"
26
27#include "debug.h"
28
29ObjectListDefinition(StoryEntity);
30
31/**
32 *  default constructor initializes all needed data
33 */
34StoryEntity::StoryEntity ()
35{
36  this->registerObject(this, StoryEntity::_objectList);
37
38  this->bInit = false;
39  this->bPaused = false;
40  this->bRunning = false;
41
42  this->loadFile = "";
43  this->storyID = -1;
44  this->description = "";
45  this->menuItemImage = "";
46  this->menuScreenshoot = "";
47  this->nextStoryID = WORLD_ID_GAMEEND;
48  this->bMenuEntry = false;
49}
50
51
52/**
53 *  deconstructor
54 */
55StoryEntity::~StoryEntity ()
56{}
57
58
59/**
60 *  loads the Parameters of a Campaign
61 * @param root: The XML-element to load from
62 */
63void StoryEntity::loadParams(const TiXmlElement* root)
64{
65  BaseObject::loadParams(root);
66
67  LoadParam(root, "identifier", this, StoryEntity, setStoryID)
68  .describe("A Unique Identifier for this StoryEntity");
69
70  LoadParam(root, "path", this, StoryEntity, setLoadFile)
71  .describe("DEPRICATED FORM OF file. The Filename of this StoryEntity (relative from the data-dir)");
72
73  LoadParam(root, "file", this, StoryEntity, setLoadFile)
74  .describe("The Filename of this StoryEntity (relative from the data-dir)");
75
76  LoadParam(root, "nextid", this, StoryEntity, setNextStoryID)
77  .describe("Sets the ID of the next StoryEntity");
78
79  LoadParam(root, "menu-entry", this, StoryEntity, addToGameMenu)
80      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
81
82
83
84  // so we can also do these things in the Campaign. (will be overwritten from the entities file)
85  LoadParam(root, "description", this, StoryEntity, setDescription)
86      .describe("Sets the description of this StoryEntity");
87
88  LoadParam(root, "menu-item-image", this, StoryEntity, setMenuItemImage)
89      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
90
91  LoadParam(root, "screenshoot", this, StoryEntity, setMenuScreenshoot)
92      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
93
94  PRINTF(4)("Loaded StoryEntity specific stuff\n");
95}
96
97
98/**
99 *  sets the track path of this world
100 * @param name the name of the path
101 */
102void StoryEntity::setLoadFile(const std::string& fileName)
103{
104  printf("===Testing %s:: %s\n", this->getCName(), fileName.c_str());
105  if (File(fileName).isFile())
106  {
107    this->loadFile =  fileName;
108  }
109  else
110    this->loadFile = ResourceManager::getFullName(fileName);
111
112  this->grabWorldInfo();
113}
114
115
116/**
117 * sets the descroption of this StoryEntity
118 * @param name name
119 */
120void StoryEntity::setDescription(const std::string& description)
121{
122  this->description = description;
123}
124
125/**
126 * sets the id of the next story entity: StoryEntities can choose their following entity themselfs.
127 * the entity id defined here  will be startet after this entity ends. this can be convenient if you
128 * want to have a non linear story with switches.
129 * @param nextStoryID the story id of the next StoryEntity
130 */
131void StoryEntity::setNextStoryID(int nextStoryID)
132{
133  this->nextStoryID = nextStoryID;
134}
135
136/**
137 * @brief grabs settings needed for displaying a MenuScreen.
138 */
139void StoryEntity::grabWorldInfo()
140{
141  PRINTF(3)("Grabbing the Worlds Settings\n", this->getLoadFile().c_str());
142  if( getLoadFile().empty())
143        return;
144  TiXmlDocument XMLDoc(this->getLoadFile());
145  // load the xml world file for further loading
146  if( !XMLDoc.LoadFile())
147  {
148    PRINTF(1)("loading XML File: %s @ %s:l%d:c%d\n", XMLDoc.ErrorDesc(), this->getLoadFile().c_str(), XMLDoc.ErrorRow(), XMLDoc.ErrorCol());
149    return;
150  }
151  TiXmlElement* root = XMLDoc.RootElement();
152  if (root == NULL)
153    return;
154
155  if (root->Value() != NULL && !strcmp(root->Value(), "WorldDataFile"))
156  {
157    BaseObject::loadParams(root);
158
159    LoadParam(root, "description", this, StoryEntity, setDescription)
160    .describe("Sets the description of this StoryEntity");
161
162    LoadParam(root, "menu-item-image", this, StoryEntity, setMenuItemImage)
163    .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
164
165    LoadParam(root, "screenshoot", this, StoryEntity, setMenuScreenshoot)
166    .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
167  }
168}
169
170/**
171 * sets the menu item image of this StoryEntity
172 * @param name name
173 */
174void StoryEntity::setMenuItemImage(const std::string& image)
175{
176  this->menuItemImage = image;
177}
178
179
180/** sets the menu screenshoot of this StoryEntity
181 * @param name name
182 */
183void StoryEntity::setMenuScreenshoot(const std::string& image)
184{
185  this->menuScreenshoot = image;
186}
187
188
Note: See TracBrowser for help on using the repository browser.