Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Mar 29, 2010, 12:30:32 PM (14 years ago)
Author:
dafrick
Message:

Working towards a functioning PickupInventory.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/pickup4/src/orxonox/interfaces/PickupCarrier.h

    r6563 r6632  
    4545#include "core/OrxonoxClass.h"
    4646
    47 namespace orxonox
    48 {
    49 
    50     //! Pre-declarations.
     47namespace orxonox // tolua_export
     48{ // tolua_export
     49
     50    //! Forward-declarations.
     51    class PickupManager;
    5152    class Pickup;
    5253    class HealthPickup;
     
    5960        Damian 'Mozork' Frick
    6061    */
    61     class _OrxonoxExport PickupCarrier : virtual public OrxonoxClass
    62     {
     62    class _OrxonoxExport PickupCarrier  // tolua_export
     63        : virtual public OrxonoxClass
     64    { // tolua_export
    6365        //! So that the different Pickupables have full access to their PickupCarrier.
     66        friend class Pickupable;
     67        friend class PickupManager;
    6468        //! Friends.
    65         friend class Pickupable;
    6669        friend class Pickup;
    6770        friend class HealthPickup;
     
    116119                   
    117120                    //! Go recursively through all children to check whether they are a target.
    118                     std::list<PickupCarrier*>* children = this->getCarrierChildren();
    119                     for(std::list<PickupCarrier*>::const_iterator it = children->begin(); it != children->end(); it++)
     121                    std::vector<PickupCarrier*>* children = this->getCarrierChildren();
     122                    for(std::vector<PickupCarrier*>::const_iterator it = children->begin(); it != children->end(); it++)
    120123                    {
    121124                        if((*it)->isTarget(pickup))
     
    143146                   
    144147                    //! Go recursively through all children to check whether they are the target.
    145                     std::list<PickupCarrier*>* children = this->getCarrierChildren();
    146                     for(std::list<PickupCarrier*>::iterator it = children->begin(); it != children->end(); it++)
     148                    std::vector<PickupCarrier*>* children = this->getCarrierChildren();
     149                    for(std::vector<PickupCarrier*>::iterator it = children->begin(); it != children->end(); it++)
    147150                    {
    148151                        if(pickup->isTarget(*it))
     
    162165            */
    163166            virtual const Vector3& getCarrierPosition(void) = 0;
     167           
     168            const std::string& getCarrierName(void) { return this->carrierName_; } // tolua_export
    164169           
    165170        protected:       
     
    170175            @return Returns a pointer to a list of all direct children.
    171176            */
    172             virtual std::list<PickupCarrier*>* getCarrierChildren(void) = 0;
     177            virtual std::vector<PickupCarrier*>* getCarrierChildren(void) = 0;
    173178            /**
    174179            @brief Get the parent of this PickupSpawner
     
    184189            std::set<Pickupable*>& getPickups(void)
    185190                { return this->pickups_; }
     191               
     192            void setCarrierName(const std::string& name)
     193                { this->carrierName_ = name; }
    186194       
    187195        private:
    188196            std::set<Pickupable*> pickups_; //!< The list of Pickupables carried by this PickupCarrier.
    189            
    190     };
    191 }
     197            std::string carrierName_;
     198           
     199            unsigned int getNumCarrierChildren(void)
     200                {
     201                    std::vector<PickupCarrier*>* list = this->getCarrierChildren();
     202                    unsigned int size = list->size();
     203                    delete list;
     204                    return size;
     205                }
     206           
     207            PickupCarrier* getCarrierChild(unsigned int index)
     208                {
     209                    std::vector<PickupCarrier*>* list = this->getCarrierChildren();
     210                    if(list->size() < index)
     211                        return NULL;
     212                    PickupCarrier* carrier = (*list)[index];
     213                    delete list;
     214                    return carrier;
     215                }
     216           
     217            Pickupable* getPickup(unsigned int index)
     218                {
     219                    std::set<Pickupable*>::iterator it;
     220                    for(it = this->pickups_.begin(); index != 0 && it != this->pickups_.end(); it++)
     221                        index--;
     222                    if(it == this->pickups_.end())
     223                        return NULL;
     224                    return *it;
     225                }
     226           
     227            unsigned int getNumPickups(void)
     228                { return this->pickups_.size(); }
     229           
     230           
     231    }; // tolua_export
     232} // tolua_export
    192233
    193234#endif /* _PickupCarrier_H__ */
Note: See TracChangeset for help on using the changeset viewer.