Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/pickup4/src/modules/pickup/PickupManager.h @ 6675

Last change on this file since 6675 was 6675, checked in by dafrick, 15 years ago

Lua bugs fixed.
Renamed name and description in PickupRepresentation to pickupName and pickupDescription to avoid problems.
More work on PickupInventory.

File size: 3.7 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Damian 'Mozork' Frick
24 *   Co-authors:
25 *      ...
26 *
27*/
28
29/**
30    @file PickupManager.h
31    @brief Definition of the PickupManager class.
32*/
33
34#ifndef _PickupManager_H__
35#define _PickupManager_H__
36
37#include "PickupPrereqs.h"
38
39#include <map>
40#include "util/Singleton.h"
41#include "pickup/PickupIdentifier.h"
42#include "PickupRepresentation.h"
43
44#include "core/OrxonoxClass.h"
45
46namespace orxonox // tolua_export
47{ // tolua_export
48
49    /**
50    @brief
51        Manages Pickupables.
52        In essence has two tasks to fulfill. Firstly it must link Pickupables (through their PickupIdentifiers) and their PickupRepresentations. Secondly it manages the PickupInventory.
53        //TODO: Manage Pickup GUI.
54    @author
55        Damian 'Mozork' Frick
56    */
57    class _PickupExport PickupManager // tolua_export
58        : public Singleton<PickupManager>, public OrxonoxClass
59    { // tolua_export
60        friend class Singleton<PickupManager>;
61       
62        public:
63            PickupManager();
64            virtual ~PickupManager();
65           
66            static PickupManager& getInstance() { return Singleton<PickupManager>::getInstance(); } // tolua_export
67           
68            bool registerRepresentation(const PickupIdentifier* identifier, PickupRepresentation* representation); //!< Registers a PickupRepresentation together with the PickupIdentifier of the Pickupable the PickupRepresentation represents.
69            PickupRepresentation* getRepresentation(const PickupIdentifier* identifier); //!< Get the PickupRepresentation representing the Pickupable with the input PickupIdentifier.
70           
71            // tolua_begin
72            orxonox::PickupCarrier* getPawn(void);
73           
74            int getNumCarrierChildren(orxonox::PickupCarrier* carrier);
75            orxonox::PickupCarrier* getCarrierChild(int index, orxonox::PickupCarrier* carrier);
76           
77            const std::string& getCarrierName(orxonox::PickupCarrier* carrier);
78           
79            int getNumPickups(orxonox::PickupCarrier* carrier);
80            PickupRepresentation* getPickupRepresentation(int index, orxonox::PickupCarrier* carrier);
81            void dropPickup(int index, orxonox::PickupCarrier* carrier);
82            void usePickup(int index, orxonox::PickupCarrier* carrier, bool use);
83            // tolua_end
84           
85        private:
86            static PickupManager* singletonPtr_s;
87            static const std::string guiName_s;
88           
89            PickupRepresentation* defaultRepresentation_; //!< The default PickupRepresentation.
90            std::map<const PickupIdentifier*, PickupRepresentation*, PickupIdentifierCompare> representations_; //!< Map linking PickupIdentifiers (representing types if Pickupables) and PickupRepresentations.
91       
92    }; // tolua_export
93   
94} // tolua_export
95
96#endif // _PickupManager_H__
Note: See TracBrowser for help on using the repository browser.