Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/cr/src/story_entities/story_entity.cc @ 7964

Last change on this file since 7964 was 7677, checked in by bensch, 19 years ago

orxonox/trunk: POD's

File size: 4.8 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/file.h"
25#include "util/loading/load_param.h"
26#include "util/loading/resource_manager.h"
27
28
29using namespace std;
30
31
32/**
33 *  default constructor initializes all needed data
34 */
35StoryEntity::StoryEntity ()
36{
37  this->setClassID(CL_STORY_ENTITY, "StoryEntity");
38
39  this->bInit = false;
40  this->bPaused = false;
41  this->bRunning = false;
42
43  this->loadFile = "";
44  this->storyID = -1;
45  this->description = "";
46  this->menuItemImage = "";
47  this->menuScreenshoot = "";
48  this->nextStoryID = WORLD_ID_GAMEEND;
49  this->bMenuEntry = false;
50}
51
52
53/**
54 *  deconstructor
55 */
56StoryEntity::~StoryEntity ()
57{}
58
59
60/**
61 *  loads the Parameters of a Campaign
62 * @param root: The XML-element to load from
63 */
64void StoryEntity::loadParams(const TiXmlElement* root)
65{
66  BaseObject::loadParams(root);
67
68  LoadParam(root, "identifier", this, StoryEntity, setStoryID)
69  .describe("A Unique Identifier for this StoryEntity");
70
71  LoadParam(root, "path", this, StoryEntity, setLoadFile)
72  .describe("DEPRICATED FORM OF file. The Filename of this StoryEntity (relative from the data-dir)");
73
74  LoadParam(root, "file", this, StoryEntity, setLoadFile)
75  .describe("The Filename of this StoryEntity (relative from the data-dir)");
76
77  LoadParam(root, "nextid", this, StoryEntity, setNextStoryID)
78  .describe("Sets the ID of the next StoryEntity");
79
80  LoadParam(root, "menu-entry", this, StoryEntity, addToGameMenu)
81      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
82
83
84
85  // so we can also do these things in the Campaign. (will be overwritten from the entities file)
86  LoadParam(root, "description", this, StoryEntity, setDescription)
87      .describe("Sets the description of this StoryEntity");
88
89  LoadParam(root, "menu-item-image", this, StoryEntity, setMenuItemImage)
90      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
91
92  LoadParam(root, "screenshoot", this, StoryEntity, setMenuScreenshoot)
93      .describe("If this entry is 1, the world is contained in the SimpleGameMenu");
94
95  PRINTF(4)("Loaded StoryEntity specific stuff\n");
96}
97
98
99/**
100 *  sets the track path of this world
101 * @param name the name of the path
102 */
103void StoryEntity::setLoadFile(const std::string& fileName)
104{
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.