- Timestamp:
- Dec 19, 2010, 2:27:06 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/network5/src/libraries/network/GamestateManager.h
r7759 r7777 47 47 #include "core/CorePrereqs.h" 48 48 #include "packet/Gamestate.h" 49 #include <boost/concept_check.hpp> 49 50 50 51 namespace orxonox … … 67 68 * @author Oliver Scheuss 68 69 */ 69 class _NetworkExport GamestateManager: public GamestateHandler{ 70 class _NetworkExport GamestateManager: public GamestateHandler 71 { 72 struct peerInfo 73 { 74 uint32_t peerID; 75 uint32_t lastProcessedGamestateID; 76 uint32_t lastAckedGamestateID; 77 bool isSynched; 78 std::map< uint32_t, packet::Gamestate* > gamestates; 79 }; 80 70 81 public: 82 71 83 GamestateManager(); 72 84 ~GamestateManager(); 73 85 74 virtual bool add (packet::Gamestate *gs, unsigned int clientID);75 virtual bool ack (unsigned int gamestateID, unsigned int clientID);76 virtual uint32_t getLastProcessedGamestateID( unsigned int clientID );77 virtual uint32_t getCurrentGamestateID(){ return reference->getID(); }86 virtual bool addGamestate(packet::Gamestate *gs, unsigned int peerID); 87 virtual bool ackGamestate(unsigned int gamestateID, unsigned int peerID); 88 virtual uint32_t getLastProcessedGamestateID( unsigned int peerID ); 89 virtual uint32_t getCurrentGamestateID(){ return currentGamestate_->getID(); } 78 90 79 91 bool processGamestates(); 80 92 bool update(); 81 void sendGamestates(); 82 // packet::Gamestate *popGameState(unsigned int clientID); 83 void finishGamestate( unsigned int clientID, packet::Gamestate*& destgamestate, packet::Gamestate* base, packet::Gamestate* gamestate ); 93 std::vector<packet::Gamestate*> getGamestates(); 94 void finishGamestate( unsigned int peerID, packet::Gamestate*& destgamestate, packet::Gamestate* base, packet::Gamestate* gamestate ); 84 95 85 96 bool getSnapshot(); 86 97 87 void removeClient(ClientInformation *client); 98 void addPeer( uint32_t peerID ); 99 void setSynched( uint32_t peerID ) 100 { assert(peerMap_.find(peerID)!=peerMap_.end()); peerMap_[peerID].isSynched = true; } 101 void removePeer( uint32_t peerID ); 102 // void removeClient(ClientInformation *client); 88 103 private: 89 104 bool processGamestate(packet::Gamestate *gs); 90 105 91 std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> > gamestateMap_;106 // std::map<unsigned int, std::map<unsigned int, packet::Gamestate*> > gamestateMap_; 92 107 std::map<unsigned int, packet::Gamestate*> gamestateQueue; 93 std::map<unsigned int, uint32_t> lastProcessedGamestateID_; 94 packet::Gamestate *reference; 95 TrafficControl *trafficControl_; 108 // std::map<unsigned int, uint32_t> lastProcessedGamestateID_; 109 std::map<uint32_t, peerInfo> peerMap_; 110 packet::Gamestate* currentGamestate_; 111 // TrafficControl *trafficControl_; 96 112 unsigned int id_; 97 113 // boost::mutex* threadMutex_;
Note: See TracChangeset
for help on using the changeset viewer.