// // Created by koncord on 18.02.17. // #ifndef OPENMW_CELL_HPP #define OPENMW_CELL_HPP #include #include #include #include #include class Player; class Cell; class CellController { private: CellController(); ~CellController(); CellController(CellController&); // not used public: static void create(); static void destroy(); static CellController *get(); public: typedef std::deque TContainer; typedef TContainer::iterator TIter; Cell * addCell(ESM::Cell cell); void removeCell(Cell *); void removePlayer(Cell *cell, Player *player); void deletePlayer(Player *player); Cell *getCell(ESM::Cell *esmCell); Cell *getCellByXY(int x, int y); Cell *getCellByName(std::string cellName); void update(Player *player); private: static CellController *sThis; TContainer cells; }; class Cell { friend class CellController; public: Cell(ESM::Cell cell); typedef std::deque TPlayers; typedef TPlayers::const_iterator Iterator; Iterator begin() const; Iterator end() const; void addPlayer(Player *player); void removePlayer(Player *player); TPlayers getPlayers() const; void sendToLoaded(mwmp::WorldPacket *worldPacket, mwmp::BaseEvent *baseEvent) const; std::string getDescription() const; private: TPlayers players; ESM::Cell cell; }; #endif //OPENMW_CELL_HPP