Changeset 8096 in orxonox.OLD for branches/network/src/lib
- Timestamp:
- Jun 1, 2006, 6:36:55 PM (19 years ago)
- Location:
- branches/network/src/lib/network
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/network/src/lib/network/message_manager.h
r8068 r8096 29 29 { 30 30 TESTMESSAGEID = 1, 31 MSGID_DELETESYNCHRONIZEABLE 31 MSGID_DELETESYNCHRONIZEABLE, 32 MSGID_PREFEREDTEAM 32 33 }; 33 34 -
branches/network/src/lib/network/network_game_manager.cc
r8068 r8096 59 59 60 60 MessageManager::getInstance()->registerMessageHandler( MSGID_DELETESYNCHRONIZEABLE, delSynchronizeableHandler, NULL ); 61 MessageManager::getInstance()->registerMessageHandler( MSGID_PREFEREDTEAM, preferedTeamHandler, NULL ); 61 62 62 63 this->gameState = 0; … … 86 87 87 88 int team = rules.getTeamForNewUser(); 88 ClassID playableClassId = rules.getPlayableClassId( team );89 std::string playableModel = rules.getPlayableModelFileName( team, playableClassId );89 ClassID playableClassId = rules.getPlayableClassId( userId, team ); 90 std::string playableModel = rules.getPlayableModelFileName( userId, team, playableClassId ); 90 91 91 92 BaseObject * bo = Factory::fabricate( playableClassId ); … … 180 181 181 182 182 183 184 183 /** 184 * handler for MSGID_PREFEREDTEAM message 185 * @param messageId 186 * @param data 187 * @param dataLength 188 * @param someData 189 * @param userId 190 * @return 191 */ 192 bool NetworkGameManager::preferedTeamHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId ) 193 { 194 assert( NetworkGameManager::getInstance()->isServer() ); 195 196 int teamId = 0; 197 int len = Converter::byteArrayToInt( data, &teamId ); 198 199 if ( len != dataLength ) 200 { 201 PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, userId); 202 return true; 203 } 204 205 NetworkGameManager::getInstance()->setPreferedTeam( userId, teamId ); 206 } 207 208 void NetworkGameManager::setPreferedTeam( int userId, int teamId ) 209 { 210 if ( !PlayerStats::getStats( userId ) ) 211 return; 212 213 PlayerStats & stats = *(PlayerStats::getStats( userId )); 214 215 stats.setPreferedTeamId( teamId ); 216 217 } 218 219 /** 220 * set prefered team for this host 221 * @param teamId 222 */ 223 void NetworkGameManager::prefereTeam( int teamId ) 224 { 225 if ( isServer() ) 226 setPreferedTeam( getHostID(), teamId ); 227 else 228 { 229 byte buf[INTSIZE]; 230 231 assert( Converter::intToByteArray( teamId, buf, INTSIZE) == INTSIZE ); 232 233 MessageManager::getInstance()->sendMessage( MSGID_PREFEREDTEAM, buf, INTSIZE, RT_USER, 0, MP_HIGHBANDWIDTH ); 234 } 235 } 236 237 238 239 -
branches/network/src/lib/network/network_game_manager.h
r8068 r8096 56 56 57 57 void removeSynchronizeable( int uniqueId ); 58 59 void prefereTeam( int teamId ); 58 60 59 61 inline void setGameState( int gameState ){ this->gameState = gameState; } … … 64 66 65 67 static bool delSynchronizeableHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId ); 68 static bool preferedTeamHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId ); 69 70 void setPreferedTeam( int userId, int teamId ); 66 71 67 72 static NetworkGameManager* singletonRef; -
branches/network/src/lib/network/player_stats.cc
r8068 r8096 86 86 87 87 PRINTF(0)("uniqueID changed %d %d\n", userId, getHostID()); 88 89 if ( userId == getHostID() )90 State::getPlayer()->setPlayable( getPlayable() );91 88 } 92 89 } … … 100 97 { 101 98 const std::list<BaseObject*> * list = ClassList::getList( CL_PLAYER_STATS ); 99 100 if ( !list ) 101 return NULL; 102 102 103 103 for ( std::list<BaseObject*>::const_iterator it = list->begin(); it != list->end(); it++ ) … … 121 121 const std::list<BaseObject*> * list = ClassList::getList( CL_PLAYABLE ); 122 122 123 if ( !list ) 124 { 125 this->playableUniqueId = uniqueId; 126 return; 127 } 128 123 129 this->playable = NULL; 124 130 for ( std::list<BaseObject*>::const_iterator it = list->begin(); it != list->end(); it++ ) … … 130 136 } 131 137 } 138 139 if ( /*this->playable &&*/ userId == getHostID() ) 140 State::getPlayer()->setPlayable( this->playable ); 132 141 133 142 this->playableUniqueId = uniqueId; -
branches/network/src/lib/network/synchronizeable.cc
r8068 r8096 108 108 109 109 for ( SyncVarList::iterator it = syncVarList.begin(); it != syncVarList.end(); it++ ) 110 { 111 //PRINTF(0)("SIZE = %d %s\n", (*it)->getSize(), (*it)->getName().c_str()); 110 112 neededSize += (*it)->getSize(); 113 } 111 114 112 115 if ( !( neededSize <= maxLength ) ) … … 183 186 ); 184 187 185 if ( ( hasPermission && (*it)->getPriority() >= priorityTH ) || sizeIter == stateFrom->sizeList.end() )188 if ( ( sizeIter != stateFrom->sizeList.end() && *sizeIter != (*it)->getSize() ) || ( hasPermission && (*it)->getPriority() >= priorityTH ) || sizeIter == stateFrom->sizeList.end() ) 186 189 { 187 190 n = (*it)->writeToBuf( stateTo->data+i, stateTo->dataLength - i ); … … 209 212 sentStates[userId].push_back( stateTo ); 210 213 211 assert( i == neededSize ); 214 if ( i != neededSize ) 215 { 216 PRINTF(0)("strange error: (%s) %d != %d\n", this->getClassName(), i, neededSize); 217 assert(false); 218 } 212 219 213 220 //write diff to data -
branches/network/src/lib/network/synchronizeable_var/synchronizeable_string.cc
r7954 r8096 48 48 49 49 assert( res > 0 ); 50 assert( res == vPtrIn->length()+INTSIZE ); 50 51 51 52 return res;
Note: See TracChangeset
for help on using the changeset viewer.