Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 23, 2015, 2:18:32 PM (9 years ago)
Author:
gania
Message:

Set a layout for WingmanController and LeaderController

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/AI_HS15/src/orxonox/controllers/WingmanController.cc

    r10681 r10682  
    5555    void WingmanController::action()
    5656    {
    57        
     57        //--------------------------Cover Leader's rear--------------------------
     58        //check for enemies in Leader's rear that can attack him and if they are visible, meaning there are no other Leader's between Leader and enemies.
     59        //if there are enemies, set target_ to the nearest one and set bFollowLeader_ to false,
     60        //otherwise set bFollowLeader_ to true and target_ to sectionTarget_
     61        this->coverAllyRear(this->sectionLeader_);
    5862    }
    5963
    6064    void WingmanController::tick(float dt)
    6165    {
     66        if (!this->isActive())
     67            return;
     68        //--------------------------Stay in formation--------------------------
     69        if (bFollowLeader_)
     70        {
     71            this->keepSectionTick();
     72            /*keepSectionTick(){
     73                if (this->sectionLeader_ && this->sectionLeader_->getControllableEntity() && desiredRelativePosition_){
     74                    Vector3 desiredAbsolutePosition = ((this->sectionLeader_->getControllableEntity()->getWorldPosition()) +
     75                        (this->sectionLeader_->getControllableEntity()->getWorldOrientation()* (*desiredRelativePosition_)));
     76                    this->moveToPosition (desiredAbsolutePosition);
     77                }
     78            }
     79            */
     80           
     81            //--------------------------Attack same target as the Leader--------------------------
     82           
     83            if (this->target_)
     84            {
     85                this->aimAtTarget();
     86                this->doFire();
     87            }
     88        }
     89        //--------------------------Protect Leader by killing target_--------------------------
    6290
    63      
     91        else
     92        {
     93            if (this->target_)
     94            {
     95                //--------------------------Don't attack if not visible--------------------------               
     96                if (!this->target_->getRadarVisibility()) /* So AI won't shoot invisible Spaceships */
     97                {
     98                    this->forgetTarget();
     99                    //this->bFollowLeader_ = true;
     100                }
     101                //--------------------------Otherwise destroy it--------------------------
     102                else
     103                {
     104                    this->aimAtTarget();
     105                    this->follow();  //If a bot is shooting a player, it shouldn't let him go away easily.
     106                }
     107                if (this->bHasTargetPosition_)
     108                {
     109                    this->moveToTargetPosition();
     110                }
     111                this->doFire();
     112            }
     113            //--------------------------no target? do nothing until next action() -> either new target appears or bFollowLeader_ set to true--------------------------
     114            else
     115            {
     116
     117            }           
     118
     119        }
    64120        SUPER(WingmanController, tick, dt);
    65121    }
Note: See TracChangeset for help on using the changeset viewer.