Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 13, 2010, 9:32:08 AM (15 years ago)
Author:
dafrick
Message:

Merged ppspickups1 into trunk.

Location:
code/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/src/orxonox/interfaces/PickupCarrier.h

    r6563 r6709  
    4747namespace orxonox
    4848{
    49 
    50     //! Pre-declarations.
     49    class Pickupable;
    5150    class Pickup;
    5251    class HealthPickup;
    5352    class MetaPickup;
     53    class SpeedPickup;
    5454
    5555    /**
     
    6767        friend class HealthPickup;
    6868        friend class MetaPickup;
    69        
     69        friend class SpeedPickup;
     70
    7071        public:
    7172            PickupCarrier(); //!< Constructor.
    7273            virtual ~PickupCarrier(); //!< Destructor.
    73            
     74
    7475            /**
    7576            @brief Can be called to pick up a Pickupable.
     
    8788                    return pickedUp;
    8889                }
    89                
     90
    9091            /**
    9192            @brief Can be called to drop a Pickupable.
     
    9596            */
    9697            bool drop(Pickupable* pickup, bool drop = true)
    97                 { 
     98                {
    9899                    bool dropped = this->pickups_.erase(pickup) == 1;
    99100                    if(dropped && drop)
     
    104105                    return dropped;
    105106                }
    106                
     107
    107108            /**
    108109            @brief Can be used to check whether the PickupCarrier or a child of his is a target ot the input Pickupable.
     
    114115                    if(pickup->isTarget(this)) //!< If the PickupCarrier itself is a target.
    115116                        return true;
    116                    
     117
    117118                    //! Go recursively through all children to check whether they are a target.
    118119                    std::list<PickupCarrier*>* children = this->getCarrierChildren();
     
    122123                            return true;
    123124                    }
    124                    
     125
    125126                    children->clear();
    126127                    delete children;
    127                    
     128
    128129                    return false;
    129130                }
    130                
     131
    131132            /**
    132133            @brief Get the carrier that is both a child of the PickupCarrier (or the PickupCarrier itself) and a target of the input Pickupable.
     
    138139                    if(!this->isTarget(pickup))
    139140                        return NULL;
    140                    
     141
    141142                    if(pickup->isTarget(this)) //!< If the PickupCarrier itself is a target.
    142143                        return this;
    143                    
     144
    144145                    //! Go recursively through all children to check whether they are the target.
    145146                    std::list<PickupCarrier*>* children = this->getCarrierChildren();
     
    149150                            return *it;
    150151                    }
    151                    
     152
    152153                    children->clear();
    153154                    delete children;
    154                    
     155
    155156                    return NULL;
    156157                }
    157                
     158
    158159            /**
    159160            @brief Get the (absolute) position of the PickupCarrier.
     
    162163            */
    163164            virtual const Vector3& getCarrierPosition(void) = 0;
    164            
    165         protected:       
     165
     166        protected:
    166167            /**
    167168            @brief Get all direct children of this PickupSpawner.
    168169                   This method needs to be implemented by any direct derivative class of PickupCarrier.
    169170                   The returned list will be deleted by the methods calling this function.
    170             @return Returns a pointer to a list of all direct children. 
     171            @return Returns a pointer to a list of all direct children.
    171172            */
    172173            virtual std::list<PickupCarrier*>* getCarrierChildren(void) = 0;
     
    177178            */
    178179            virtual PickupCarrier* getCarrierParent(void) = 0;
    179                            
     180
    180181            /**
    181182            @brief Get all Pickupables this PickupCarrier has.
     
    184185            std::set<Pickupable*>& getPickups(void)
    185186                { return this->pickups_; }
    186        
     187
    187188        private:
    188189            std::set<Pickupable*> pickups_; //!< The list of Pickupables carried by this PickupCarrier.
    189            
     190
    190191    };
    191192}
  • code/trunk/src/orxonox/items/Engine.cc

    r6540 r6709  
    6464        this->boostBlur_ = 0;
    6565
     66        this->speedAdd_ = 0.0;
     67        this->speedMultiply_ = 1.0;
     68
    6669        this->setConfigValues();
    6770        this->registerVariables();
     
    119122        registerVariable(this->accelerationLeftRight_, VariableDirection::ToClient);
    120123        registerVariable(this->accelerationUpDown_,    VariableDirection::ToClient);
     124
     125        registerVariable(this->speedAdd_, VariableDirection::ToClient);
     126        registerVariable(this->speedMultiply_, VariableDirection::ToClient);
    121127    }
    122128
     
    192198        }
    193199
    194         this->ship_->setAcceleration(this->ship_->getOrientation() * acceleration);
     200        this->ship_->setAcceleration(this->ship_->getOrientation() * (acceleration*this->getSpeedMultiply()+Vector3(0,0,-this->getSpeedAdd())));
    195201
    196202        if (!this->ship_->getPermanentBoost())
     
    241247            return Vector3::ZERO;
    242248    }
     249
     250    PickupCarrier* Engine::getCarrierParent(void)
     251    {
     252        return this->ship_;
     253    }
     254
     255    const Vector3& Engine::getCarrierPosition(void)
     256    {
     257        return this->ship_->getWorldPosition();
     258    }
    243259}
  • code/trunk/src/orxonox/items/Engine.h

    r6417 r6709  
    3535#include "Item.h"
    3636
     37#include "interfaces/PickupCarrier.h"
     38
    3739namespace orxonox
    3840{
    39     class _OrxonoxExport Engine : public Item, public Tickable
     41    class _OrxonoxExport Engine : public Item, public Tickable, public PickupCarrier
    4042    {
    4143        public:
     
    104106                { return this->accelerationUpDown_; }
    105107
     108            inline float getSpeedAdd(void)
     109                { return this->speedAdd_; }
     110            inline float getSpeedMultiply(void)
     111                { return this->speedMultiply_; }
     112
    106113            virtual const Vector3& getDirection() const;
     114
     115            virtual const Vector3& getCarrierPosition(void);
     116
     117            //TODO: Move to protected or private. How?
     118            inline void setSpeedAdd(float speedAdd)
     119                { this->speedAdd_=speedAdd; }
     120            inline void setSpeedMultiply(float speedMultiply)
     121                { this->speedMultiply_=speedMultiply; }
     122
     123        protected:
     124            virtual std::list<PickupCarrier*>* getCarrierChildren(void)
     125                { return new std::list<PickupCarrier*>(); }
     126            virtual PickupCarrier* getCarrierParent(void);
    107127
    108128        private:
     
    114134            float boostFactor_;
    115135            float speedFactor_;
     136
     137            float speedAdd_;
     138            float speedMultiply_;
    116139
    117140            float maxSpeedFront_;
  • code/trunk/src/orxonox/items/MultiStateEngine.cc

    r6417 r6709  
    129129                else
    130130                    this->state_ = Idle;
     131
     132                if (this->state_ == Idle && this->getSpeedAdd() > 0)
     133                    this->state_ = Normal;
    131134            }
    132135
  • code/trunk/src/orxonox/worldentities/pawns/SpaceShip.cc

    r6417 r6709  
    220220            engine->addToSpaceShip(this);
    221221    }
     222
     223    std::list<PickupCarrier*>* SpaceShip::getCarrierChildren(void)
     224    {
     225        std::list<PickupCarrier*>* list = new std::list<PickupCarrier*>();
     226        list->push_front(this->engine_);
     227        return list;
     228    }
    222229}
  • code/trunk/src/orxonox/worldentities/pawns/SpaceShip.h

    r5781 r6709  
    8686
    8787        protected:
     88            virtual std::list<PickupCarrier*>* getCarrierChildren(void);
    8889            bool bInvertYAxis_;
    8990
Note: See TracChangeset for help on using the changeset viewer.