Changeset 6498 in orxonox.OLD for trunk/src/lib/network
- Timestamp:
- Jan 11, 2006, 9:58:22 PM (19 years ago)
- Location:
- trunk/src/lib/network
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/network/network_game_manager.cc
r6424 r6498 25 25 26 26 #include "p_node.h" 27 #include "state.h" 28 #include "game_world.h" 29 #include "world_entity.h" 30 #include "playable.h" 31 #include "player.h" 32 #include "network_manager.h" 27 33 28 34 … … 81 87 { 82 88 b = data[i++]; 83 84 PRINTF(0)("WriteBytes: b = %d\n", b);85 89 86 90 if ( isServer() ) … … 142 146 if ( b == REQUEST_ENTITY_LIST ) 143 147 { 144 PRINTF(0)("sending THE list\n");145 148 sendEntityList( sender ); 146 149 continue; … … 163 166 SYNCHELP_WRITE_BYTE( b ); 164 167 hasRequestedWorld = true; 165 PRINTF(0)("the world is enough! id=%d\n", this->getUniqueID());166 168 return SYNCHELP_WRITE_N; 167 169 } 170 168 171 for ( int i = 0; i<outBuffer.size(); i++ ) 169 172 { … … 216 219 * @param classID: The ID of the class of which an entity should be created 217 220 */ 218 void NetworkGameManager::createEntity( ClassID classID, int owner ) 219 { 221 int NetworkGameManager::createEntity( ClassID classID, int owner ) 222 { 223 220 224 if ( this->isServer() ) 221 225 { … … 223 227 { 224 228 PRINTF(1)("Cannot create entity! There are no more uniqueIDs left!\n"); 225 return ;226 } 227 228 this->executeCreateEntity( classID, newUniqueID++, owner );229 return -1; 230 } 231 232 return this->executeCreateEntity( classID, newUniqueID++, owner ); 229 233 } 230 234 else 231 235 { 232 236 this->requestCreateEntity( classID ); 237 return -1; 233 238 } 234 239 } … … 273 278 delete b; 274 279 } 280 275 281 } 276 282 else … … 330 336 * @param classID: The ID of the class of which an entity should be created 331 337 */ 332 voidNetworkGameManager::executeCreateEntity(ClassID classID, int uniqueID, int owner)338 int NetworkGameManager::executeCreateEntity(ClassID classID, int uniqueID, int owner) 333 339 { 334 340 if ( !writeToClientBuffer( allOutBuffer, (byte)CREATE_ENTITY ) ) 335 return ;341 return -1; 336 342 if ( !writeToClientBuffer( allOutBuffer, (int)classID ) ) 337 return ;343 return -1; 338 344 if ( !writeToClientBuffer( allOutBuffer, uniqueID ) ) 339 return ;345 return -1; 340 346 if ( !writeToClientBuffer( allOutBuffer, owner ) ) 341 return ;347 return -1; 342 348 343 349 doCreateEntity( classID, uniqueID, owner ); 350 351 return uniqueID; 344 352 } 345 353 … … 401 409 if ( !writeToClientBuffer( outBuffer[userID], (int)((*it)->getLeafClassID()) ) ) 402 410 return; 403 //PRINTF(0)("SendEntityList: ClassID = %x\n", (*it)->getRealClassID());404 411 405 412 if ( !writeToClientBuffer( outBuffer[userID], (int)((*it)->getUniqueID()) ) ) … … 409 416 return; 410 417 411 412 PRINTF(0)("id = %x %s %s\n", (int)((*it)->getLeafClassID()), (*it)->getClassName(), (*it)->getName());413 414 415 /*if ( (*it)->isA(CL_WORLD_ENTITY) )416 {417 n = dynamic_cast<WorldEntity*>((*it))->readState( outBuffer[userID].buffer, outBuffer[userID].maxLength-outBuffer[userID].length );418 if ( n = 0 )419 {420 PRINTF(2)("n = 0\n");421 }422 outBuffer[userID].length += n;423 }*/424 425 418 it++; 426 419 } 427 420 428 429 } 421 signalNewPlayer( userID ); 422 } 423 424 425 426 bool NetworkGameManager::signalNewPlayer(int userId) 427 { 428 429 /* create new playable for Player*/ 430 PRINTF(0)("Request for creation: %i\n", userId); 431 int uniqueId = this->createEntity(CL_SPACE_SHIP, userId); 432 PRINTF(0)("Request for creation: userid: %i, uniqueid: %i\n", userId, uniqueId); 433 this->sendYouAre(uniqueId, userId); 434 435 } 436 430 437 431 438 /** … … 474 481 s->setIsOutOfSync( true ); 475 482 PRINTF(0)("Fabricated %s with id %d\n", s->getClassName(), s->getUniqueID()); 483 484 //HACK: hack to prevent collision 485 if ( b->isA(CL_WORLD_ENTITY) ) 486 { 487 if ( NetworkManager::getInstance()->getHostID()!=0 ) 488 { 489 static Vector pos = Vector(1000.0, 1000.0, 1000.0); 490 PNode *p = dynamic_cast<PNode*>(b); 491 p->setRelCoor(pos); 492 p->updateNode(0); 493 pos += Vector(1000.0, 1000.0, 1000.0); 494 } 495 } 496 476 497 return b; 477 498 } … … 571 592 void NetworkGameManager::doYouAre( int uniqueID ) 572 593 { 573 //TODO: what has to be done 594 595 SynchronizeableList::const_iterator it = this->networkStream->getSyncBegin(); 596 597 Playable *p = NULL; 598 599 for ( ; it !=networkStream->getSyncEnd(); it++ ) 600 { 601 if ( (*it)->getUniqueID()==uniqueID ) 602 { 603 if ( (*it)->isA( CL_PLAYABLE ) ) 604 { 605 p = dynamic_cast<Playable*>(*it); 606 break; 607 } else 608 { 609 PRINTF(1)("UniqueID is not a Playable\n"); 610 } 611 } 612 } 613 614 Player* player = State::getPlayer(); 615 assert(p != NULL); 616 assert(player != NULL); 617 618 player->setControllable(p); 619 620 574 621 } 575 622 … … 716 763 i += Converter::byteArrayToInt( &data[i], &owner ); 717 764 718 PRINTF(0)("before fabricate\n");719 765 if ( classID != CL_NETWORK_GAME_MANAGER && classID != CL_HANDSHAKE ) 720 766 { -
trunk/src/lib/network/network_game_manager.h
r6424 r6498 74 74 virtual void readDebug() const; 75 75 76 voidcreateEntity( ClassID classID, int owner = 0 );76 int createEntity( ClassID classID, int owner = 0 ); 77 77 BaseObject* createEntity(const TiXmlElement* element); 78 78 void removeEntity( int uniqueID ); … … 87 87 88 88 void requestCreateEntity(ClassID classID); 89 voidexecuteCreateEntity(ClassID classID, int uniqueID = 0, int owner = 0);89 int executeCreateEntity(ClassID classID, int uniqueID = 0, int owner = 0); 90 90 91 91 void requestRemoveEntity(int uniqueID); … … 100 100 101 101 bool canCreateEntity(ClassID classID); 102 103 bool signalNewPlayer(int userId); 102 104 103 105 void resizeBufferVector(int n); -
trunk/src/lib/network/network_stream.cc
r6341 r6498 166 166 networkSockets[0]->destroy(); 167 167 networkSockets[0] = NULL; 168 //TODO: delete handshake from synchronizeable list so i can delete it 168 169 169 if ( handshakes[0] ) 170 170 delete handshakes[0]; … … 192 192 else 193 193 { 194 //this->networkGameManager->sendEntityList( i ); 194 195 195 } 196 196 PRINT(0)("handshake finished id=%d\n", handshakes[i]->getNetworkGameManagerId()); … … 252 252 if ( networkSockets[reciever] != NULL ) 253 253 { 254 PRINTF( 0)("write %d bytes to socket %d\n", dataLength, reciever);254 PRINTF(5)("write %d bytes to socket %d\n", dataLength, reciever); 255 255 networkSockets[reciever]->writePacket(downBuffer, dataLength); 256 256 } … … 266 266 if ( networkSockets[i] != NULL ) 267 267 { 268 PRINTF( 0)("write %d bytes to socket %d\n", dataLength, reciever);268 PRINTF(5)("write %d bytes to socket %d\n", dataLength, reciever); 269 269 networkSockets[i]->writePacket(downBuffer, dataLength); 270 270 } … … 291 291 dataLength -= sizeof(header); 292 292 293 PRINTF( 0)("read %d bytes from socket uniqueID = %d\n", dataLength, header.synchronizeableID);293 PRINTF(5)("read %d bytes from socket uniqueID = %d\n", dataLength, header.synchronizeableID); 294 294 295 295 if ( dataLength != header.length ) … … 372 372 networkSockets[i]->destroy(); 373 373 networkSockets[i] = NULL; 374 //TODO: delete handshake from synchronizeable list so i can delete it 374 375 375 if ( handshakes[i] ) 376 376 delete handshakes[i];
Note: See TracChangeset
for help on using the changeset viewer.