Changeset 4878 in orxonox.OLD for orxonox/branches/weaponSystem
- Timestamp:
 - Jul 17, 2005, 12:37:18 AM (20 years ago)
 - Location:
 - orxonox/branches/weaponSystem/src
 - Files:
 - 
          
- 8 edited
 
- 
          lib/sound/sound_engine.h (modified) (1 diff)
 - 
          util/loading/factory.h (modified) (4 diffs)
 - 
          world_entities/player.cc (modified) (3 diffs)
 - 
          world_entities/weapons/test_gun.cc (modified) (4 diffs)
 - 
          world_entities/weapons/weapon.cc (modified) (8 diffs)
 - 
          world_entities/weapons/weapon.h (modified) (4 diffs)
 - 
          world_entities/world_entity.cc (modified) (9 diffs)
 - 
          world_entities/world_entity.h (modified) (5 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
        
orxonox/branches/weaponSystem/src/lib/sound/sound_engine.h
r4836 r4878 37 37 38 38 //! A class that represents a SoundSource 39 /** 40 * @todo ability to play back different SoundBuffers on the same SounSource 41 */ 39 42 class SoundSource : public BaseObject 40 43 {  - 
        
orxonox/branches/weaponSystem/src/util/loading/factory.h
r4836 r4878 15 15 16 16 /*! 17 \file factory.h18 \brief A loadable object handler17 * @file factory.h 18 * @brief A loadable object handler 19 19 */ 20 20 … … 31 31 32 32 /** 33 Creates a factory to a Loadable Class. 34 this should be used at the beginning of all the Classes that should be loadable (in the cc-file) 35 @todo make factoryName a BaseObject-parameter. (else it would be redundant) 33 * Creates a factory to a Loadable Class. 34 * this should be used at the beginning of all the Classes that should be loadable (in the cc-file) 36 35 */ 37 #define CREATE_FACTORY(CLASS_NAME) tFactory<CLASS_NAME>* global_##CLASS_NAME##_Factory = new tFactory<CLASS_NAME>(#CLASS_NAME) 36 #define CREATE_FACTORY(CLASS_NAME) \ 37 tFactory<CLASS_NAME>* global_##CLASS_NAME##_Factory = new tFactory<CLASS_NAME>(#CLASS_NAME) 38 38 39 39 //! The Factory is a loadable object handler … … 48 48 49 49 static void registerFactory( Factory* factory); 50 /** \briefsets the Next factory in the list @param nextFactory the next factory */50 /** sets the Next factory in the list @param nextFactory the next factory */ 51 51 inline void setNext( Factory* nextFactory) { this->next = nextFactory; }; 52 52 /** @returns the first factory */ … … 54 54 /** @returns the next factory */ 55 55 Factory* getNext() const { return this->next; }; 56 57 58 private:59 56 60 57 private:  - 
        
orxonox/branches/weaponSystem/src/world_entities/player.cc
r4877 r4878 241 241 if( this->bRight && TrackManager::getInstance()->getWidth() > this->getRelCoor().z*2) 242 242 accel = accel + (orthDirection*acceleration); 243 if( this->bAscend ) 243 if( this->bAscend ) { /* FIXME */ } 244 244 if( this->bDescend) {/* FIXME */} /* @todo up and down player movement */ 245 245 … … 250 250 251 251 /** 252 * weapon manipulation by the player252 * weapon manipulation by the player 253 253 */ 254 254 void Player::weaponAction() … … 271 271 { 272 272 if( event.type == KeyMapper::PEV_UP) 273 {274 273 this->bUp = event.bPressed; 275 }276 274 else if( event.type == KeyMapper::PEV_DOWN) 277 {278 275 this->bDown = event.bPressed; 279 }280 276 else if( event.type == KeyMapper::PEV_RIGHT) 281 {282 277 this->bRight= event.bPressed; 283 }284 278 else if( event.type == KeyMapper::PEV_LEFT) 285 {286 279 this->bLeft = event.bPressed; 287 }288 280 else if( event.type == KeyMapper::PEV_FIRE1) 289 { 290 this->bFire = event.bPressed; 291 } 281 this->bFire = event.bPressed; 292 282 else if( event.type == KeyMapper::PEV_NEXT_WEAPON) 293 {294 283 if( !event.bPressed) this->bWeaponChange = !this->bWeaponChange; 295 } 296 297 } 284 285 }  - 
        
