Changeset 5498 in orxonox.OLD for trunk/src/world_entities/weapons
- Timestamp:
- Nov 7, 2005, 10:43:22 PM (19 years ago)
- Location:
- trunk/src/world_entities/weapons
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/weapons/projectile.h
r5447 r5498 1 1 /*! 2 2 * @file projectile.h 3 * a projectile, that is been shooted by a weapon 4 5 You can use this class to make some shoots, but this isn't the real idea. If you want to just test, if the 6 shooting funcions work, use the Projectile class. But if you want to implement your own shoots its 7 different:<br> 8 Make a new class and derive it from Projectile. To have a weapon work well, reimplement the functions 9 - void tick() 10 - void draw() 11 - void hit() (only if you have working collision detection) 12 When you have implemented these functions you have just to add the projectiles to your weapon. You ll want 13 to make this by looking into the function 14 - Weapon::fire() 15 there you just change the line: 16 Projectile* pj = new Projectile(); TO Projectile* pj = new MyOwnProjectileClass(); 17 and schwups it works... :) 18 */ 3 * a projectile, that is been shooted by a weapon 4 * 5 * You can use this class to make some Projectiles/Bullets/Lasers/Rockets/etc. 6 * 7 */ 19 8 20 9 #ifndef _PROJECTILE_H … … 22 11 23 12 #include "world_entity.h" 24 25 class FastFactory;26 13 27 14 class Projectile : public WorldEntity … … 57 44 protected: 58 45 // energy 59 float energyMin; 60 float energyMax; 46 float energyMin; //!< The minimal Energy a Projectile needs to be emitted. 47 float energyMax; //!< The maximal Energy a Projectile can take, before being emitted. 61 48 bool bChargeable; //!< if the Projectile is Charegeable 62 49 -
trunk/src/world_entities/weapons/test_gun.cc
r5462 r5498 192 192 } 193 193 194 195 /**196 * is called, when the weapon gets hit (=collide with something)197 * @param from which entity it is been hit198 * @param where it is been hit199 200 this may not be used, since it would make the game relay complicated when one201 can destroy the weapons of enemies or vice versa.202 */203 void TestGun::hit (WorldEntity* entity, Vector* position)204 {}205 206 207 194 /** 208 195 * is called, when the weapon is destroyed 209 210 211 196 * 197 * this is in conjunction with the hit function, so when a weapon is able to get 198 * hit, it can also be destoryed. 212 199 */ 213 200 void TestGun::destroy () -
trunk/src/world_entities/weapons/test_gun.h
r4972 r5498 49 49 50 50 virtual void fire(); 51 virtual void hit (WorldEntity* weapon, Vector* loc);52 51 virtual void destroy(); 53 52 -
trunk/src/world_entities/weapons/weapon.cc
r5441 r5498 65 65 /** 66 66 * initializes the Weapon with ALL default values 67 * 68 * This Sets the default values of the Weapon 67 69 */ 68 70 void Weapon::init() 69 71 { 70 this->currentState = WS_INACTIVE; 71 this->requestedAction = WA_NONE; 72 this->stateDuration = 0.0; 73 for (int i = 0; i < WS_STATE_COUNT; i++) 72 this->currentState = WS_INACTIVE; //< Normaly the Weapon is Inactive 73 this->requestedAction = WA_NONE; //< No action is requested by default 74 this->stateDuration = 0.0; //< All the States have zero duration 75 for (int i = 0; i < WS_STATE_COUNT; i++) //< Every State has: 74 76 { 75 this->times[i] = 0.0; 76 this->animation[i] = NULL; 77 this->times[i] = 0.0; //< An infinitesimal duration 78 this->animation[i] = NULL; //< No animation 77 79 } 78 80 for (int i = 0; i < WA_ACTION_COUNT; i++) 79 this->soundBuffers[i] = NULL; 80 81 this->soundSource = new SoundSource(this); 82 this->emissionPoint.setParent(this); 83 84 this->projectile = CL_NULL; 85 this->projectileFactory = NULL; 86 87 this->hideInactive = true; 88 89 this->minCharge = 1.0; 90 this->maxCharge = 1.0; 91 92 this->energyLoaded = .0; 93 this->energyLoadedMax = 5.0; 94 this->energy = .0; 95 this->energyMax = 10.0; 96 this->capability = WTYPE_ALL; 97 98 this->setWeaponManager(NULL); 99 } 100 81 this->soundBuffers[i] = NULL; //< No Sounds 82 83 this->soundSource = new SoundSource(this); //< Every Weapon has exacty one SoundSource. 84 this->emissionPoint.setParent(this); //< One EmissionPoint, that is a PNode connected to the weapon. You can set this to the exitting point of the Projectiles 85 86 this->projectile = CL_NULL; //< No Projectile Class is Connected to this weapon 87 this->projectileFactory = NULL; //< No Factory generating Projectiles is selected. 88 89 this->hideInactive = true; //< The Weapon will be hidden if it is inactive (by default) 90 91 this->minCharge = 1.0; //< The minimum charge the Weapon can hold is 1 unit. 92 this->maxCharge = 1.0; //< The maximum charge is also one unit. 93 94 this->energyLoaded = .0; //< How much energy is loaded in the Gun. (Weapons must be charged befor usage) 95 this->energyLoadedMax = 5.0; //< Each Weapon has a Maximum energy that can be charged onto it 96 this->energy = .0; //< The secondary Buffer (before we have to reload) 97 this->energyMax = 10.0; //< How much energy can be carried 98 this->capability = WTYPE_ALL; //< The Weapon has all capabilities @see W_Capability. 99 100 this->setWeaponManager(NULL); //< By default the Weapon is free, and unhandled by a WeaponManager (this is good for small enemies). 101 } 102 103 /** 104 * loads the Parameters of a Weapon 105 * @param root the XML-Element to load the Weapons settings from 106 */ 101 107 void Weapon::loadParams(const TiXmlElement* root) 102 108 { … … 121 127 * @returns true, if it was sucessfull, false on error 122 128 * 123 * be aware, that this function does not create Factories, as this is job of Bullet-classes. 129 * be aware, that this function does not create Factories, as this is job of Projecitle/Bullet-classes. 130 * What it does, is telling the Weapon what Projectiles it can Emit. 124 131 */ 125 132 void Weapon::setProjectileType(ClassID projectile) … … 166 173 /** 167 174 * prepares Projectiles of the Weapon 168 * @param count how many Projectiles to create 175 * @param count how many Projectiles to create (they will be stored in the ProjectileFactory) 169 176 */ 170 177 void Weapon::prepareProjectiles(unsigned int count) … … 178 185 /** 179 186 * resurects and returns a Projectile 180 * @returns a Projectile on success, NULL on error (ProjectileFastFactory not Found) 187 * @returns a Projectile on success, NULL on error 188 * 189 * errors: 1. (ProjectileFastFactory not Found) 190 * 2. No more Projectiles availiable. 181 191 */ 182 192 Projectile* Weapon::getProjectile() … … 186 196 else 187 197 { 188 PRINTF(2)("No projectile defined for Weapon %s(%s) can t return any\n", this->getName(), this->getClassName());198 PRINTF(2)("No projectile defined for Weapon %s(%s) can't return any\n", this->getName(), this->getClassName()); 189 199 return NULL; 190 200 } … … 307 317 } 308 318 309 ////////////////////// 310 // WEAPON INTERNALS // 311 ////////////////////// 319 //////////////////////////////////////////////////////////// 320 // WEAPON INTERNALS // 321 // These are functions, that no other Weapon should over- // 322 // write. No class has direct Access to them, as it is // 323 // quite a complicated process, handling a Weapon from // 324 // the outside // 325 //////////////////////////////////////////////////////////// 312 326 /** 313 327 * executes an action, and with it starts a new State. … … 531 545 /** 532 546 * checks wether all the Weapons functions are valid, and if it is possible to go to action with it. 533 * 547 * @todo IMPLEMENT the Weapons Check 534 548 */ 535 549 bool Weapon::check() const … … 561 575 } 562 576 563 564 // static 577 //////////////////////////////////////////////////////// 578 // static Definitions (transormators for readability) // 579 //////////////////////////////////////////////////////// 565 580 /** 566 581 * Converts a String into an Action.
Note: See TracChangeset
for help on using the changeset viewer.