- Timestamp:
- Jul 11, 2005, 5:43:37 PM (19 years ago)
- Location:
- orxonox/trunk/src
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
orxonox/trunk/src/lib/graphics/graphics_engine.cc
r4817 r4830 67 67 } 68 68 69 /** 70 * initializes the GraphicsEngine with default settings. 71 */ 69 72 int GraphicsEngine::init() 70 73 { 71 this->initVideo(640,480,16); 72 } 74 if (this->isInit) 75 return -1; 76 this->initVideo(640, 480, 16); 77 this->isInit = true; 78 } 79 80 /** 81 * loads the GraphicsEngine's settings from a given ini-file and section 82 * @param iniParser the iniParser to load from 83 * @param section the Section in the ini-file to load from 84 * @returns nothing usefull 85 */ 86 int GraphicsEngine::initFromIniFile(IniParser* iniParser) 87 { 88 89 // looking if we are in fullscreen-mode 90 const char* fullscreen = iniParser->getVar(CONFIG_NAME_FULLSCREEN, CONFIG_SECTION_VIDEO, "0"); 91 if (strchr(fullscreen, '1')) 92 this->fullscreenFlag = SDL_FULLSCREEN; 93 94 95 96 // looking if we are in fullscreen-mode 97 const char* textures = iniParser->getVar(CONFIG_NAME_TEXTURES, CONFIG_SECTION_VIDEO_ADVANCED, "0"); 98 if (strchr(textures, '1')) 99 this->texturesEnabled = true; 100 else 101 this->texturesEnabled = false; 102 103 // searching for a usefull resolution 104 SubString resolution(iniParser->getVar(CONFIG_NAME_RESOLUTION, CONFIG_SECTION_VIDEO, "640x480"), 'x'); 105 this->initVideo(atoi(resolution.getString(0)), atoi(resolution.getString(1)), 16); 106 } 107 108 73 109 74 110 /** … … 123 159 124 160 /** 125 * loads the GraphicsEngine's settings from a given ini-file and section126 * @param iniParser the iniParser to load from127 * @param section the Section in the ini-file to load from128 * @returns nothing usefull129 */130 int GraphicsEngine::initFromIniFile(IniParser* iniParser)131 {132 // searching for a usefull resolution133 SubString resolution(iniParser->getVar(CONFIG_NAME_RESOLUTION, CONFIG_SECTION_VIDEO, "640x480"), 'x');134 this->initVideo(atoi(resolution.getString(0)), atoi(resolution.getString(1)), 16);135 136 // looking if we are in fullscreen-mode137 const char* fullscreen = iniParser->getVar(CONFIG_NAME_FULLSCREEN, CONFIG_SECTION_VIDEO, "0");138 if (strchr(fullscreen, '1'))139 this->setFullscreen(true);140 141 // looking if we are in fullscreen-mode142 const char* textures = iniParser->getVar(CONFIG_NAME_TEXTURES, CONFIG_SECTION_VIDEO_ADVANCED, "0");143 if (strchr(textures, '1'))144 this->texturesEnabled = true;145 else146 this->texturesEnabled = false;147 148 }149 150 151 152 /**153 161 * sets the Window Captions and the Name of the icon. 154 162 * @param windowName The name of the Window -
orxonox/trunk/src/lib/graphics/importer/model.h
r4806 r4830 26 26 * \todo implement this stuff 27 27 */ 28 typedef enum MODEL_TYPE {MODEL_DISPLAY_LIST, 29 MODEL_VERTEX_ARRAY}; 28 typedef enum MODEL_TYPE { 29 MODEL_DISPLAY_LIST, 30 MODEL_VERTEX_ARRAY 31 }; 30 32 31 33 … … 36 38 37 39 //! an enumerator for VERTEX_FORMAT 38 typedef enum VERTEX_FORMAT { VERTEX_ONLY = VERTEX, 39 VERTEX_NORMAL = NORMAL, 40 VERTEX_TEXCOORD = TEXCOORD, 41 VERTEX_TEXCOORD_NORMAL = NORMAL | TEXCOORD }; 40 typedef enum VERTEX_FORMAT { 41 VERTEX_ONLY = VERTEX, 42 VERTEX_NORMAL = NORMAL, 43 VERTEX_TEXCOORD = TEXCOORD, 44 VERTEX_TEXCOORD_NORMAL = NORMAL | TEXCOORD 45 }; 42 46 43 47 //////////////////// -
orxonox/trunk/src/lib/graphics/text_engine.cc
r4746 r4830 254 254 glTranslatef(pos.x, pos.y, 0); 255 255 256 c har* tmpText = this->text;256 const char* tmpText = this->text; 257 257 while (*tmpText != '\0') 258 258 { … … 921 921 // drawing all the texts 922 922 tIterator<Text>* textIterator = textList->getIterator(); 923 Text* text = textIterator->nextElement();924 while( text != NULL)925 { 926 text->draw();927 text = textIterator->nextElement();923 Text* drawText = textIterator->nextElement(); 924 while( drawText != NULL) 925 { 926 drawText->draw(); 927 drawText = textIterator->nextElement(); 928 928 } 929 929 delete textIterator; -
orxonox/trunk/src/lib/gui/gui_exec.cc
r4746 r4830 1 /* 1 /* 2 2 orxonox - the future of 3D-vertical-scrollers 3 3 … … 16 16 You should have received a copy of the GNU General Public License 17 17 along with this program; if not, write to the Free Software Foundation, 18 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 19 20 20 … … 38 38 HashTable* orxonoxFlagHash; 39 39 40 /** 40 /** 41 41 \brief Creates the Exec-Frame 42 42 */ … … 59 59 CheckButton* alwaysShow; //!< A CheckButton, for if orxonox should start with or without gui. 60 60 Button* quit; //!< A Button to quit the Gui without starting orxonox. 61 61 62 62 start = new Button("Start"); 63 63 #ifdef HAVE_GTK2 … … 73 73 verboseMode = new Menu(CONFIG_NAME_VERBOSE_MODE, "nothing", 74 74 #if DEBUG >=1 75 75 "error", 76 76 #endif 77 77 #if DEBUG >=2 78 78 "warning", 79 79 #endif 80 80 #if DEBUG >=3 81 81 "info", 82 82 #endif 83 83 #if DEBUG >=4 84 84 "debug", 85 85 #endif 86 86 #if DEBUG >=5 87 88 #endif 89 87 "heavydebug", 88 #endif 89 "lastItem"); 90 90 verboseMode->setFlagName("verbose", "v", 2); 91 91 verboseMode->setDescription("Sets the Output Mode", "This Enables Outbug messages\n" 92 92 "0: nothing will be displayed, but stuff one cannot do without (eg.GUI)\n" 93 93 #if DEBUG >=1 94 94 "1: error: outputs all the above and errors" 95 95 #endif 96 96 #if DEBUG >=2 97 97 "2: warning: outputs all the above plus warnings" 98 98 #endif 99 99 #if DEBUG >=3 100 100 "3: info: outputs all the above plus Information" 101 101 #endif 102 102 #if DEBUG >=4 103 103 "4: debug: displays all the above plus debug information" 104 104 #endif 105 105 #if DEBUG >=5 106 107 #endif 108 106 "5: heavydebug: displays all the above plus heavy debug information: WARNING: the game will run very slow with this." 107 #endif 108 ); 109 109 verboseMode->saveability(); 110 110 execBox->fill(verboseMode); … … 152 152 153 153 PRINTF(5)("Config Directory is: %s.\n", this->confDir); 154 //! \todo F** Windows-support154 //! @todo F** Windows-support 155 155 #ifndef __WIN32__ 156 156 mkdir(this->confDir, 0755); … … 192 192 } 193 193 194 /** 194 /** 195 195 \brief Saves the configuration-file to the Disk.\n 196 196 \param widget from which Widget on should be saved. … … 215 215 int counter = 0; 216 216 while(counter < depth &&((widget->optionType > GUI_NOTHING 217 218 219 217 &&(static_cast<Option*>(widget)->isSaveable())) 218 ||(widget->optionType < GUI_NOTHING 219 && static_cast<Packer*>(widget)->getGroupName()))) 220 220 { 221 221 fprintf(this->CONFIG_FILE, " ", depth); 222 222 counter++; 223 223 } 224 224 225 225 // check if it is a Packer, and if it is, check if it has a name and if there is something in it. 226 226 if(widget->optionType < GUI_NOTHING) 227 227 { 228 228 if(static_cast<Packer*>(widget)->getGroupName()) 229 230 231 232 233 229 { 230 fprintf(CONFIG_FILE, "[%s]\n", static_cast<Packer*>(widget)->getGroupName()); 231 this->writeFileText(static_cast<Packer*>(widget)->down, depth+1); 232 fprintf(CONFIG_FILE, "\n"); 233 } 234 234 else 235 236 237 238 } 235 { 236 this->writeFileText(static_cast<Packer*>(widget)->down, depth); 237 } 238 } 239 239 240 240 if(widget->optionType > GUI_NOTHING) 241 241 if (static_cast<Option*>(widget)->isSaveable()) 242 242 { 243 244 245 246 247 248 249 250 251 252 243 char Buffer[256]; 244 char* space2under; 245 strcpy(Buffer, static_cast<Option*>(widget)->title); 246 if(strchr(Buffer, '_')) 247 PRINTF(2)("Optionname %s is not Valid for Saving, because it includes an underscore\n", Buffer); 248 while(space2under = strchr(Buffer, ' ')) 249 { 250 space2under[0] = '_'; 251 } 252 fprintf(CONFIG_FILE, "%s = %s\n", Buffer, static_cast<Option*>(widget)->save()); 253 253 } 254 254 … … 272 272 char* Value; 273 273 while(fscanf(this->CONFIG_FILE, "%s", Buffer) != EOF) 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 274 { 275 // group-search // 276 if(!strncmp(Buffer, "[", 1)) 277 { 278 if((groupWidget = locateGroup(widget, Buffer, 1))==NULL) 279 { 280 PRINTF(2)("!!There is no group called %s in this GUI.\n First best Widget will get the Infos assigned.\n Config-File will be updated in next Save\n", Buffer); 281 groupWidget = widget; 282 } 283 else 284 PRINT(5)("Group %s located.\n", static_cast<Packer*>(groupWidget)->groupName); 285 } 286 // option-setting // 287 if(!strcmp(Buffer, "=")) 288 { 289 char* under2space; 290 while(under2space = strchr(Variable, '_')) 291 { 292 sprintf(under2space, " %s", under2space+1); 293 } 294 295 fscanf(this->CONFIG_FILE, "%s", Buffer); 296 varInfo.variableName = Variable; 297 varInfo.variableValue = Buffer; 298 groupWidget->walkThrough(this->readFileText, &varInfo, 0); 299 sprintf(Variable, ""); 300 } 301 sprintf(Variable, "%s", Buffer); 302 } 303 303 widget->walkThrough(widget->setOptions, 0); 304 304 } 305 fclose(this->CONFIG_FILE); 305 306 } 306 307 … … 317 318 PRINT(5)("Located Option %s.\n", widget->title); 318 319 if(widget->optionType > GUI_NOTHING) 319 320 static_cast<Option*>(widget)->load(info->variableValue); 320 321 } 321 322 } … … 344 345 { 345 346 if(static_cast<Packer*>(widget)->getGroupName() && 346 347 348 349 347 !strcmp(groupName, static_cast<Packer*>(widget)->getGroupName())) 348 { 349 return widget; 350 } 350 351 else 351 352 353 354 355 } 356 352 { 353 if((tmp = locateGroup(static_cast<Packer*>(widget)->down, groupName, depth+1)) != NULL) 354 return tmp; 355 } 356 } 357 357 358 if(widget->next != NULL && depth != 0) 358 359 { 359 360 if((tmp = locateGroup(widget->next, groupName, depth)) != NULL) 360 361 return tmp; 361 362 } 362 363 return NULL; -
orxonox/trunk/src/lib/sound/sound_engine.cc
r4746 r4830 378 378 void SoundEngine::flushAllBuffers() 379 379 { 380 380 tIterator<SoundBuffer>* bufferIterator = this->bufferList->getIterator(); 381 381 SoundBuffer* enumBuffer = bufferIterator->nextElement(); 382 382 while (enumBuffer) … … 389 389 390 390 /** 391 * @brief SourceEngine::flushAllBuffers 392 */ 393 void SoundEngine::flushAllSources() 394 { 395 tIterator<SoundSource>* Iterator = this->sourceList->getIterator(); 396 SoundSource* enumSource = Iterator->nextElement(); 397 while (enumSource) 398 { 399 delete enumSource; 400 enumSource = Iterator->nextElement(); 401 } 402 delete Iterator; 403 } 404 405 406 /** 391 407 \brief initializes Audio in general 392 408 */ -
orxonox/trunk/src/lib/sound/sound_engine.h
r4761 r4830 91 91 void flushUnusedBuffers(); 92 92 void flushAllBuffers(); 93 void flushAllSources(); 93 94 bool initAudio(); 94 95 -
orxonox/trunk/src/lib/util/substring.cc
r4734 r4830 29 29 SubString::SubString( const char* string, char splitter) 30 30 { 31 n= 0;31 this->splittersCount = 0; 32 32 33 33 assert( string != NULL); 34 34 35 for( int i = 0; i < strlen(string); i++) if( string[i] == splitter) n++; 35 for( int i = 0; i < strlen(string); i++) if( string[i] == splitter) 36 splittersCount++; 36 37 37 n+= 1;38 this->splittersCount += 1; 38 39 39 strings = new char*[n]; 40 40 this->strings = new char*[this->splittersCount]; 41 41 assert (strings != NULL); 42 42 … … 48 48 while( end != NULL) 49 49 { 50 assert( i < n);50 assert( i < this->splittersCount); 51 51 l = end - offset; 52 strings[i] = new char[l + 1];52 this->strings[i] = new char[l + 1]; 53 53 assert( strings[i] != NULL); 54 54 strncpy( strings[i], offset, l); … … 71 71 SubString::~SubString() 72 72 { 73 for( int i = 0; i < n; i++)73 for( int i = 0; i < this->splittersCount; i++) 74 74 { 75 delete strings[i];75 delete this->strings[i]; 76 76 } 77 77 78 delete strings; 79 } 80 81 /** 82 \brief get the amount of substrings 83 \returns the amount of substrings 84 */ 85 int SubString::getCount() 86 { 87 return n; 78 delete this->strings; 88 79 } 89 80 … … 95 86 const char* SubString::getString( int i) 96 87 { 97 if( i < n && i >= 0) return strings[i]; 98 else return NULL; 88 if( i < this->splittersCount && i >= 0) 89 return this->strings[i]; 90 else 91 return NULL; 99 92 } -
orxonox/trunk/src/lib/util/substring.h
r4734 r4830 14 14 ~SubString(); 15 15 16 in t getCount();16 inline int getCount() { return this->splittersCount; }; 17 17 const char* getString( int i); 18 18 19 19 private: 20 char** strings; //!< strings produced from a single string splitted in multiple strings21 int n; //!< how many splitted parts20 char** strings; //!< strings produced from a single string splitted in multiple strings 21 int splittersCount; //!< how many splitted parts 22 22 }; 23 23 -
orxonox/trunk/src/orxonox.cc
r4827 r4830 71 71 this->argv = NULL; 72 72 73 this->configFileName = NULL; 74 73 75 } 74 76 … … 79 81 { 80 82 delete this->iniParser; 83 delete this->configFileName; 81 84 82 85 delete GraphicsEngine::getInstance(); // deleting the Graphics … … 116 119 * it's path and name into configfilename 117 120 */ 118 const char* Orxonox::getConfigFile (int argc, char** argv) 119 { 121 const char* Orxonox::getConfigFile () 122 { 123 this->configFileName = new char[strlen(DEFAULT_CONFIG_FILE)]; 120 124 strcpy (this->configFileName, DEFAULT_CONFIG_FILE); 121 125 this->iniParser = new IniParser(this->configFileName); … … 133 137 134 138 // initialize the Config-file 135 this->getConfigFile( argc, argv);139 this->getConfigFile(); 136 140 137 141 … … 351 355 int startOrxonox(int argc, char** argv) 352 356 { 353 // checking for existence of the configuration-files 357 // checking for existence of the configuration-files, or if the lock file is still used 354 358 if (showGui || 355 359 !ResourceManager::isFile(DEFAULT_CONFIG_FILE) || -
orxonox/trunk/src/orxonox.h
r4822 r4830 41 41 int initResources (); 42 42 43 const char* getConfigFile ( int argc, char** argv);43 const char* getConfigFile (); 44 44 45 45 private: … … 47 47 48 48 IniParser* iniParser; //!< Reference to the ini-parser used in orxonox 49 char configFileName[256];//!< Filename of the configuration-file.49 char* configFileName; //!< Filename of the configuration-file. 50 50 GameLoader* gameLoader; //!< The gameLoader 51 51 -
orxonox/trunk/src/story_entities/world.cc
r4829 r4830 186 186 187 187 delete WorldInterface::getInstance(); 188 delete this->nullParent;188 delete NullParent::getInstance(); 189 189 delete this->entities; 190 State::setWorldEntityList(NULL); 191 192 190 193 delete LightManager::getInstance(); 191 194 delete TrackManager::getInstance(); … … 194 197 TextEngine::getInstance()->flush(); 195 198 SoundEngine::getInstance()->flushAllBuffers(); 199 SoundEngine::getInstance()->flushAllSources(); 196 200 197 201 delete AnimationPlayer::getInstance(); // this should be at the end of the unloading sequence. … … 203 207 204 208 ResourceManager::getInstance()->unloadAllByPriority(RP_LEVEL); 209 210 211 212 crosshair=NULL; 205 213 } 206 214 … … 238 246 LoadParam<World>(root, "path", this, &World::setPath) 239 247 .describe("The Filename of this World (relative from the data-dir)"); 240 241 if (!crosshair)242 crosshair = new Crosshair();243 248 } 244 249 … … 273 278 274 279 GraphicsEngine::getInstance()->displayFPS(true); 280 281 if (!crosshair) 282 crosshair = new Crosshair(); 275 283 } 276 284 … … 849 857 glCallList (objectList); 850 858 851 ParticleEngine::getInstance()->draw(); //!< \todo should be dts like in the Trunk; 859 ParticleEngine::getInstance()->draw(); 860 861 crosshair->draw(); 852 862 853 863 TextEngine::getInstance()->draw(); 854 864 LightManager::getInstance()->draw(); // must be at the end of the drawing procedure, otherwise Light cannot be handled as PNodes // 855 crosshair->draw();856 865 } 857 866 -
orxonox/trunk/src/world_entities/weapons/crosshair.cc
r4826 r4830 23 23 #include "p_node.h" 24 24 #include "state.h" 25 #include "model.h" 25 26 26 27 #include <iostream> … … 37 38 this->setName("Crosshair"); 38 39 40 this->material = NULL; 41 this->model = NULL; 42 this->rotation = 0; 43 44 this->material = new Material("Crosshair Material"); 45 this->material->setDiffuseMap("maps/aim.png"); 46 47 float size = 50; 48 this->model = new Model(); 49 this->model->addVertex (-0.5*size, -0.5*size, 0); 50 this->model->addVertex (0.5*size, -0.5*size, 0); 51 this->model->addVertex (0.5*size, 0.5*size, 0); 52 this->model->addVertex (-0.5*size, 0.5*size, 0); 53 54 this->model->addVertexTexture(0,0); 55 this->model->addVertexTexture(1,0); 56 this->model->addVertexTexture(1,1); 57 this->model->addVertexTexture(0,1); 58 59 this->model->setMaterial(this->material); 60 this->model->addFace(4, VERTEX_TEXCOORD, 0,0, 1,1 ,2,2, 3,3); 61 this->model->finalize(); 62 39 63 EventHandler::getInstance()->subscribe(this, ES_GAME, EV_MOUSE_MOTION); 40 64 … … 47 71 Crosshair::~Crosshair () 48 72 { 73 // delete this->model; 74 49 75 // delete what has to be deleted here 50 76 EventHandler::getInstance()->unsubscribe(this); … … 81 107 82 108 83 void Crosshair::draw() const109 void Crosshair::draw() 84 110 { 85 111 /* … … 118 144 GraphicsEngine::storeMatrices(); 119 145 120 float z; 121 glReadPixels ((int)position2D[0], GraphicsEngine::getInstance()->getResolutionY()-(int)position2D[1]-1, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z); 122 123 124 printf("%f %f %f\n", (int)position2D[0], (int)position2D[1], z); 146 /// float z; 147 // glReadPixels ((int)position2D[0], GraphicsEngine::getInstance()->getResolutionY()-(int)position2D[1]-1, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z); 148 125 149 126 150 //cout << z <<" "<< scale << " " << bias<< endl; 151 127 152 128 153 GLdouble objX, objY, objZ; 129 154 gluUnProject(position2D[0], 130 155 GraphicsEngine::getInstance()->getResolutionY()-position2D[1]-1, 131 . 5,156 .99, 132 157 GraphicsEngine::modMat, 133 158 GraphicsEngine::projMat, … … 137 162 &objZ ); 138 163 139 glBegin(GL_TRIANGLES); 140 glColor3f(1,0,0); 141 glVertex3f(objX, objY, objZ); 142 glVertex3f(objX, objY+1, objZ); 143 glVertex3f(objX, objY, objZ+1); 164 this->setAbsCoor(objX, objY, objZ); 165 166 // glBegin(GL_TRIANGLES); 167 // glColor3f(1,0,0); 168 // glVertex3f(objX, objY, objZ); 169 // glVertex3f(objX, objY+1, objZ); 170 // glVertex3f(objX, objY, objZ+1); 171 // glEnd(); 172 173 174 GraphicsEngine::enter2DMode(); 175 GLdouble pos[3]; 176 gluProject(this->getAbsCoor().x, 177 this->getAbsCoor().y, 178 this->getAbsCoor().z, 179 GraphicsEngine::modMat, 180 GraphicsEngine::projMat, 181 GraphicsEngine::viewPort, 182 pos, pos+1, pos+2 ); 183 184 printf("%d %d %d\n", (int)pos[0], (int)pos[1], (int)pos[2]); 185 this->rotation += 5; 186 187 glTranslatef(position2D[0], position2D[1], 0); 188 glRotatef(this->rotation, 0,0,1); 189 this->model->draw(); 190 /* 191 glBegin(GL_QUADS); 192 { 193 glColor4f(1,0,0,1); 194 glVertex2f(position2D[0]-10, position2D[1]-10); 195 glVertex2f(position2D[0]+10, position2D[1]-10); 196 glVertex2f(position2D[0]+10, position2D[1]+10); 197 glVertex2f(position2D[0]-10, position2D[1]+10); 198 199 // glVertex2f(pos[0]-10, pos[1]-10); 200 // glVertex2f(pos[0]-10, pos[1]+10); 201 // glVertex2f(pos[0]+10, pos[1]+10); 202 // glVertex2f(pos[0]+10, pos[1]-10); 203 } 144 204 glEnd(); 145 } 205 */ 206 GraphicsEngine::leave2DMode(); 207 } -
orxonox/trunk/src/world_entities/weapons/crosshair.h
r4781 r4830 9 9 10 10 #include "event_listener.h" 11 11 #include "p_node.h" 12 12 #include "vector.h" 13 13 14 14 // FORWARD DEFINITION 15 15 class Model; 16 class Material; 16 17 17 18 //! A class that enables the 18 class Crosshair : public EventListener {19 class Crosshair : public PNode, public EventListener { 19 20 20 21 public: … … 25 26 virtual void process(const Event &event); 26 27 27 /** @returns the current 3D-position of the Crosshair */28 const Vector& getPosition() { return this->position; };29 30 28 void tick(float dt); 31 void draw() const;29 void draw(); 32 30 33 31 private: 34 Vector position; //!< The current position of the Crosshair35 32 float position2D[2]; //!< The 2D-position on the screen 36 33 34 Model* model; //!< A model for the crosshair representing the Aim 35 Material* material; //!< a material for the Aim. 36 float rotation; //!< a rotation of the aim. 37 float size; //!< The Size of the Crosshair (in % of screen resolution 1 is fullscreen) 37 38 }; 38 39 -
orxonox/trunk/src/world_entities/weapons/weapon.cc
r4828 r4830 33 33 this->setRelCoor(coordinate); 34 34 this->setRelDir(direction); 35 this->worldEntities = State::getWorldEntityList();36 35 } 37 36 … … 156 155 can destroy the weapons of enemies or vice versa. 157 156 */ 158 void Weapon::hit (WorldEntity* entity, Vector*position)157 void Weapon::hit (WorldEntity* entity, const Vector& position) 159 158 {} 160 159 -
orxonox/trunk/src/world_entities/weapons/weapon.h
r4827 r4830 32 32 class TiXmlElement; 33 33 34 //! An enumerator defining actions a Weapon can take 35 typedef enum { 36 WA_NONE = 0, //!< No Action taken 37 WA_SHOOT = 1, //!< emitting Shot 38 WA_CHARGE = 2, //!< charge action (one click before the shot) 39 WA_RELOAD = 3, //!< reload right after shoot is finished 40 WA_ACTIVATE = 4, //!< activate the GUN 41 WA_DEACTIVATE = 5, //!< deactivate the GUN 42 WA_SPECIAL1 = 6, //!< Special Action taken 34 43 35 // typedef enum { 36 // W_SHOOT, 37 // W_EMPTY, 38 // W_RELOAD, 39 // W_SPECIAL1, 40 // W_SPECIAL2, 41 // W_SPECIAL3 42 // } WeaponSoundType; 43 44 WA_ACTION_COUNT = 6 //!< This must match the count of enumerations (without W_NONE) 45 } WeaponActions; 44 46 45 47 //! An enumerator defining the States of a Weapon 46 48 typedef enum { 47 W _NONE = 0, //!< No State at all (if set, there is something wrong, or the weapon is not yet availiable)48 W _SHOOT= 1, //!< The State of the Shooting49 W _RELOAD = 2, //!< The State of the Reloading50 W _ACTIVATING = 3, //!< The State in which the weapon gets activated51 W _DEACTIVATING = 4, //!< The State in which the weapon gets deactivated52 W _INACTIVE = 5, //!< The State where the weapon is inactive (unable to shoot)53 W _IDLE = 6, //!< The State where the weapon is idle49 WS_NONE = 0, //!< No State at all (if set, there is something wrong, or the weapon is not yet availiable) 50 WS_SHOOTING = 1, //!< The State of the Shooting 51 WS_RELOADING = 3, //!< The State of the Reloading 52 WS_ACTIVATING = 4, //!< The State in which the weapon gets activated 53 WS_DEACTIVATING = 5, //!< The State in which the weapon gets deactivated 54 WS_INACTIVE = 6, //!< The State where the weapon is inactive (unable to shoot) 55 WS_IDLE = 7, //!< The State where the weapon is idle 54 56 55 W _STATES_COUNT = 6//!< This must match the count of the enumerations (without W_NONE)57 WS_STATE_COUNT = 7 //!< This must match the count of the enumerations (without W_NONE) 56 58 } WeaponState; 57 59 58 60 59 61 //! a weapon can be left or right sided 62 /** 63 * @todo this will be reset with mirror X/Y/Z 64 */ 60 65 #define W_LEFT 0 61 66 #define W_RIGHT 1 … … 99 104 /** @brief fires the weapon */ 100 105 virtual void fire() = 0; 101 virtual void hit (WorldEntity* weapon, Vector*loc);106 virtual void hit (WorldEntity* weapon, const Vector& loc); 102 107 virtual void destroy(); 103 108 … … 107 112 108 113 protected: 109 tList<WorldEntity>* worldEntities;110 114 111 float localTime; //<! this is the local time. important for shooting attributes like frequency 112 float idleTime; //<! the time a weapon needs before it can shoot again. eg. shooting frequency or actication/deactivateion delay 113 float slowDownFactor; //<! if the shooting frequency is a linear function of time... 115 float localTime; //<! this is the local time. important for shooting attributes like frequency 116 float idleTime; //<! the time a weapon needs before it can shoot again. eg. shooting frequency or actication/deactivateion delay 117 float slowDownFactor; //<! if the shooting frequency is a linear function of time... 118 119 //////////// 120 // PHASES // 121 //////////// 122 float times[WS_STATE_COUNT]; //!< Times to stay in the different States @see WeaponState 123 SoundBuffer* soundBuffers[WA_ACTION_COUNT]; //!< SoundBuffers for all actions @see WeaponAction 124 125 114 126 115 127 SoundBuffer* fireSound; … … 118 130 119 131 private: 120 bool enabled; //<! states if the weapon is enabled or not121 Projectile* projectile; //<! the projectile used for this weapon132 bool enabled; //<! states if the weapon is enabled or not 133 Projectile* projectile; //<! the projectile used for this weapon 122 134 //WeaponSound sound; 123 135 };
Note: See TracChangeset
for help on using the changeset viewer.