orxonox/branches/weaponSystem/src/world_entities/weapons/test_gun.cc
r4836 r4878 50 50 51 51 this->model = (Model*)ResourceManager::getInstance()->load("models/test_gun.obj", OBJ, RP_CAMPAIGN); 52 this->idleTime = 0.2f;53 52 this->leftRight = leftRight; 54 53 … … 145 144 void TestGun::fire() 146 145 { 147 if( !this-> hasWeaponIdleTimeElapsed())146 if( !this->stateTimeElapsed()) 148 147 { 149 148 this->weaponIdle(); … … 158 157 pj->setVelocity(this->getVelocity()); 159 158 State::getWorldEntityList()->add(pj); 160 this->localTime = 0;161 159 162 160 this->animation1->replay(); … … 191 189 void TestGun::tick (float time) 192 190 { 193 this-> localTime += time;191 this->stateTime += time; 194 192 } 195 193  - 
        
orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.cc
r4836 r4878 25 25 26 26 /** 27 * standard constructor28 29 creates a new weapon27 * standard constructor 28 * 29 * creates a new weapon 30 30 */ 31 31 Weapon::Weapon (PNode* parent, const Vector& coordinate, const Quaternion& direction) 32 32 { 33 this->init(); 33 34 parent->addChild(this, PNODE_ALL); 34 35 this->setRelCoor(coordinate); … … 36 37 } 37 38 38 39 39 /** 40 * standard deconstructor40 * standard deconstructor 41 41 */ 42 42 Weapon::~Weapon () … … 50 50 } 51 51 52 void Weapon::init() 53 { 54 this->currentState = WS_INACTIVE; 55 this->stateTime = 0.0; 56 for (int i = 0; i < WS_STATE_COUNT; i++) 57 { 58 this->times[i] = 0.0; 59 this->animation[i] = NULL; 60 } 61 for (int i = 0; i < WA_ACTION_COUNT; i++) 62 this->soundBuffers[i] = NULL; 63 64 this->weaponSource = NULL; 65 this->minCharge; 66 this->maxCharge; 67 68 this->active = false; 69 this->projectile = NULL; 70 } 52 71 53 72 /** 54 * enables the weapon 55 56 a weapon can be enabled/disabled because of various reasons. if a weapon is 57 been enabled, it can interact in a world. elswhere it wont react to any 58 action. 59 */ 60 void Weapon::enable() 61 { 62 this->enabled = true; 63 } 64 65 66 /** 67 * disables the weapon 68 69 a weapon can be enabled/disabled because of various reasons. if a weapon is 70 been enabled, it can interact in a world. elswhere it wont react to any 71 action. 72 */ 73 void Weapon::disable() 74 { 75 this->enabled = false; 76 } 77 78 79 /** 80 * checks if the weapon is enabled 81 * @returns true if enabled 82 83 a weapon can be ebabled/disabled because of various reasons. if a weapon is 84 been enabled, it can interact in a world. elswhere it wont react to any 85 action. 86 */ 87 bool Weapon::isEnabled() 88 { 89 return this->enabled; 90 } 91 92 93 /** 94 * sets a new projectile to the weapon 73 * sets a new projectile to the weapon 95 74 * @param new projectile for this weapon 96 97 weapon an projectile are independent, so you can combine them as you want75 * 76 * weapon an projectile are independent, so you can combine them as you want 98 77 */ 99 78 void Weapon::setProjectile(Projectile* projectile) … … 104 83 105 84 /** 106 * sets a new projectile to the weapon85 * sets a new projectile to the weapon 107 86 * @returns the current projectile of this weapon 108 109 weapon an projectile are independent, so you can combine them as you want87 * 88 * weapon an projectile are independent, so you can combine them as you want 110 89 */ 111 90 Projectile* Weapon::getProjectile() … … 116 95 117 96 /** 118 * this activates the weapon119 120 This is needed, since there can be more than one weapon on a ship. the121 activation can be connected with an animation. for example the weapon is122 been armed out.97 * this activates the weapon 98 * 99 * This is needed, since there can be more than one weapon on a ship. the 100 * activation can be connected with an animation. for example the weapon is 101 * been armed out. 123 102 */ 124 103 void Weapon::activate() … … 127 106 128 107 /** 129 * this deactivates the weapon130 131 This is needed, since there can be more than one weapon on a ship. the132 activation can be connected with an animation. for example the weapon is133 been armed out.108 * this deactivates the weapon 109 * 110 * This is needed, since there can be more than one weapon on a ship. the 111 * activation can be connected with an animation. for example the weapon is 112 * been armed out. 134 113 */ 135 114 void Weapon::deactivate() … … 137 116 138 117 /** 139 * asks if the current weapon is active 140 * @returns true if it the weapon is active 141 */ 142 bool Weapon::isActive() 143 {} 144 145 146 147 148 149 150 /** 151 * is called, when the weapon gets hit (=collide with something) 118 * is called, when the weapon gets hit (=collide with something) 152 119 * @param from which entity it is been hit 153 120 * @param where it is been hit 154 155 this may not be used, since it would make the game relay complicated when one156 can destroy the weapons of enemies or vice versa.121 * 122 * this may not be used, since it would make the game relay complicated when one 123 * can destroy the weapons of enemies or vice versa. 157 124 */ 158 125 void Weapon::hit (WorldEntity* entity, const Vector& position) … … 162 129 /** 163 130 * is called, when the weapon is destroyed 164 165 this is in conjunction with the hit function, so when a weapon is able to get166 hit, it can also be destoryed.131 * 132 * this is in conjunction with the hit function, so when a weapon is able to get 133 * hit, it can also be destoryed. 167 134 */ 168 135 void Weapon::destroy ()  - 
        
orxonox/branches/weaponSystem/src/world_entities/weapons/weapon.h
r4876 r4878 78 78 void loadParams(const TiXmlElement* root); 79 79 80 void enable();81 void disable();82 bool isEnabled();83 84 80 void setProjectile(Projectile* projectile); 85 81 Projectile* getProjectile(); … … 87 83 virtual void activate(); 88 84 virtual void deactivate(); 89 bool isActive(); 85 virtual void fire() = 0; 86 //virtual void reload(); 87 //virtual void charge(); 88 bool isActive() const { return this->active; }; 90 89 91 92 /** @param idle time in ms */ 93 inline void setWeaponIdleTime(float idleTime) { this->idleTime = idleTime; }; 94 /** @returns idle time in ms */ 95 inline float getWeaponIdleTime() const { return this->idleTime; }; 96 /** @return true if idletime is elapsed else otherwise */ 97 inline bool hasWeaponIdleTimeElapsed() const { return (this->localTime > this->idleTime)?true:false; }; 90 // FUNCTIONS TO SET THE WEAPONS PROPERTIES. 91 void setStateDuration(const char* state, float duration); 92 void setStateDuration(WeaponState state, float duration); 93 float getStateDuration(WeaponState state) { return (state < WS_STATE_COUNT)?this->times[state]:0.0; }; 94 /** @return true if idletime is elapsed, false otherwise */ 95 inline bool stateTimeElapsed() const { return (this->stateTime > this->times[currentState])?true:false; }; 98 96 99 97 /** fires the weapon */ 100 virtual void fire() = 0;101 98 virtual void hit (WorldEntity* weapon, const Vector& loc); 102 99 virtual void destroy(); … … 107 104 108 105 protected: 109 float localTime; //<! this is the local time. important for shooting attributes like frequency110 float idleTime; //<! the time a weapon needs before it can shoot again. eg. shooting frequency or actication/deactivateion delay111 float slowDownFactor; //<! if the shooting frequency is a linear function of time...112 113 106 //////////// 114 107 // PHASES // 115 108 //////////// 116 109 WeaponState currentState; //!< The State the weapon is in. 117 float stateTime; //!< how long the state has t eken until now.110 float stateTime; //!< how long the state has taken until now. 118 111 float times[WS_STATE_COUNT]; //!< Times to stay in the different States @see WeaponState. 119 112 SoundBuffer* soundBuffers[WA_ACTION_COUNT]; //!< SoundBuffers for all actions @see WeaponAction. … … 127 120 128 121 private: 129 bool enabled; //<! states if the weapon is enabled or not 130 Projectile* projectile; //<! the projectile used for this weapon 131 //WeaponSound sound; 122 bool active; //!< states wheter the weapon is enabled or not 123 Projectile* projectile; //!< the projectile used for this weapon 132 124 }; 133 125  - 
        
orxonox/branches/weaponSystem/src/world_entities/world_entity.cc
r4877 r4878 62 62 63 63 /** 64 * loads a Model onto a WorldEntity64 * loads a Model onto a WorldEntity 65 65 * @param fileName the name of the model to load 66 66 */ … … 79 79 80 80 /** 81 * sets the character attributes of a worldentity81 * sets the character attributes of a worldentity 82 82 * @param character attributes 83 84 these attributes don't have to be set, only use them, if you need them83 * 84 * these attributes don't have to be set, only use them, if you need them 85 85 */ 86 86 void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr) … … 89 89 90 90 /** 91 * gets the Character attributes of this worldentity91 * gets the Character attributes of this worldentity 92 92 * @returns character attributes 93 93 */ … … 95 95 {} 96 96 97 98 /**99 * set the WorldEntity's collision hull100 * @param newhull: a pointer to a completely assembled CollisionCluster101 102 Any previously assigned collision hull will be deleted on reassignment103 */104 /*105 void WorldEntity::setCollision (CollisionCluster* newhull)106 {107 if( newhull == NULL) return;108 if( collisioncluster != NULL) delete collisioncluster;109 collisioncluster = newhull;110 }111 */112 113 97 /** 114 98 * this function is called, when two entities collide 115 99 * @param entity: the world entity with whom it collides 116 117 Implement behaviour like damage application or other miscellaneous collision stuff in this function100 * 101 * Implement behaviour like damage application or other miscellaneous collision stuff in this function 118 102 */ 119 103 void WorldEntity::collideWith(WorldEntity* entity) … … 127 111 * @param weapon: the laser/rocket/shoot that hits. 128 112 * @param loc: place where it is hit 129 130 calculate the damage depending113 * 114 * calculate the damage depending 131 115 */ 132 116 void WorldEntity::hit(WorldEntity* weapon, Vector* loc) {} … … 135 119 /** 136 120 * this is called immediately after the Entity has been constructed and initialized 137 138 Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here.139 DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted.121 * 122 * Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here. 123 * DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted. 140 124 */ 141 125 void WorldEntity::postSpawn () … … 146 130 /** 147 131 * this method is called by the world if the WorldEntity leaves valid gamespace 148 149 For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a150 place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy).132 * 133 * For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a 134 * place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy). 151 135 */ 152 136 void WorldEntity::leftWorld () … … 158 142 * this method is called every frame 159 143 * @param time: the time in seconds that has passed since the last tick 160 161 Handle all stuff that should update with time inside this method (movement, animation, etc.)144 * 145 * Handle all stuff that should update with time inside this method (movement, animation, etc.) 162 146 */ 163 147 void WorldEntity::tick(float time) … … 167 151 /** 168 152 * the entity is drawn onto the screen with this function 169 170 This is a central function of an entity: call it to let the entity painted to the screen. Just override this function with whatever you want to be drawn. 153 * 154 * This is a central function of an entity: call it to let the entity painted to the screen. 155 * Just override this function with whatever you want to be drawn. 171 156 */ 172 157 void WorldEntity::draw()  - 
        
orxonox/branches/weaponSystem/src/world_entities/world_entity.h
r4877 r4878 1 1 /*! 2 \file world_entity.h3 *Definition of the basic WorldEntity2 * @file world_entity.h 3 * Definition of the basic WorldEntity 4 4 */ 5 5 … … 8 8 9 9 #include "p_node.h" 10 #include "comincl.h"11 10 #include "resource_manager.h" 12 11 #include "factory.h" … … 16 15 17 16 18 17 // FORWARD DECLARATION 19 18 class CharacterAttributes; 20 19 class SoundEngine; … … 23 22 24 23 25 //! Basi c class from whichall interactive stuff in the world is derived from24 //! Basis-class all interactive stuff in the world is derived from 26 25 class WorldEntity : public PNode 27 26 { … … 53 52 virtual unsigned int getFaceCount () const { if (this->model) return this->model->getFaceCount(); else return 0; }; 54 53 54 virtual void tick (float time); 55 55 virtual void draw (); 56 56 void drawBVTree(int depth, int drawMode); 57 virtual void tick (float time);58 57 59 58 protected:  
Note: See TracChangeset
          for help on using the changeset viewer.
      


            






