Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 4, 2006, 11:01:28 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: merged the proxy bache back with no conflicts

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/network/network_game_manager.cc

    r9494 r9656  
    6868
    6969  this->gameState = 0;
    70   registerVar( new SynchronizeableInt( &gameState, &gameState, "gameState" ) );
     70  registerVar( new SynchronizeableInt( &gameState, &gameState, "gameState", PERMISSION_MASTER_SERVER ) );
    7171}
    7272
     
    9191bool NetworkGameManager::signalNewPlayer( int userId )
    9292{
    93   assert( SharedNetworkData::getInstance()->isMasterServer() ||  SharedNetworkData::getInstance()->isProxyServerActive());
     93  assert( SharedNetworkData::getInstance()->isMasterServer());
    9494  assert( State::getGameRules() );
    9595  assert( State::getGameRules()->isA( CL_NETWORK_GAME_RULES ) );
     
    9797  NetworkGameRules & rules = *(dynamic_cast<NetworkGameRules*>(State::getGameRules()));
    9898
    99   int team = rules.getTeamForNewUser();
    100   ClassID playableClassId = rules.getPlayableClassId( userId, team );
    101   std::string playableModel = rules.getPlayableModelFileName( userId, team, playableClassId );
    102   std::string playableTexture = rules.getPlayableModelFileName( userId, team, playableClassId );
    103   float       playableScale = rules.getPlayableScale( userId, team, playableClassId );
     99  int          team = rules.getTeamForNewUser();
     100  ClassID      playableClassId = rules.getPlayableClassId( userId, team );
     101  std::string  playableModel = rules.getPlayableModelFileName( userId, team, playableClassId );
     102  std::string  playableTexture = rules.getPlayableModelFileName( userId, team, playableClassId );
     103  float        playableScale = rules.getPlayableScale( userId, team, playableClassId );
    104104
    105105  BaseObject * bo = Factory::fabricate( playableClassId );
     
    111111
    112112  playable.loadMD2Texture( playableTexture );
    113 
     113  playable.setTeam(team);
    114114  playable.loadModel( playableModel, 100.0f );
    115115  playable.setOwner( userId );
     
    159159/**
    160160 * handler for remove synchronizeable messages
    161  * @param messageId
     161 * @param messageType
    162162 * @param data
    163163 * @param dataLength
     
    166166 * @return true on successfull handling else handler will be called again
    167167 */
    168 bool NetworkGameManager::delSynchronizeableHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId )
     168bool NetworkGameManager::delSynchronizeableHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId )
    169169{
    170170
     
    172172
    173173  if ( SharedNetworkData::getInstance()->isMasterServer() ||
    174        SharedNetworkData::getInstance()->isProxyServerActive() && SharedNetworkData::getInstance()->isUserClient(userId))
    175   {
    176     PRINTF(0)("Recieved DeleteSynchronizeable message from client %d!\n", userId);
     174       SharedNetworkData::getInstance()->isProxyServerActive() && SharedNetworkData::getInstance()->isUserClient(senderId))
     175  {
     176    PRINTF(0)("Recieved DeleteSynchronizeable message from client %d!\n", senderId);
    177177    return true;
    178178  }
     
    183183  if ( len != dataLength )
    184184  {
    185     PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, userId);
     185    PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, senderId);
    186186    return true;
    187187  }
     
    217217  assert( Converter::intToByteArray( uniqueId, buf, INTSIZE ) == INTSIZE );
    218218
    219   MessageManager::getInstance()->sendMessage( MSGID_DELETESYNCHRONIZEABLE, buf, INTSIZE, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
     219  MessageManager::getInstance()->sendMessage( MSGID_DELETESYNCHRONIZEABLE, buf, INTSIZE, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
    220220}
    221221
     
    224224/**
    225225 * handler for MSGID_PREFEREDTEAM message
    226  * @param messageId
     226 * @param messageType
    227227 * @param data
    228228 * @param dataLength
     
    231231 * @return
    232232 */
    233 bool NetworkGameManager::preferedTeamHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId )
    234 {
    235   assert( SharedNetworkData::getInstance()->isMasterServer() ||  SharedNetworkData::getInstance()->isProxyServerActive());
     233bool NetworkGameManager::preferedTeamHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId )
     234{
     235  assert( SharedNetworkData::getInstance()->isMasterServer() );
    236236
    237237  int teamId = 0;
     
    240240  if ( len != dataLength )
    241241  {
    242     PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, userId);
     242    PRINTF(2)("Recieved DeleteSynchronizeable message with incorrect size (%d) from client %d!\n", dataLength, senderId);
    243243    return true;
    244244  }
    245245
    246   NetworkGameManager::getInstance()->setPreferedTeam( userId, teamId );
    247 
    248   return true;
    249 }
    250 
     246  PRINTF(0)("Client %i wishes to play in team %i\n", senderId, teamId);
     247  NetworkGameManager::getInstance()->setPreferedTeam( senderId, teamId );
     248
     249  return true;
     250}
     251
     252
     253/**
     254 * this actualy sets the new prefered team id
     255 * @param userId: the user that changes team
     256 * @param teamId: the new team id for the user
     257 */
    251258void NetworkGameManager::setPreferedTeam( int userId, int teamId )
    252259{
     
    259266}
    260267
     268
    261269/**
    262270 * set prefered team for this host
     
    265273void NetworkGameManager::prefereTeam( int teamId )
    266274{
    267   if ( SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/)
    268     setPreferedTeam( SharedNetworkData::getInstance()->getHostID(), teamId );
     275  if ( SharedNetworkData::getInstance()->isMasterServer() )
     276    this->setPreferedTeam( SharedNetworkData::getInstance()->getHostID(), teamId );
    269277  else
    270278  {
     
    273281    assert( Converter::intToByteArray( teamId, buf, INTSIZE) == INTSIZE );
    274282
    275     MessageManager::getInstance()->sendMessage( MSGID_PREFEREDTEAM, buf, INTSIZE, RT_USER, 0, MP_HIGHBANDWIDTH );
     283    // send this message to the master server
     284    MessageManager::getInstance()->sendMessage( MSGID_PREFEREDTEAM, buf, INTSIZE, RT_USER, NET_ID_MASTER_SERVER, MP_HIGHBANDWIDTH );
    276285  }
    277286}
     
    306315
    307316
    308 bool NetworkGameManager::chatMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId )
    309 {
    310   PRINTF(0)("NetworkGameManager::chatMessageHandler %d %d\n", userId, SharedNetworkData::getInstance()->getHostID() );
    311   if ( (SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/) && userId !=  SharedNetworkData::getInstance()->getHostID() )
    312   {
    313     MessageManager::getInstance()->sendMessage( messageId, data, dataLength, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
     317bool NetworkGameManager::chatMessageHandler( MessageType messageType, byte * data, int dataLength, void * someData, int senderId, int destinationId )
     318{
     319  PRINTF(0)("NetworkGameManager::chatMessageHandler %d %d\n", senderId, SharedNetworkData::getInstance()->getHostID() );
     320  if ( (SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/) && senderId !=  SharedNetworkData::getInstance()->getHostID() )
     321  {
     322    MessageManager::getInstance()->sendMessage( messageType, data, dataLength, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
    314323  }
    315324
     
    321330  if ( dataLength < 3*INTSIZE )
    322331  {
    323     PRINTF(2)("got too small chatmessage from client %d\n", userId);
     332    PRINTF(2)("got too small chatmessage from client %d\n", senderId);
    324333
    325334    return true;
    326335  }
    327336
    328   int messageType = 0;
    329   Converter::byteArrayToInt( data, &messageType );
     337  int chatType = 0;
     338  Converter::byteArrayToInt( data, &chatType);
    330339  int senderUserId = 0;
    331340  Converter::byteArrayToInt( data+INTSIZE, &senderUserId );
     
    333342  Converter::byteArrayToString( data+2*INTSIZE, message, dataLength-2*INTSIZE );
    334343
    335   rules.handleChatMessage( senderUserId, message, messageType );
     344  rules.handleChatMessage( senderUserId, message, chatType);
    336345
    337346  return true;
     
    352361
    353362  if ( SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/)
    354     MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_ME, 0, MP_HIGHBANDWIDTH );
     363    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
    355364  else
    356     MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
     365    MessageManager::getInstance()->sendMessage( MSGID_CHATMESSAGE, buf, message.length()+3*INTSIZE, RT_ALL_BUT_ME, NET_UNASSIGNED, MP_HIGHBANDWIDTH );
    357366
    358367
Note: See TracChangeset for help on using the changeset viewer.