terom@3: #ifndef GAMESTATE_HH terom@3: #define GAMESTATE_HH terom@3: ekku@4: #include "Dimension.hh" ekku@4: terom@3: class GameState { terom@3: public: terom@3: Dimension map_dimensions; terom@3: std::list player_list; terom@3: terom@3: LocalPlayer &getLocalPlayer (void) { terom@3: // XXX: jotain terom@3: } terom@3: }; terom@3: terom@3: enum PlayerType { terom@3: PLAYER_LOCAL = 0x01; terom@3: PLAYER_REMOTE = 0x02; terom@3: }; terom@3: terom@3: class Player { terom@3: private: terom@3: Coordinate position; terom@3: terom@3: public: ekku@4: ekku@4: Player(Coordinate c) : position(c) {} ekku@4: terom@3: PlayerType type; terom@3: Dimensions dimensions; terom@3: ekku@4: Coordinate getPosition (void) const { terom@3: return this->position; terom@3: } terom@3: }; terom@3: terom@3: class LocalPlayer : public Player { terom@3: public: terom@3: void doMovement (PositionDelta d) { terom@3: this->position += d; terom@3: terom@3: // XXX: notify server terom@3: } terom@3: }; terom@3: terom@3: class RemotePlayer : public Player { terom@3: public: terom@3: void updatePosition (Position p) { terom@3: this->position = p; terom@3: } terom@3: } terom@3: terom@3: #endif