Changeset 2893 for code/trunk/src/orxonox/objects/weaponSystem
- Timestamp:
- Apr 5, 2009, 11:27:54 PM (16 years ago)
- Location:
- code/trunk
- Files:
-
- 13 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
/code/branches/weaponsystem (added) merged: 2743,2778,2804,2852,2886
- Property svn:mergeinfo changed
-
code/trunk/src/orxonox/objects/weaponSystem/Munition.cc
r2662 r2893 105 105 void Munition::fillBullets() 106 106 { 107 //COUT(0) << "Munition::fillBullets maxBullets_=" << this->maxBullets_ << std::endl;108 107 this->bullets_ = this->maxBullets_; 109 108 } -
code/trunk/src/orxonox/objects/weaponSystem/Weapon.cc
r2662 r2893 42 42 { 43 43 RegisterObject(Weapon); 44 44 45 this->bulletReadyToShoot_ = true; 45 46 this->magazineReadyToShoot_ = true; 46 47 this->parentWeaponSystem_ = 0; 47 48 this->attachedToWeaponSlot_ = 0; 48 this->munition_ = 0;49 49 this->bulletLoadingTime_ = 0; 50 50 this->magazineLoadingTime_ = 0; 51 51 this->bReloading_ = false; 52 52 this->bulletAmount_= 0; 53 this->magazineAmount_ = 0; 54 this->munition_ = 0; 55 this->unlimitedMunition_ = false; 53 56 this->setObjectMode(0x0); 54 57 } … … 65 68 XMLPortParam(Weapon, "bulletLoadingTime", setBulletLoadingTime, getBulletLoadingTime, xmlelement, mode); 66 69 XMLPortParam(Weapon, "magazineLoadingTime", setMagazineLoadingTime, getMagazineLoadingTime, xmlelement, mode); 70 XMLPortParam(Weapon, "bullets", setBulletAmount, getBulletAmount, xmlelement, mode); 71 XMLPortParam(Weapon, "magazines", setMagazineAmount, getMagazineAmount, xmlelement, mode); 72 XMLPortParam(Weapon, "unlimitedMunition", setUnlimitedMunition, getUnlimitedMunition, xmlelement, mode); 67 73 } 68 74 … … 73 79 } 74 80 81 void Weapon::setMunition() 82 { 83 this->munition_->setMaxBullets(this->bulletAmount_); 84 this->munition_->setMaxMagazines(this->magazineAmount_); 85 } 75 86 76 87 void Weapon::fire() 77 88 { 78 //COUT(0) << "LaserGun::fire, this=" << this << std::endl;79 89 if ( this->bulletReadyToShoot_ && this->magazineReadyToShoot_ && !this->bReloading_) 80 90 { 81 //COUT(0) << "LaserGun::fire - ready to shoot" << std::endl;82 //COUT(0) << "LaserGun::fire - bullets" << this->munition_->bullets() << std::endl;83 91 this->bulletReadyToShoot_ = false; 84 if ( this-> munition_->bullets() > 0)92 if ( this->unlimitedMunition_== true ) 85 93 { 86 94 //shoot 87 this-> takeBullets();95 this->reloadBullet(); 88 96 this->createProjectile(); 89 97 } 90 //if there are no bullets, but magazines91 else if ( this->munition_->magazines() > 0 && this->munition_->bullets() == 0 )92 {93 //COUT(0) << "LaserGun::fire - no bullets" << std::endl;94 this->takeMagazines();95 }96 98 else 97 99 { 98 //COUT(0) << "LaserGun::fire - no magazines" << std::endl; 99 //actions 100 if ( this->munition_->bullets() > 0) 101 { 102 //shoot and reload 103 this->takeBullets(); 104 this->reloadBullet(); 105 this->createProjectile(); 106 } 107 //if there are no bullets, but magazines 108 else if ( this->munition_->magazines() > 0 && this->munition_->bullets() == 0 ) 109 { 110 //reload magazine 111 this->takeMagazines(); 112 this->reloadMagazine(); 113 } 114 else 115 { 116 //no magazines 117 } 100 118 } 101 119 } 102 120 else 103 121 { 104 //COUT(0) << "LaserGun::fire - weapon not reloaded - bullets remaining:" << this->munition_->bullets() << std::endl; 105 //actions 122 //weapon not reloaded 106 123 } 107 124 … … 109 126 110 127 128 //weapon reloading 111 129 void Weapon::bulletTimer(float bulletLoadingTime) 112 130 { 113 //COUT(0) << "Weapon::bulletTimer started" << std::endl;114 131 this->bReloading_ = true; 115 132 this->bulletReloadTimer_.setTimer( bulletLoadingTime , false , this , createExecutor(createFunctor(&Weapon::bulletReloaded))); … … 117 134 void Weapon::magazineTimer(float magazineLoadingTime) 118 135 { 119 //COUT(0) << "Weapon::magazineTimer started" << std::endl;120 136 this->bReloading_ = true; 121 137 this->magazineReloadTimer_.setTimer( magazineLoadingTime , false , this , createExecutor(createFunctor(&Weapon::magazineReloaded))); … … 132 148 this->bReloading_ = false; 133 149 this->munition_->fillBullets(); 134 this->magazineReadyToShoot_ = true; 135 this->bulletReadyToShoot_ = true; 136 } 150 } 151 137 152 138 153 139 154 void Weapon::attachNeededMunition(std::string munitionName) 140 155 { 141 //COUT(0) << "Weapon::attachNeededMunition, parentWeaponSystem=" << this->parentWeaponSystem_ << std::endl; 142 //if munition type already exists attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem156 /* if munition type already exists attach it, else create a new one of this type and attach it to the weapon and to the WeaponSystem 157 */ 143 158 if (this->parentWeaponSystem_) 144 159 { 145 //COUT(0) << "Weapon::attachNeededMunition " << munitionName << std::endl; 160 //getMunitionType returns 0 if there is no such munitionType 146 161 Munition* munition = this->parentWeaponSystem_->getMunitionType(munitionName); 147 162 if ( munition ) 163 { 148 164 this->munition_ = munition; 165 this->setMunition(); 166 } 149 167 else 150 168 { 151 //create new munition with identifier 152 //COUT(0) << "Weapon::attachNeededMunition, create new Munition of Type " << munitionName << std::endl; 169 //create new munition with identifier because there is no such munitionType 153 170 this->munitionIdentifier_ = ClassByString(munitionName); 154 171 this->munition_ = this->munitionIdentifier_.fabricate(this); 155 172 this->parentWeaponSystem_->setNewMunition(munitionName, this->munition_); 173 this->setMunition(); 156 174 } 157 175 } … … 159 177 160 178 161 /*get and set functions162 *163 */164 165 void Weapon::setMunitionType(std::string munitionType)166 { this->munitionType_ = munitionType; }167 168 const std::string Weapon::getMunitionType()169 { return this->munitionType_; }170 171 void Weapon::setBulletLoadingTime(float loadingTime)172 { this->bulletLoadingTime_ = loadingTime; }173 174 const float Weapon::getBulletLoadingTime()175 { return this->bulletLoadingTime_; }176 177 void Weapon::setMagazineLoadingTime(float loadingTime)178 { this->magazineLoadingTime_ = loadingTime; }179 180 const float Weapon::getMagazineLoadingTime()181 { return this->magazineLoadingTime_; }182 183 184 179 Munition * Weapon::getAttachedMunition(std::string munitionType) 185 180 { 186 //COUT(0) << "Weapon::getAttachedMunition, parentWeaponSystem_="<< this->parentWeaponSystem_ << std::endl;187 181 this->munition_ = this->parentWeaponSystem_->getMunitionType(munitionType); 188 //COUT(0) << "Weapon::getAttachedMunition, munition_="<< this->munition_ << std::endl;189 182 return this->munition_; 190 183 } 191 184 185 186 //these function are defined in the weapon classes 192 187 void Weapon::takeBullets() { }; 193 188 void Weapon::createProjectile() { }; 194 189 void Weapon::takeMagazines() { }; 190 void Weapon::reloadBullet() { }; 191 void Weapon::reloadMagazine() { }; 192 193 194 //get and set functions for XMLPort 195 void Weapon::setMunitionType(std::string munitionType) 196 { this->munitionType_ = munitionType; } 197 198 const std::string Weapon::getMunitionType() 199 { return this->munitionType_; } 200 201 void Weapon::setBulletLoadingTime(float loadingTime) 202 { this->bulletLoadingTime_ = loadingTime; } 203 204 const float Weapon::getBulletLoadingTime() 205 { return this->bulletLoadingTime_; } 206 207 void Weapon::setMagazineLoadingTime(float loadingTime) 208 { this->magazineLoadingTime_ = loadingTime; } 209 210 const float Weapon::getMagazineLoadingTime() 211 { return this->magazineLoadingTime_; } 212 213 void Weapon::setBulletAmount(unsigned int amount) 214 { this->bulletAmount_ = amount; } 215 216 const unsigned int Weapon::getBulletAmount() 217 { return this->bulletAmount_; } 218 219 void Weapon::setMagazineAmount(unsigned int amount) 220 { this->magazineAmount_ = amount; } 221 222 const unsigned int Weapon::getMagazineAmount() 223 { return this->magazineAmount_; } 224 225 void Weapon::setUnlimitedMunition(bool unlimitedMunition) 226 { this->unlimitedMunition_ = unlimitedMunition; } 227 228 const bool Weapon::getUnlimitedMunition() 229 { return this->unlimitedMunition_; } 195 230 196 231 } -
code/trunk/src/orxonox/objects/weaponSystem/Weapon.h
r2662 r2893 62 62 void magazineReloaded(); 63 63 64 //XMLPort functions 64 65 virtual void setMunitionType(std::string munitionType); 65 66 virtual const std::string getMunitionType(); … … 68 69 virtual void setMagazineLoadingTime(float loadingTime); 69 70 virtual const float getMagazineLoadingTime(); 71 virtual void setBulletAmount(unsigned int amount); 72 virtual const unsigned int getBulletAmount(); 73 virtual void setMagazineAmount(unsigned int amount); 74 virtual const unsigned int getMagazineAmount(); 75 virtual void setUnlimitedMunition(bool unlimitedMunition); 76 virtual const bool getUnlimitedMunition(); 70 77 78 //weapon actions 71 79 virtual void takeBullets(); 72 80 virtual void takeMagazines(); 73 81 virtual void createProjectile(); 82 virtual void reloadBullet(); 83 virtual void reloadMagazine(); 74 84 85 //manually set or reset 86 virtual void setWeapon(); 87 virtual void setMunition(); 88 75 89 inline void setParentWeaponSystem(WeaponSystem *parentWeaponSystem) 76 90 { this->parentWeaponSystem_=parentWeaponSystem; }; … … 83 97 { return this->attachedToWeaponSlot_; } 84 98 85 virtual void setWeapon();86 99 87 100 private: … … 91 104 bool bulletReadyToShoot_; 92 105 bool magazineReadyToShoot_; 106 bool unlimitedMunition_; 93 107 float bulletLoadingTime_; 94 108 float magazineLoadingTime_; 109 unsigned int bulletAmount_; 110 unsigned int magazineAmount_; 95 111 std::string munitionType_; 96 112 -
code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.cc
r2710 r2893 63 63 for (int i=0; i < (int) this->weapons_.size(); i++) 64 64 { 65 //COUT(0) << "WeaponPack::fire (attached from WeaponSet) from Weapon: "<< i << std::endl;66 65 this->weapons_[i]->getAttachedToWeaponSlot()->fire(); 67 66 } … … 83 82 void WeaponPack::setFireMode(unsigned int firemode) 84 83 { 85 //COUT(0) << "WeaponPack::setFireMode " << std::endl;86 84 this->firemode_ = firemode; 87 85 } … … 94 92 void WeaponPack::addWeapon(Weapon * weapon) 95 93 { 96 //COUT(0) << "WeaponPack::addWeapon:" << weapon << " munition " << weapon->getMunitionType() << std::endl;97 94 this->weapons_.push_back(weapon); 98 95 } … … 117 114 { 118 115 this->weapons_[i]->attachNeededMunition(weapons_[i]->getMunitionType()); 119 //hack!120 116 this->weapons_[i]->setWeapon(); 121 117 } -
code/trunk/src/orxonox/objects/weaponSystem/WeaponPack.h
r2710 r2893 59 59 const Weapon * getWeapon(unsigned int index); 60 60 61 //functions with effect to all weapons of the weaponPack 61 62 //functions needed for creating Pointer to the right objects (-->Pawn.cc) 62 63 void setParentWeaponSystemToAllWeapons(WeaponSystem * weaponSystem); -
code/trunk/src/orxonox/objects/weaponSystem/WeaponSet.cc
r2662 r2893 56 56 void WeaponSet::attachWeaponPack(WeaponPack *wPack) 57 57 { 58 //COUT(0) << "WeaponSet::attachWeaponPack" << std::endl;59 //COUT(0) << "........ parentWeaponSystem_=" << this->parentWeaponSystem_ << std::endl;60 //COUT(0) << "........ this->parentWeaponSystem_->getWeaponSlotSize()" << this->parentWeaponSystem_->getWeaponSlotSize() << std::endl;61 //COUT(0) << "........ wPack->getSize()" << wPack->getSize() << std::endl;62 58 if ( this->parentWeaponSystem_->getWeaponSlotSize()>0 && wPack->getSize()>0 && ( wPack->getSize() <= this->parentWeaponSystem_->getWeaponSlotSize() ) ) 63 59 { 64 //COUT(0) << "WeaponSet::attachWeaponPack after if" << std::endl;65 60 this->attachedWeaponPack_ = wPack; 66 61 int wPackWeapon = 0; //WeaponCounter for Attaching 62 67 63 //should be possible to choose which slot to use 64 //attach every weapon of the weaponPack to a weaponSlot 68 65 for ( int i=0; i < wPack->getSize() ; i++ ) 69 66 { 70 67 //at the moment this function only works for one weaponPack in the entire WeaponSystem... 68 //it also takes the first free weaponSlot... 71 69 if ( this->parentWeaponSystem_->getWeaponSlotPointer(i)->getAttachedWeapon() == 0 && this->parentWeaponSystem_->getWeaponSlotPointer(i) != 0) //if slot not full 72 70 { 73 //COUT(0) << "WeaponSet::attachWeaponPack attaching Weapon" << std::endl;74 71 this->setWeaponSlots_.push_back( this->parentWeaponSystem_->getWeaponSlotPointer(i) ); 75 72 this->parentWeaponSystem_->getWeaponSlotPointer(i)->attachWeapon( wPack->getWeaponPointer(wPackWeapon) ); … … 83 80 if ( this->parentWeaponSystem_->getWeaponSlotPointer(k)->getAttachedWeapon() == 0 ) 84 81 { 85 //COUT(0) << "WeaponSet::attachWeaponPack mode 2 k="<< k << std::endl;86 82 this->setWeaponSlots_.push_back( this->parentWeaponSystem_->getWeaponSlotPointer(k) ); 87 83 this->parentWeaponSystem_->getWeaponSlotPointer(k)->attachWeapon( wPack->getWeaponPointer(wPackWeapon) ); … … 99 95 { 100 96 //fires all WeaponSlots available for this weaponSet attached from the WeaponPack 101 //COUT(0) << "WeaponSet::fire from Pack: " << this->attachedWeaponPack_ << std::endl;102 97 if (this->attachedWeaponPack_) 103 98 this->attachedWeaponPack_->fire(); -
code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.cc
- Property svn:mergeinfo changed
/code/branches/weaponsystem/src/orxonox/objects/weaponSystem/WeaponSystem.cc (added) merged: 2778,2804,2852
r2826 r2893 38 38 39 39 40 /* WEAPONSYSTEM 41 * creates the WeaponSystem and the ability to use weapons and munition 42 * loads the weapon the whole weaponSystem setting from an xml file 40 /* WeaponSystem 43 41 * 42 * www.orxonox.net/wiki/WeaponSystem 44 43 */ 45 44 … … 52 51 RegisterObject(WeaponSystem); 53 52 54 this->activeWeaponSet_ = 0;55 53 this->parentPawn_ = 0; 56 54 } … … 84 82 } 85 83 86 //returns the Pointer to the munitionType 84 85 //returns the Pointer to the munitionType, if this munitionType doesn't exist returns 0, see Weapon::attachNeededMunition 87 86 Munition * WeaponSystem::getMunitionType(std::string munitionType) 88 87 { 89 //COUT(0) << "WeaponSystem::getMunitionType " << munitionType << std::endl;90 88 std::map<std::string, Munition *>::const_iterator it = this->munitionSet_.find(munitionType); 91 89 if (it != this->munitionSet_.end()) … … 96 94 97 95 98 /*99 //the first weaponSet is at n=0100 void WeaponSystem::setActiveWeaponSet(unsigned int n)101 {102 if (n < this->weaponSets_.size())103 this->activeWeaponSet_ = this->weaponSets_[n];104 else105 this->activeWeaponSet_ = this->weaponSets_[0];106 }107 */108 109 110 96 //n is the n'th weaponSet, starting with zero 111 //SpaceShip.cc only needs to have the keybinding to a specific Set-number n 97 //SpaceShip.cc only needs to have the keybinding to a specific Set-number n (=firemode) 98 //in future this could be well defined and not only for 3 different WeaponModes 112 99 void WeaponSystem::fire(WeaponMode::Enum n) 113 100 { … … 125 112 break; 126 113 } 127 //COUT(0) << "WeaponSystem::fire" << std::endl;128 114 if (set < (int)this->weaponSets_.size()) 129 //COUT(0) << "WeaponSystem::fire - after if" << std::endl;130 115 this->weaponSets_[set]->fire(); 131 116 } - Property svn:mergeinfo changed
-
code/trunk/src/orxonox/objects/weaponSystem/WeaponSystem.h
- Property svn:mergeinfo changed
/code/branches/weaponsystem/src/orxonox/objects/weaponSystem/WeaponSystem.h (added) merged: 2778,2804,2852
r2826 r2893 53 53 //void fire(); 54 54 void fire(WeaponMode::Enum fireMode); 55 //void setActiveWeaponSet(unsigned int n);56 55 void attachWeaponPack(WeaponPack * wPack, unsigned int firemode); 57 56 WeaponSet * getWeaponSetPointer(unsigned int n); … … 59 58 WeaponPack * getWeaponPackPointer(unsigned int n); 60 59 void setNewMunition(std::string munitionType, Munition * munitionToAdd); 60 void setNewSharedMunition(std::string munitionType, Munition * munitionToAdd); 61 61 Munition * getMunitionType(std::string munitionType); 62 62 … … 74 74 std::vector<WeaponPack *> weaponPacks_; 75 75 std::map<std::string, Munition *> munitionSet_; 76 WeaponSet *activeWeaponSet_;77 76 Pawn *parentPawn_; 78 77 }; - Property svn:mergeinfo changed
-
code/trunk/src/orxonox/objects/weaponSystem/munitions/CMakeLists.txt
r2710 r2893 1 1 ADD_SOURCE_FILES(ORXONOX_SRC_FILES 2 2 LaserGunMunition.cc 3 FusionMunition.cc 3 4 ) -
code/trunk/src/orxonox/objects/weaponSystem/munitions/LaserGunMunition.cc
r2662 r2893 43 43 RegisterObject(LaserGunMunition); 44 44 45 //default if not defined in XML 45 46 this->maxBullets_ = 40; 46 47 this->maxMagazines_ = 100; -
code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.cc
r2662 r2893 53 53 } 54 54 55 void LaserGun::reloadBullet() 56 { 57 this->bulletTimer(this->bulletLoadingTime_); 58 } 59 60 void LaserGun::reloadMagazine() 61 { 62 this->magazineTimer(this->magazineLoadingTime_); 63 } 64 55 65 void LaserGun::takeBullets() 56 66 { 57 //COUT(0) << "LaserGun::takeBullets" << std::endl;58 67 this->munition_->removeBullets(1); 59 this->bulletTimer(this->bulletLoadingTime_);60 68 } 61 69 … … 63 71 { 64 72 this->munition_->removeMagazines(1); 65 this->magazineTimer(this->magazineLoadingTime_);66 73 } 67 74 68 75 void LaserGun::createProjectile() 69 76 { 70 //COUT(0) << "LaserGun::createProjectile" << std::endl;71 77 BillboardProjectile* projectile = new ParticleProjectile(this); 72 78 projectile->setOrientation(this->getWorldOrientation()); -
code/trunk/src/orxonox/objects/weaponSystem/weapons/LaserGun.h
r2662 r2893 51 51 virtual void takeMagazines(); 52 52 virtual void createProjectile(); 53 virtual void reloadBullet(); 54 virtual void reloadMagazine(); 53 55 54 56 private:
Note: See TracChangeset
for help on using the changeset viewer.