Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 15, 2008, 1:38:02 AM (16 years ago)
Author:
landauf
Message:
  • fixed a small speedbar-initialization problem
  • added new console-commands:
    • pause
    • suicide
    • addBots [number]
    • killBots [number]
Location:
code/branches/objecthierarchy2/src/orxonox/objects
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.cc

    r2254 r2462  
    3333#include "core/ConsoleCommand.h"
    3434#include "objects/worldentities/ControllableEntity.h"
     35#include "objects/worldentities/pawns/Pawn.h"
     36#include "objects/gametypes/Gametype.h"
    3537
    3638namespace orxonox
     
    4850    SetConsoleCommand(HumanController, use,           true);
    4951    SetConsoleCommand(HumanController, switchCamera,  true);
     52    SetConsoleCommand(HumanController, suicide,       true);
     53    SetConsoleCommand(HumanController, addBots,       true).defaultValues(1);
     54    SetConsoleCommand(HumanController, killBots,      true).defaultValues(0);
    5055
    5156    CreateUnloadableFactory(HumanController);
     
    136141            HumanController::localController_s->controllableEntity_->switchCamera();
    137142    }
     143
     144    void HumanController::suicide()
     145    {
     146        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
     147        {
     148            Pawn* pawn = dynamic_cast<Pawn*>(HumanController::localController_s->controllableEntity_);
     149            if (pawn)
     150                pawn->kill();
     151        }
     152    }
     153
     154    void HumanController::addBots(unsigned int amount)
     155    {
     156        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_ && HumanController::localController_s->controllableEntity_->getGametype())
     157            HumanController::localController_s->controllableEntity_->getGametype()->addBots(amount);
     158    }
     159
     160    void HumanController::killBots(unsigned int amount)
     161    {
     162        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_ && HumanController::localController_s->controllableEntity_->getGametype())
     163            HumanController::localController_s->controllableEntity_->getGametype()->killBots(amount);
     164    }
    138165}
  • code/branches/objecthierarchy2/src/orxonox/objects/controllers/HumanController.h

    r2254 r2462  
    5959            static void switchCamera();
    6060
     61            static void suicide();
     62
     63            static void addBots(unsigned int amount);
     64            static void killBots(unsigned int amount = 0);
     65
    6166        private:
    6267            static HumanController* localController_s;
  • code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.cc

    r2447 r2462  
    3636#include "core/ConfigValueIncludes.h"
    3737#include "objects/infos/PlayerInfo.h"
     38#include "objects/infos/Bot.h"
    3839#include "objects/worldentities/pawns/Spectator.h"
    3940#include "objects/worldentities/SpawnPoint.h"
     
    5051        RegisterObject(Gametype);
    5152
     53        this->setGametype(this);
     54
    5255        this->defaultControllableEntity_ = Class(Spectator);
    5356
    5457        this->bAutoStart_ = false;
    5558        this->bForceSpawn_ = false;
     59        this->numberOfBots_ = 0;
    5660
    5761        this->initialStartCountdown_ = 3;
    5862
    5963        this->setConfigValues();
     64
     65        this->addBots(this->numberOfBots_);
    6066    }
    6167
     
    6571        SetConfigValue(bAutoStart_, false);
    6672        SetConfigValue(bForceSpawn_, false);
     73        SetConfigValue(numberOfBots_, 0);
    6774    }
    6875
     
    293300        }
    294301    }
     302
     303    void Gametype::addBots(unsigned int amount)
     304    {
     305        for (unsigned int i = 0; i < amount; ++i)
     306            new Bot(this);
     307    }
     308
     309    void Gametype::killBots(unsigned int amount)
     310    {
     311        unsigned int i = 0;
     312        for (ObjectList<Bot>::iterator it = ObjectList<Bot>::begin(); (it != ObjectList<Bot>::end()) && ((amount == 0) || (i < amount)); )
     313        {
     314            if (it->getGametype() == this)
     315            {
     316                delete (*(it++));
     317                ++i;
     318            }
     319        }
     320    }
    295321}
  • code/branches/objecthierarchy2/src/orxonox/objects/gametypes/Gametype.h

    r2428 r2462  
    9898                { return this->gtinfo_.startCountdown_; }
    9999
     100            void addBots(unsigned int amount);
     101            void killBots(unsigned int amount = 0);
     102
    100103        private:
    101104            virtual SpawnPoint* getBestSpawnPoint(PlayerInfo* player) const;
     
    116119
    117120            float initialStartCountdown_;
     121            unsigned int numberOfBots_;
    118122
    119123            std::map<PlayerInfo*, PlayerState::Enum> players_;
  • code/branches/objecthierarchy2/src/orxonox/objects/infos/PlayerInfo.cc

    r2438 r2462  
    6565                this->controller_ = 0;
    6666            }
     67
     68            if (this->getGametype())
     69                this->getGametype()->playerLeft(this);
    6770        }
    6871    }
Note: See TracChangeset for help on using the changeset viewer.