Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 3, 2008, 4:07:49 PM (16 years ago)
Author:
dsommer
Message:

Aufnehmen von festen Item und wieder ablegen

Location:
code/branches/pickups2/src/orxonox
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • code/branches/pickups2/src/orxonox/CMakeLists.txt

    r2227 r2324  
    7272  objects/pickup/Item.cc
    7373  objects/pickup/Turbo.cc
     74  objects/pickup/ShipEquipment.cc
    7475
    7576  objects/quest/AddQuest.cc
  • code/branches/pickups2/src/orxonox/objects/controllers/HumanController.cc

    r2087 r2324  
    4747    SetConsoleCommand(HumanController, use,           true);
    4848    SetConsoleCommand(HumanController, switchCamera,  true);
     49    SetConsoleCommand(HumanController, dropItems,     true);
    4950
    5051    CreateUnloadableFactory(HumanController);
     
    129130            HumanController::localController_s->controllableEntity_->switchCamera();
    130131    }
     132
     133    void HumanController::dropItems()
     134    {
     135        if (HumanController::localController_s && HumanController::localController_s->controllableEntity_)
     136            HumanController::localController_s->controllableEntity_->dropItems();
     137    }
    131138}
  • code/branches/pickups2/src/orxonox/objects/controllers/HumanController.h

    r2087 r2324  
    5757            static void use();
    5858            static void switchCamera();
     59            static void dropItems();
    5960
    6061        private:
  • code/branches/pickups2/src/orxonox/objects/pickup/Item.cc

    r2293 r2324  
    88#include "util/String.h"
    99#include "objects/worldentities/pawns/Pawn.h"
     10
    1011
    1112namespace orxonox
     
    3031bool Item::addTo (Pawn* player)
    3132{
     33       
     34        return player->getPickUp().insert(this);
    3235        /*if(checkSlot(player)==true)
    3336        player->pickUp.Equipment.insert ( std::pair<std::string, Item*>(this->getName(),this) );
    3437        else
    3538        COUT(3) << "swap?" << std::endl;*/
    36         return player->getPickUp().insert(this);
    3739}
    3840bool Item::remove(Pawn* player)
     
    5153bool Item::checkSlot(Pawn* player)
    5254{
    53         /*std::multimap<std::string,Item*>::iterator it;
    54         for ( it=player->pickUp.Equipment.begin() ; it != player->pickUp.Equipment.end(); it++ )
     55        std::multimap<std::string,Item*>::iterator it;
     56        for ( it=player->getPickUp().getEquipment().begin() ; it != player->getPickUp().getEquipment().end(); it++ )
    5557        {
    5658        if((*it).second->playerBaseClass_==this->playerBaseClass_)
    5759        return false;
    5860        }
    59         return true;*/
    60         return player->getPickUp().checkSlot(this);
     61        return true;
     62        //return player->getPickUp().checkSlot(player);
    6163}
    6264void Item::setPlayerBaseClassName(const std::string& name)
  • code/branches/pickups2/src/orxonox/objects/pickup/Item.h

    r2293 r2324  
    44#include "core/BaseObject.h"
    55#include "OrxonoxPrereqs.h"
    6 #include "ShipEquipment.h"
    76
    87namespace orxonox
    98{
     9        class ShipEquipment;
     10
    1011        class _OrxonoxExport Item : public BaseObject
    1112        {
  • code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.cc

    r2294 r2324  
    11#include "Item.h"
    22#include "ShipEquipment.h"
     3#include "objects/worldentities/pawns/Pawn.h"
    34
    45
    56namespace orxonox
    67{
     8
    79        bool ShipEquipment::insert(Item* item)
    810        {
    9         if(checkSlot(player)==true)
     11        if(checkSlot(item)==true)
     12        {
    1013                Equipment.insert ( std::pair<std::string, Item*>(item->getName(),item) );
    11         else
     14                return true;
     15        }
    1216                COUT(3) << "swap?" << std::endl;
     17                return false;
    1318       
     19        return false;
    1420        };
    1521        bool ShipEquipment::erase (Item* item)
    1622        {
    17         if(Equipment.find(item->getName())!= Equipment.end())
     23        std::multimap<std::string,Item*>::iterator it = Equipment.find(item->getName());
     24        if(it != Equipment.end())
    1825        {
    19                 std::multimap<std::string,Item*>::iterator it;
    20                 it=Equipment.find(item->getName());
     26                //it->second->dropped(this->getPlayer());
    2127                Equipment.erase (it);
    2228                return true;
     
    2531                return false;
    2632        };
    27         bool ShipEquipment::checkSlot(Item* item) const
     33
     34        void ShipEquipment::eraseAll()
     35        {
     36               
     37                for (std::multimap<std::string,Item*>::iterator it = Equipment.begin(); it != Equipment.end(); )
     38                {
     39               
     40                        (it++)->second->dropped(this->getPlayer());
     41                }
     42        }
     43
     44        bool ShipEquipment::checkSlot(Item* item)
    2845        {
    2946        std::multimap<std::string,Item*>::iterator it;
    30         for ( it=Equipment.begin() ; it != Equipment.end(); it++ )
     47        for ( it= getPlayer()->getPickUp().getEquipment().begin() ; it != getPlayer()->getPickUp().getEquipment().end(); it++ )
    3148        {
    32                 if((*it).second->playerBaseClass_==item->playerBaseClass_)
     49                if((*it).second->getPlayerBaseClass()==item->getPlayerBaseClass())
    3350                return false;
    3451        }
  • code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.h

    r2294 r2324  
    33#include <string>
    44#include <map>
    5 #include "Item.h"
    65
    76/*
     
    1817namespace orxonox
    1918{
     19    class Item;
     20
    2021    class _OrxonoxExport ShipEquipment
    2122    {
     
    2728        bool insert(Item* item);
    2829        bool erase (Item* item);
    29         const bool checkSlot(Item* item) const;
     30        void eraseAll();
     31        bool checkSlot(Item* item);
    3032//      const std::multimap<std::string, Item*>& getEquipment() const { return this->Equipment; }
     33        inline std::multimap<std::string, Item*>& getEquipment() {return this->Equipment;}
     34        inline std::multimap<std::string, Item*>& getUsable() {return this->Usable;}
     35        inline std::multimap<std::string, Item*>& getTrunk() {return this->Trunk;}
     36        inline Pawn* getPlayer() {return this->player ;}
     37        inline void setPlayer(Pawn* setplayer)
     38        {this->player = setplayer;}
    3139
    3240        private:
     41            Pawn* player;
    3342            std::multimap<std::string, Item*> Equipment;
    3443            std::multimap<std::string, Item*> Usable;
  • code/branches/pickups2/src/orxonox/objects/pickup/Turbo.cc

    r2289 r2324  
    4242                        {
    4343                        SpaceShip* ship = dynamic_cast <SpaceShip*>(player);
    44                         this->setSpeedBoost(ship);
    45                         if(duration_==0)
    46                         addTo(player);
    47                         return true;
     44                        if(duration_==0 )
     45                        {       if(addTo(player))
     46                                        {
     47                                                this->setSpeedBoost(ship);
     48                                                return true;
     49                                        }
     50                        }
     51                        else
     52                        {
     53                                this->setSpeedBoost(ship);
     54                                return true;
     55                        }
     56                        return false;
    4857                        }
    4958                return false;
     
    7988                if (this->duration_ == 0)
    8089                {
     90                        COUT(0) << "dropped" << std::endl;
    8191                        if(remove(player)==true);
    8292                        {
  • code/branches/pickups2/src/orxonox/objects/worldentities/ControllableEntity.h

    r2087 r2324  
    7070            virtual void greet() {}
    7171            virtual void use() {}
     72            virtual void dropItems() {}
    7273            virtual void switchCamera();
    7374
  • code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.cc

    r2106 r2324  
    4646
    4747        this->bAlive_ = false;
    48 
     48        this->getPickUp().setPlayer(this);
    4949        this->health_ = 0;
    5050        this->maxHealth_ = 0;
     
    148148        this->spawn();
    149149    }
     150
     151    void Pawn::dropItems()
     152    {
     153        pickUp.eraseAll();
     154    }
    150155}
  • code/branches/pickups2/src/orxonox/objects/worldentities/pawns/Pawn.h

    r2293 r2324  
    7575
    7676            virtual void fire();
     77            virtual void postSpawn();
     78
    7779            inline ShipEquipment& getPickUp()
    7880                {return this->pickUp;}
    79             virtual void postSpawn();
     81
     82            virtual void dropItems();
    8083
    8184        protected:
Note: See TracChangeset for help on using the changeset viewer.