Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 8, 2009, 12:58:47 AM (15 years ago)
Author:
dafrick
Message:

Reverted to revision 2906 (because I'm too stupid to merge correctly, 2nd try will follow shortly. ;))

Location:
code/branches/questsystem5
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/branches/questsystem5

  • code/branches/questsystem5/src/orxonox/objects/weaponSystem/Weapon.cc

    r2907 r2908  
    4242    {
    4343        RegisterObject(Weapon);
    44 
    4544        this->bulletReadyToShoot_ = true;
    4645        this->magazineReadyToShoot_ = true;
    4746        this->parentWeaponSystem_ = 0;
    4847        this->attachedToWeaponSlot_ = 0;
     48        this->munition_ = 0;
    4949        this->bulletLoadingTime_ = 0;
    5050        this->magazineLoadingTime_ = 0;
    5151        this->bReloading_ = false;
    52         this->bulletAmount_= 0;
    53         this->magazineAmount_ = 0;
    54         this->munition_ = 0;
    55         this->unlimitedMunition_ = false;
     52
    5653        this->setObjectMode(0x0);
    5754    }
     
    6865        XMLPortParam(Weapon, "bulletLoadingTime", setBulletLoadingTime, getBulletLoadingTime, xmlelement, mode);
    6966        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);
    7367    }
    7468
     
    7973    }
    8074
    81     void Weapon::setMunition()
    82     {
    83         this->munition_->setMaxBullets(this->bulletAmount_);
    84         this->munition_->setMaxMagazines(this->magazineAmount_);
    85     }
    8675
    8776    void Weapon::fire()
    8877    {
     78//COUT(0) << "LaserGun::fire, this=" << this << std::endl;
    8979        if ( this->bulletReadyToShoot_ && this->magazineReadyToShoot_ && !this->bReloading_)
    9080        {
     81//COUT(0) << "LaserGun::fire - ready to shoot" << std::endl;
     82//COUT(0) << "LaserGun::fire - bullets" << this->munition_->bullets() << std::endl;
    9183            this->bulletReadyToShoot_ = false;
    92             if ( this->unlimitedMunition_== true )
     84            if ( this->munition_->bullets() > 0)
    9385            {
    9486                //shoot
    95                 this->reloadBullet();
     87                this->takeBullets();
    9688                this->createProjectile();
     89            }
     90            //if there are no bullets, but magazines
     91            else if ( this->munition_->magazines() > 0 && this->munition_->bullets() == 0 )
     92            {
     93//COUT(0) << "LaserGun::fire - no bullets" << std::endl;
     94                this->takeMagazines();
    9795            }
    9896            else
    9997            {
    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                 }
     98//COUT(0) << "LaserGun::fire - no magazines" << std::endl;
     99                //actions
    118100            }
    119101        }
    120102        else
    121103        {
    122             //weapon not reloaded
     104//COUT(0) << "LaserGun::fire - weapon not reloaded - bullets remaining:" << this->munition_->bullets() << std::endl;
     105            //actions
    123106        }
    124107
     
    126109
    127110
    128     //weapon reloading
    129111    void Weapon::bulletTimer(float bulletLoadingTime)
    130112    {
     113//COUT(0) << "Weapon::bulletTimer started" << std::endl;
    131114        this->bReloading_ = true;
    132115        this->bulletReloadTimer_.setTimer( bulletLoadingTime , false , this , createExecutor(createFunctor(&Weapon::bulletReloaded)));
     
    134117    void Weapon::magazineTimer(float magazineLoadingTime)
    135118    {
     119//COUT(0) << "Weapon::magazineTimer started" << std::endl;
    136120        this->bReloading_ = true;
    137121        this->magazineReloadTimer_.setTimer( magazineLoadingTime , false , this , createExecutor(createFunctor(&Weapon::magazineReloaded)));
     
    148132        this->bReloading_ = false;
    149133        this->munition_->fillBullets();
     134        this->magazineReadyToShoot_ = true;
     135        this->bulletReadyToShoot_ = true;
    150136    }
    151 
    152137
    153138
    154139    void Weapon::attachNeededMunition(std::string munitionName)
    155140    {
    156         /*  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         */
     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 WeaponSystem
    158143        if (this->parentWeaponSystem_)
    159144        {
    160             //getMunitionType returns 0 if there is no such munitionType
     145//COUT(0) << "Weapon::attachNeededMunition " << munitionName << std::endl;
    161146            Munition* munition = this->parentWeaponSystem_->getMunitionType(munitionName);
    162147            if ( munition )
    163             {
    164148                this->munition_ = munition;
    165                 this->setMunition();
    166             }
    167149            else
    168150            {
    169                 //create new munition with identifier because there is no such munitionType
     151                //create new munition with identifier
     152//COUT(0) << "Weapon::attachNeededMunition, create new Munition of Type " << munitionName << std::endl;
    170153                this->munitionIdentifier_ = ClassByString(munitionName);
    171154                this->munition_ = this->munitionIdentifier_.fabricate(this);
    172155                this->parentWeaponSystem_->setNewMunition(munitionName, this->munition_);
    173                 this->setMunition();
    174156            }
    175157        }
     
    177159
    178160
    179     Munition * Weapon::getAttachedMunition(std::string munitionType)
    180     {
    181         this->munition_ = this->parentWeaponSystem_->getMunitionType(munitionType);
    182         return this->munition_;
    183     }
     161     /*get and set functions
     162     *
     163     */
    184164
    185 
    186     //these function are defined in the weapon classes
    187     void Weapon::takeBullets() { };
    188     void Weapon::createProjectile() { };
    189     void Weapon::takeMagazines() { };
    190     void Weapon::reloadBullet() { };
    191     void Weapon::reloadMagazine() { };
    192 
    193 
    194     //get and set functions for XMLPort
    195165    void Weapon::setMunitionType(std::string munitionType)
    196166    {   this->munitionType_ = munitionType; }
     
    211181    {   return this->magazineLoadingTime_;  }
    212182
    213     void Weapon::setBulletAmount(unsigned int amount)
    214     {   this->bulletAmount_ = amount; }
    215183
    216     const unsigned int Weapon::getBulletAmount()
    217     {   return this->bulletAmount_;  }
     184    Munition * Weapon::getAttachedMunition(std::string munitionType)
     185    {
     186//COUT(0) << "Weapon::getAttachedMunition, parentWeaponSystem_="<< this->parentWeaponSystem_ << std::endl;
     187        this->munition_ = this->parentWeaponSystem_->getMunitionType(munitionType);
     188//COUT(0) << "Weapon::getAttachedMunition, munition_="<< this->munition_ << std::endl;
     189        return this->munition_;
     190    }
    218191
    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_;    }
     192    void Weapon::takeBullets() { };
     193    void Weapon::createProjectile() { };
     194    void Weapon::takeMagazines() { };
    230195
    231196}
Note: See TracChangeset for help on using the changeset viewer.