Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Dec 10, 2008, 5:25:38 PM (16 years ago)
Author:
dsommer
Message:

funktioniert :)

Location:
code/branches/pickups2/src/orxonox/objects/pickup
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/branches/pickups2/src/orxonox/objects/pickup/PickupSpawner.cc

    r2227 r2389  
    1616
    1717        this->template_ = 0;
    18         this->distance_ = 50;
     18        this->distance_ = 20;
     19        this->respawntimer_= 0;
    1920}
    2021
     
    2829
    2930        XMLPortParam(PickupSpawner, "item", setItemTemplate, getItemTemplate, xmlelement, mode);
    30         XMLPortParam(PickupSpawner, "distance", setDistance, getDistance, xmlelement, mode).defaultValues(50.0f);
     31        XMLPortParam(PickupSpawner, "distance", setDistance, getDistance, xmlelement, mode).defaultValues(20.0f);
     32        XMLPortParam(PickupSpawner, "respawntimer", setRespawnTimer, getRespawnTimer, xmlelement, mode);
     33       
    3134}
    3235
     
    5457        if (this->isActive() && this->template_ && this->template_->getBaseclassIdentifier())
    5558        {
    56                 COUT(0) << "activated" << std::endl;
     59                COUT(0) << "ITEM PICKED UP" << std::endl;
    5760                //if(player->isA(itemtemplate_->getPlayerBaseClass()))
    5861                {
     
    6366                        newitem->addTemplate(this->itemtemplate_);
    6467                        if (newitem->pickedUp(player)== true)
     68                        {
     69                                if(respawntimer_!=0)
     70                                        this->triggerRespawnTimer();
    6571                                this->setActive(false);
     72                                this->fireEvent();
     73                        }       
    6674                        else
    6775                                delete newobject;
     
    7280        }
    7381}
     82
     83void PickupSpawner::triggerRespawnTimer()
     84{       
     85       
     86        if(respawntimer_!=0)
     87        {
     88                ExecutorMember<BaseObject>* executor = createExecutor(createFunctor(&BaseObject::setActive));
     89                executor->setDefaultValues(true);
     90                RespawnTimer_.setTimer(this->respawntimer_, false, (BaseObject*)this, executor);
     91                COUT(0) << "TIMER SET" << std::endl;
     92        }       
    7493}
     94void PickupSpawner::changedActivity()
     95{
     96/*
     97        COUT(0) << "Visble?" << std::endl;
     98        if(isActive())
     99        {
     100                setVisible(true);
     101                COUT(0) << "Visble!" << std::endl;
     102        }
     103        if(isActive()==false)
     104        {
     105                setVisible(false);
     106                COUT(0) << "INvisble!" << std::endl;
     107        }
     108               
     109*/
     110        SUPER(PickupSpawner, changedActivity);
     111
     112        for (std::set<WorldEntity*>::iterator it = this->getAttachedObjects().begin(); it != this->getAttachedObjects().end(); ++it)
     113                (*it)->setVisible(this->isActive());
     114}
     115
     116
     117}
     118
     119
     120
  • code/branches/pickups2/src/orxonox/objects/pickup/PickupSpawner.h

    r2342 r2389  
    44#include "OrxonoxPrereqs.h"
    55#include "Item.h"
    6 
     6#include "tools/Timer.h"
    77#include "objects/worldentities/PositionableEntity.h"
    88#include "objects/Tickable.h"
     
    1515        PickupSpawner(BaseObject* creator);
    1616        virtual ~PickupSpawner();
     17        virtual void changedActivity();
     18        virtual void tick(float dt);
     19        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
     20        virtual void triggering(Pawn* trigger); // Wenn ein Spieler in die Naehe kommt
     21        void triggerRespawnTimer();
    1722
    18         virtual void tick(float dt);
    19 
    20     virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
    21         virtual void triggering(Pawn* trigger); // Wenn ein Spieler in die Naehe kommt
     23        /*inline void setVisibility(bool visible)
     24                { this->setActive(visible); }
     25        inline float getVisibility() const
     26                { return this->isActive(); }*/
    2227
    2328        void setItemTemplate(const std::string& itemtemplate);
     
    2934        inline float getDistance() const
    3035                { return this->distance_; }
     36        inline void setRespawnTimer (float respawntimer)
     37                { this->respawntimer_ = respawntimer; }
     38        inline float getRespawnTimer() const
     39                { return this->respawntimer_; }
    3140
    3241        private:
     
    3443        Template* template_;
    3544        float distance_;
     45        float respawntimer_;
     46        Timer<BaseObject> RespawnTimer_;
    3647        };
    3748}
  • code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.cc

    r2342 r2389  
    99        bool ShipEquipment::insert(Item* item)
    1010        {
    11         if(checkSlot(item)==true)
     11        if(checkSlot(item)==NULL)
    1212        {
    1313                Equipment.insert ( std::pair<std::string, Item*>(item->getName(),item) );
    1414                return true;
    1515        }
    16                 COUT(3) << "swap?" << std::endl;
     16        else
     17        {
     18                COUT(3) << "SWAP?" <<  endl;
     19                if((checkSlot(item)->dropped(player))==true);
     20                {
     21                        Equipment.insert ( std::pair<std::string, Item*>(item->getName(),item) );
     22                        COUT(3) << "SWAPPED!" <<  endl;
     23                        return true;
     24                }
    1725                return false;
     26        }
    1827
    1928        return false;
     
    4857        }
    4958
    50         bool ShipEquipment::checkSlot(Item* item)
     59        Item* ShipEquipment::checkSlot(Item* item)
    5160        {
    5261        std::multimap<std::string,Item*>::iterator it;
     
    5564                //if((*it).second->getPlayerBaseClass()==item->getPlayerBaseClass())
    5665                if(item->isExactlyA((*it).second->getIdentifier()))
    57                 return false;
     66                return (*it).second;
    5867        }
    59         return true;
     68        return NULL;
    6069        };
     70       
    6171}
  • code/branches/pickups2/src/orxonox/objects/pickup/ShipEquipment.h

    r2342 r2389  
    3030        //void print(std::multimap<std::string, Item*> eut);
    3131        void eraseAll();
    32         bool checkSlot(Item* item);
     32        //bool checkSlot(Item* item);
     33        Item* checkSlot(Item* item);
    3334//      const std::multimap<std::string, Item*>& getEquipment() const { return this->Equipment; }
    3435        inline std::multimap<std::string, Item*>& getEquipment() {return this->Equipment;}
  • code/branches/pickups2/src/orxonox/objects/pickup/Turbo.cc

    r2324 r2389  
    3939        bool Turbo::pickedUp(Pawn* player)
    4040        {
     41               
    4142                if(player-> isA(this->getPlayerBaseClass()))
    4243                        {
    4344                        SpaceShip* ship = dynamic_cast <SpaceShip*>(player);
     45                        COUT(3)<<"Speed:"<< ship->getMaxSpeed()<<std::endl;
    4446                        if(duration_==0 )
    4547                        {       if(addTo(player))
    46                                         {
     48                                        {       
     49                                                COUT(3)<<"ITEM EQUIPPED"<<std::endl;
    4750                                                this->setSpeedBoost(ship);
     51                                                COUT(3)<<"Speed:"<< ship->getMaxSpeed()<<std::endl;
    4852                                                return true;
    4953                                        }
     
    5256                        {
    5357                                this->setSpeedBoost(ship);
     58                                COUT(3)<<"Speed:"<< ship->getMaxSpeed()<<std::endl;
    5459                                return true;
    5560                        }
     
    6772        ship->setMaxRotation( ship->getMaxRotation()-this->rotacc_);
    6873        ship->setRotAcc( ship->getRotAcc()-this->rotacc_);
    69         COUT(3)<<"PickUp Timer expired"<<std::endl;
     74        COUT(3)<<"BOOST UNSET"<<std::endl;
    7075        }
    7176
     
    8893                if (this->duration_ == 0)
    8994                {
    90                         COUT(0) << "dropped" << std::endl;
     95                        COUT(0) << "ITEM DROPPED" << std::endl;
    9196                        if(remove(player)==true);
    9297                        {
Note: See TracChangeset for help on using the changeset viewer.