Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 8724 for code/branches/ai2


Ignore:
Timestamp:
Jul 1, 2011, 12:59:23 AM (13 years ago)
Author:
jo
Message:

Buggy version: After being shot dead in a simple level the hud doesn't vanish, but becomes replaced by other players' hud(s).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/ai2/src/orxonox/controllers/AIController.cc

    r7284 r8724  
    7676            // search enemy
    7777            random = rnd(maxrand);
    78             if (random < 15 && (!this->target_))
     78            if (random < (15 + botlevel_* 20) && (!this->target_))
    7979                this->searchNewTarget();
    8080
    8181            // forget enemy
    8282            random = rnd(maxrand);
    83             if (random < 5 && (this->target_))
     83            if (random < ((1-botlevel_)*6) && (this->target_))
    8484                this->forgetTarget();
    8585
    8686            // next enemy
    8787            random = rnd(maxrand);
    88             if (random < 10 && (this->target_))
     88            if (random < (botlevel_*20) && (this->target_))
    8989                this->searchNewTarget();
    9090
     
    106106            // shoot
    107107            random = rnd(maxrand);
    108             if (!(this->passive_) && random < 75 && (this->target_ && !this->bShooting_))
     108            if (!(this->passive_) && random < (75 + botlevel_*25) && (this->target_ && !this->bShooting_))
    109109                this->bShooting_ = true;
    110110
    111111            // stop shooting
    112112            random = rnd(maxrand);
    113             if (random < 25 && (this->bShooting_))
     113            if (random < ((1 - botlevel_)*25) && (this->bShooting_))
    114114                this->bShooting_ = false;
    115115
     
    159159                // search enemy
    160160                random = rnd(maxrand);
    161                 if (random < 15 && (!this->target_))
     161                if (random < (botlevel_)*25 && (!this->target_))
    162162                    this->searchNewTarget();
    163163
    164164                // forget enemy
    165165                random = rnd(maxrand);
    166                 if (random < 5 && (this->target_))
     166                if (random < (1-botlevel_)*6 && (this->target_))
    167167                    this->forgetTarget();
    168168
     
    185185                // shoot
    186186                random = rnd(maxrand);
    187                 if (!(this->passive_) && random < 9 && (this->target_ && !this->bShooting_))
    188                 {
    189                 this->bShooting_ = true;
    190                 this->forceFreeSlaves();
     187                if (!(this->passive_) && random < 25*(botlevel_)+1 && (this->target_ && !this->bShooting_))
     188                {
     189                    this->bShooting_ = true;
     190                    this->forceFreeSlaves();
    191191                }
    192192
    193193                // stop shooting
    194194                random = rnd(maxrand);
    195                 if (random < 25 && (this->bShooting_))
     195                if (random < ( (1- botlevel_)*25 ) && (this->bShooting_))
    196196                    this->bShooting_ = false;
    197197
     
    203203    void AIController::tick(float dt)
    204204    {
     205        float random;
     206        float maxrand = 100.0f / ACTION_INTERVAL;
     207
    205208        if (!this->isActive())
    206209            return;
     210        //Vector-implementation: if(target_.size() == 0) target[0] = DEFAULT;
     211        if(this->mode_ == DEFAULT)
     212        {//Vector-implementation: mode_.back() == DEFAULT;
    207213
    208214        if (this->state_ == MASTER)
     
    220226                    this->moveToTargetPosition();
    221227
    222                 if (this->getControllableEntity() && this->bShooting_ && this->isCloseAtTarget(1000) && this->isLookingAtTarget(math::pi / 20.0f))
    223                     this->getControllableEntity()->fire(0);
     228                this->doFire();
    224229            }
    225230
     
    253258                this->moveToTargetPosition();
    254259
    255             if (this->getControllableEntity() && this->bShooting_ && this->isCloseAtTarget(1000) && this->isLookingAtTarget(math::pi / 20.0f))
    256                 this->getControllableEntity()->fire(0);
    257         }
     260            this->doFire();
     261        }
     262
     263        }//END_OF DEFAULT MODE
     264        else if (this->mode_ == ROCKET)//Rockets do not belong to a group of bots -> bot states are not relevant.
     265        {   //Vector-implementation: mode_.back() == ROCKET;
     266            ControllableEntity *controllable = this->getControllableEntity();
     267            if(controllable)
     268            {
     269                if(controllable->getRocket())//Check wether the bot is controlling the rocket and if the timeout is over.
     270                {
     271                    this->follow(); //TODO: CHECK: does follow make the bot crash into the target_ ?
     272                    this->timeout_ -= dt;
     273                    if((timeout_< 0)||(!target_))//Check if the timeout is over or target died.
     274                    {
     275                       controllable->fire(0);//kill the rocket
     276                       this->setPreviousMode();//get out of rocket mode
     277                    }
     278                }
     279                else
     280                    this->setPreviousMode();//no rocket entity -> get out of rocket mode
     281            }
     282            else
     283                this->setPreviousMode();//If bot dies -> getControllableEntity == NULL -> get out of ROCKET mode
     284        }//END_OF ROCKET MODE
    258285
    259286        SUPER(AIController, tick, dt);
Note: See TracChangeset for help on using the changeset viewer.