/*! * \file include/World.h * \brief The game world (model) * * \author Mongoose * \author xythobuz */ #ifndef _WORLD_H_ #define _WORLD_H_ #include <memory> #include <vector> #include "Entity.h" #include "Mesh.h" #include "Room.h" #include "SkeletalModel.h" #include "Sprite.h" #include "StaticMesh.h" /*! * \brief The game world (model) */ class World { public: /*! * \brief Deconstructs an object of World */ ~World(); /*! * \brief Clears all data in world */ void destroy(); void addRoom(Room* room); unsigned long sizeRoom(); Room& getRoom(unsigned long index); void addSprite(Sprite* sprite); unsigned long sizeSprite(); Sprite& getSprite(unsigned long index); void addSpriteSequence(SpriteSequence* sprite); unsigned long sizeSpriteSequence(); SpriteSequence& getSpriteSequence(unsigned long index); void addEntity(Entity* entity); unsigned long sizeEntity(); Entity& getEntity(unsigned long index); void addSkeletalModel(SkeletalModel* model); unsigned long sizeSkeletalModel(); SkeletalModel& getSkeletalModel(unsigned long index); void addStaticMesh(StaticMesh* model); unsigned long sizeStaticMesh(); StaticMesh& getStaticMesh(unsigned long index); void addMesh(Mesh* mesh); unsigned long sizeMesh(); Mesh& getMesh(unsigned long index); private: std::vector<std::unique_ptr<Room>> mRooms; std::vector<std::unique_ptr<Sprite>> mSprites; std::vector<std::unique_ptr<SpriteSequence>> mSpriteSequences; std::vector<std::unique_ptr<Entity>> mEntities; std::vector<std::unique_ptr<SkeletalModel>> mModels; std::vector<std::unique_ptr<StaticMesh>> mStaticMeshes; std::vector<std::unique_ptr<Mesh>> mMeshes; }; World& getWorld(); #endif