Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 28, 2010, 5:31:59 PM (14 years ago)
Author:
dafrick
Message:

Some documenting and cleaning up/re-organization in pickups module.

Location:
code/trunk/src/modules/pickup
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/modules/pickup/CollectiblePickup.cc

    r7285 r7494  
    3535
    3636#include "core/CoreIncludes.h"
     37
    3738#include "PickupCollection.h"
    3839
  • code/trunk/src/modules/pickup/CollectiblePickup.h

    r7493 r7494  
    4646        The CollectiblePickup class encompasses all @ref orxonox::Pickupable "Pickupables" that can be added to a @ref orxonox::PickupCollection "PickupCollection" and thus be part of such.
    4747
    48         All you need to do to make your @ref orxonox:.Pickupable "Pickupable" a CollectiblePickup is to, in some way, inherit from it. (The @ref orxonox::Pickup Pickup class, for example, is already a CollectiblePickup).
     48        All you need to do to make your @ref orxonox::Pickupable "Pickupable" a CollectiblePickup is to, in some way, inherit from it. (The @ref orxonox::Pickup "Pickup" class, for example, is already a CollectiblePickup).
    4949
    5050    @author
     
    6363            /**
    6464            @brief Check whether the given CollectiblePickup is par of a PickupCollection.
    65             @return Returns true if the ColelctiblePickup is part of a PickupCollection.
     65            @return Returns true if the CollectiblePickup is part of a PickupCollection.
    6666            */
    6767            bool isInCollection(void)
    6868                { return this->isInCollection_; }
    69            
     69
    7070            bool addToCollection(PickupCollection* collection); //!< Adds this CollectiblePickup to the input PickupCollection.
    7171            bool removeFromCollection(void); //!< Removes this CollectiblePickup from its PickupCollection.
     
    7575        protected:
    7676            virtual void preDestroy(void); //!< Is called by OrxonoxClass::destroy() before the object is actually destroyed.
    77             virtual void destroyPickup(void); //!< //!< Destroys a Pickupable.
     77            virtual void destroyPickup(void); //!< Destroys a Pickupable.
    7878
    7979        private:
  • code/trunk/src/modules/pickup/DroppedPickup.cc

    r7493 r7494  
    3535
    3636#include "core/CoreIncludes.h"
     37
    3738#include "interfaces/Pickupable.h"
    3839#include "interfaces/PickupCarrier.h"
    39 #include "graphics/Model.h"
    4040
    4141namespace orxonox
  • code/trunk/src/modules/pickup/Pickup.cc

    r7401 r7494  
    3636#include "core/CoreIncludes.h"
    3737#include "util/StringUtils.h"
     38
    3839#include "pickup/PickupIdentifier.h"
     40
    3941#include "DroppedPickup.h"
    40 
    41 #include "tools/Timer.h"
    4242
    4343namespace orxonox
     
    5151    CreateUnloadableFactory(Pickup);
    5252
     53    /**
     54    @brief
     55        Constructor. Registers and initializes the object.
     56    @param creator
     57        The objects creator.
     58    */
    5359    Pickup::Pickup(BaseObject* creator) : BaseObject(creator)
    5460    {
     
    5864    }
    5965
     66    /**
     67    @brief
     68        Destructor.
     69    */
    6070    Pickup::~Pickup()
    6171    {
     
    158168        else
    159169        {
    160             COUT(1) << "Invalid activationType in pickup." << std::endl;
     170            COUT(1) << "Invalid activationType '" << type << "' in pickup." << std::endl;
    161171        }
    162172    }
     
    180190        else
    181191        {
    182             COUT(1) << "Invalid durationType in pickup." << std::endl;
     192            COUT(1) << "Invalid durationType '" << type << "' in pickup." << std::endl;
    183193        }
    184194    }
     
    193203        SUPER(Pickup, changedPickedUp);
    194204
    195         //! Sets the Pickup to used if the Pickup has activation type 'immediate' and gets picked up.
     205        // Sets the Pickup to used if the Pickup has activation type 'immediate' and gets picked up.
    196206        if(this->isPickedUp() && this->isImmediate())
    197         {
    198207            this->setUsed(true);
    199         }
    200     }
    201 
    202     /**
    203     @brief
    204         Creates a duplicate of the Pickup.
    205     @return
    206         Returns the clone of this pickup as a pointer to a Pickupable.
     208    }
     209
     210    /**
     211    @brief
     212        Creates a duplicate of the OrxonoxClass.
     213    @param item
     214        A reference to the pointer of the item that we're duplicating.
    207215    */
    208216    void Pickup::clone(OrxonoxClass*& item)
  • code/trunk/src/modules/pickup/Pickup.h

    r7456 r7494  
    4848{
    4949
    50     //! Enum for the activation type.
     50    //! Enum for the @ref orxonox::Pickup "Pickup" activation type.
    5151    namespace pickupActivationType
    5252    {
    5353        enum Value
    5454        {
    55             immediate,
    56             onUse,
     55            immediate, //!< Means that the @ref orxonox::Pickup "Pickup" will be used immediately after pickup.
     56            onUse, //!< Means that the @ref orxonox::Pickup "Pickup" will be used at a later point trough some external influence.
    5757        };
    5858    }
    5959
    60     //! Enum for the duration tyoe.
     60    //! Enum for the @ref orxonox::Pickup "Pickup" duration type.
    6161    namespace pickupDurationType
    6262    {
    6363        enum Value
    6464        {
    65             once,
    66             continuous,
     65            once, //!< Means that the @ref orxonox::Pickup "Pickup" will be used only once at a singular time instant.
     66            continuous, //!< Means that the @ref orxonox::Pickup "Pickup" will be used over a continuous timespan.
    6767        };
    6868    }
     
    7070    /**
    7171    @brief
    72         Pickup class. Offers base functionality for a wide range of pickups.
    73         Pickups ingeriting from this class cann choose an activation type and a duration type.
     72        The Pickup class offers (useful) base functionality for a wide range of pickups.
     73
     74        Pickups ingeriting from this class can choose an activation type and a duration type.
     75        - The <b>activation type</b> deals with what happens to the Pickup as soon as it is picked up. It can either be set to <em>immediate</em>, which means that the Pickup is activated/used immediately upon being picked up. Or to <em>onUse</em>, which means, that the Pickup will be activated/used if some outside entity (most commonly the player through the PickupInventory) decides to use it.
     76        - The <b>duration type</b> deals with whether the Pickup has a continuous effect or whether its effect is focused on a singular instant. It can either be set to <em>once</em>, which means, that the Pickup just has an effect (at a singular instant in time) and is done once that effect has been applied. Or to <em>continuous</em>, which means that the effect of the Pickup unfolds over some timespan.
     77
     78        If it were not an abstract class it could for example be used as follows in XML.
     79        @code
     80        <Pickup activationType="onUse" durationType="continuous" />
     81        @endcode
     82        In reality you can (naturally) use the parameters <b>activation type</b> and <b>duration type</b> in any pickup inheriting from Pickup, unless the pickup already specifies one (or both) of the parameters.
     83
    7484    @author
    7585        Damian 'Mozork' Frick
     
    8595
    8696            /**
    87             @brief Get the activation type of the pickup.
    88             @return Returns the activation type of the pickup.
     97            @brief Get the activation type of the Pickup.
     98            @return Returns the activation type of the Pickup.
    8999            */
    90100            inline pickupActivationType::Value getActivationTypeDirect(void)
    91101                { return this->activationType_; }
    92102            /**
    93             @brief Get the duration type of the pickup.
    94             @return Returns the duration type of the pickup.
     103            @brief Get the duration type of the Pickup.
     104            @return Returns the duration type of the Pickup.
    95105            */
    96106            inline pickupDurationType::Value getDurationTypeDirect(void)
    97107                { return this->durationType_; }
    98108
    99             const std::string& getActivationType(void); //!< Get the activation type of the pickup.
    100             const std::string& getDurationType(void); //!< Get the duration type of the pickup.
     109            const std::string& getActivationType(void); //!< Get the activation type of the Pickup.
     110            const std::string& getDurationType(void); //!< Get the duration type of the Pickup.
    101111
    102112            /**
     
    127137            virtual void changedPickedUp(void); //!< Should be called when the pickup has transited from picked up to dropped or the other way around.
    128138
    129             virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the Pickup.
     139            virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the OrxonoxClass.
    130140
    131141        protected:
     
    135145
    136146            /**
    137             @brief Set the activation type of the pickup.
    138             @param type The activation type of the pickup.
     147            @brief Set the activation type of the Pickup.
     148            @param type The activation type of the Pickup.
    139149            */
    140150            inline void setActivationTypeDirect(pickupActivationType::Value type)
    141151                { this->activationType_ = type; }
    142152            /**
    143             @brief Set the duration type of the pickup.
    144             @param type The duration type of the pickup.
     153            @brief Set the duration type of the Pickup.
     154            @param type The duration type of the Pickup.
    145155            */
    146156            inline void setDurationTypeDirect(pickupDurationType::Value type)
    147157                { this->durationType_ = type; }
    148158
    149             void setActivationType(const std::string& type); //!< Set the activation type of the pickup.
    150             void setDurationType(const std::string& type); //!< Set the duration type of the pickup
     159            void setActivationType(const std::string& type); //!< Set the activation type of the Pickup.
     160            void setDurationType(const std::string& type); //!< Set the duration type of the Pickup.
    151161
    152162        private:
     
    154164
    155165            pickupActivationType::Value activationType_; //!< The activation type of the Pickup.
    156             pickupDurationType::Value durationType_; //!< The duration type of the pickup.
     166            pickupDurationType::Value durationType_; //!< The duration type of the Pickup.
    157167
    158168            //! Strings for the activation and duration types.
  • code/trunk/src/modules/pickup/PickupCollection.cc

    r7401 r7494  
    3434#include "core/CoreIncludes.h"
    3535#include "core/XMLPort.h"
     36
    3637#include "interfaces/PickupCarrier.h"
     38
    3739#include "CollectiblePickup.h"
    3840#include "DroppedPickup.h"
     
    4951    @brief
    5052        Default Constructor.
     53    @param creator
     54        The creator of the object.
    5155    */
    5256    PickupCollection::PickupCollection(BaseObject* creator) : BaseObject(creator)
     
    201205    /**
    202206    @brief
    203         Creates a duplicate of the input OrxonoxClass.
     207        Creates a duplicate of the input Pickupable.
    204208        This method needs to be implemented by any Class inheriting from Pickupable.
    205209    @param item
  • code/trunk/src/modules/pickup/PickupCollection.h

    r7456 r7494  
    4848    /**
    4949    @brief
    50         The PickupCollection combines different Pickupables to a coherent, single pickup and makes them seem (from the outside looking in) just as if they were just one Pickupable.
     50        The PickupCollection combines different @ref orxonox::Pickupable "Pickupables" (more precisely @ref orxonox::CollectiblePickup "CollectiblePickups") to a coherent, single pickup and makes them seem (from the outside looking in) just as if they were just one @ref orxonox::Pickupable "Pickupable".
     51
     52        To differentiate between different types of @ref orxonox::PickupCollection "PickupCollections" (just as we differentiate between different types of @ref orxonox::Pickupable "Pickupables") we define a new identifyer called the @ref orxonox::PickupCollectionIdentifier "PickupCollectionIdentifier" which has pretty much the same properties as the @ref orxonox::PickupIdentifier "PickupIdentifier" but extende to @ref orxonox::PickupCollection "PickupCollections".
     53
     54        A PickupCollection can be created in XML as follows:
     55        @code
     56        <PickupCollection>
     57            <pickupables>
     58                <CollectiblePickup ... />
     59                ...
     60                <CollectiblePickup ... />
     61            </pickupables>
     62        </PickupCollection>
     63        @endcode
     64
    5165    @author
    5266        Damian 'Mozork' Frick
     
    6579            virtual void changedPickedUp(void); //!< Is called when the pickup has transited from picked up to dropped or the other way around.
    6680
    67             virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the input OrxonoxClass.
     81            virtual void clone(OrxonoxClass*& item); //!< Creates a duplicate of the input pickup.
    6882
    6983            virtual bool isTarget(PickupCarrier* carrier) const; //!< Get whether a given class, represented by the input Identifier, is a target of this PickupCollection.
     
    88102            void changedUsedAction(void); //!< Helper method.
    89103            void changedPickedUpAction(void); //!< Helper method.
    90            
     104
    91105            std::vector<CollectiblePickup*> pickups_; //!< The list of the pointers of all the Pickupables this PickupCollection consists of. They are weak pointers to facilitate testing, whether the pointers are still valid.
    92106
  • code/trunk/src/modules/pickup/PickupCollectionIdentifier.cc

    r7401 r7494  
    6767    int PickupCollectionIdentifier::compare(const PickupIdentifier* identifier) const
    6868    {
     69        assert(identifier);
     70
    6971        // Slight un-niceity to cast the PickupIdentifier to a PickupCollectionIdentifier.
    7072        PickupIdentifier* temp = const_cast<PickupIdentifier*>(identifier);
    71         const PickupCollectionIdentifier* collectionIdentifier = dynamic_cast<PickupCollectionIdentifier*>(temp);
     73        const PickupCollectionIdentifier* collectionIdentifier = orxonox_cast<PickupCollectionIdentifier*>(temp);
    7274
    7375        // If the input PickupIdentifier 'identifier' is no PickupCollectionIdentifier then just the two PickupIdentifiers are compared.
     
    9294        }
    9395
    94         //! Means they are equal.
     96        // Means they are equal.
    9597        return 0;
    9698    }
  • code/trunk/src/modules/pickup/PickupCollectionIdentifier.h

    r7456 r7494  
    3838#include "PickupPrereqs.h"
    3939
     40#include <set>
     41
    4042#include "pickup/PickupIdentifier.h"
    41 
    42 #include <set>
    4343
    4444namespace orxonox
     
    4747    /**
    4848    @brief
    49         The PickupCollectionIdentifier is the specialization of the PickupIdentifier for the PickupCollection class.
    50         It identifies PickupCollections based on the different Pickupables they consist of.
    51         Pickupables can be added to the PickupCollectionIdentifier via the addPickup method.
     49        The PickupCollectionIdentifier is the specialization of the PickupIdentifier for the @ref orxonox::PickupCollection "PickupCollection" class.
     50        It identifies @ref orxonox::PickupCollection "PickupCollections" based on the different @ref orxonox::CollectiblePickup "CollectiblePickups" they consist of.
     51
     52        @ref orxonox::Pickupable "Pickupables" (resp. @ref orxonox::CollectiblePickup "CollectiblePickups") can be added to the PickupCollectionIdentifier via the addPickup method.
    5253    @author
    5354        Damian 'Mozork' Frick
     
    6263            virtual int compare(const PickupIdentifier* identifier) const; //!< Compares a PickupCollectionIdentifier with a PickupIdentifier.
    6364
    64             void addPickup(const PickupIdentifier* identifier); //!< Add a Pickupable to the PickupCollectionIdentifier.
     65            void addPickup(const PickupIdentifier* identifier); //!< Add a @ref orxonox::Pickupable "Pickupable" to the PickupCollectionIdentifier.
    6566
    6667        private:
    67             std::set<const PickupIdentifier*, PickupIdentifierCompare> identifiers_; //!< The set of PickupIdentifiers of the Pickupables the PickupCollection with this PickupCollectionIdentifier consists of, ordered by the rule set by PickupIdentifierCompare.
     68            std::set<const PickupIdentifier*, PickupIdentifierCompare> identifiers_; //!< The set of PickupIdentifiers of the @ref orxonox::Pickupable "Pickupables", the @ref orxonox::PickupCollection "PickupCollection" with this PickupCollectionIdentifier consists of, ordered by the rule set by @ref orxonox::PickupIdentifierCompare "PickupIdentifierCompare".
    6869
    6970    };
  • code/trunk/src/modules/pickup/PickupManager.cc

    r7284 r7494  
    2121 *
    2222 *   Author:
    23  *      ...
     23 *      Damian 'Mozork' Frick
    2424 *   Co-authors:
    2525 *      ...
     
    100100    bool PickupManager::registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
    101101    {
    102         if(identifier == NULL || representation == NULL || this->representations_.find(identifier) != this->representations_.end()) //!< If the Pickupable already has a Representation registered.
     102        assert(identifier);
     103        assert(representation);
     104
     105        if(this->representations_.find(identifier) != this->representations_.end()) // If the Pickupable already has a Representation registered.
    103106            return false;
    104107
    105108        this->representations_[identifier] = representation;
    106109
    107         COUT(4) << "PickupRepresentation " << representation << " registered with the PickupManager." << std::endl;
     110        COUT(4) << "PickupRepresentation &" << representation << " registered with the PickupManager." << std::endl;
    108111        return true;
    109112    }
     
    121124    bool PickupManager::unregisterRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation)
    122125    {
    123         if(identifier == NULL || representation == NULL)
    124             return false;
     126        assert(identifier);
     127        assert(representation);
    125128
    126129        std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare>::iterator it = this->representations_.find(identifier);
     
    130133        this->representations_.erase(it);
    131134
    132         COUT(4) << "PickupRepresentation " << representation << " unregistered with the PickupManager." << std::endl;
     135        COUT(4) << "PickupRepresentation &" << representation << " unregistered with the PickupManager." << std::endl;
    133136        return true;
    134137    }
     
    167170        if(pickup != NULL)
    168171            return this->getRepresentation(pickup->getPickupIdentifier());
    169        
     172
    170173        return NULL;
    171174    }
     
    268271        if(pickup == NULL)
    269272            return;
    270        
     273
    271274        std::map<Pickupable*, WeakPtr<Pickupable> >::iterator it = this->pickupsList_.find(pickup); // Get the WeakPointer of the Pickupable.
    272275        // If either the input Pickupable is not in the PickupManagers list or it no longer exists, the method returns.
  • code/trunk/src/modules/pickup/PickupSpawner.h

    r7456 r7494  
    5151            The PickupSpawner class is responsible for spawning pickups of a specific type.
    5252            Forthermore it can be specified how long the time interval between spawning two items is and how many pickups are spawned at maximum, amongst other things.
     53
    5354        @author
    5455            Daniel 'Huty' Haggenmueller
     56        @author
    5557            Damian 'Mozork' Frick
    5658    */
Note: See TracChangeset for help on using the changeset viewer.