| 72 | } |
| 73 | |
| 74 | bool ODClient::processMessage(ServerNotificationType cmd, ODPacket& packetReceived) |
| 75 | { |
| 76 | ODFrameListener* frameListener = ODFrameListener::getSingletonPtr(); |
| 77 | |
| 78 | GameMap* gameMap = frameListener->getClientGameMap(); |
| 79 | if (!gameMap) |
| 80 | return false; |
| 81 | |
| 82 | OD_LOG_DBG("processMessage type=" + ServerNotification::typeString(cmd)); |
| 83 | switch(cmd) |
| 84 | { |
| 85 | case ServerNotificationType::loadLevel: |
| 86 | { |
| 87 | std::string odVersion; |
| 88 | OD_ASSERT_TRUE(packetReceived >> odVersion); |
| 89 | |
| 90 | // Map |
| 91 | int32_t mapSizeX; |
| 92 | int32_t mapSizeY; |
| 93 | OD_ASSERT_TRUE(packetReceived >> mapSizeX); |
| 94 | OD_ASSERT_TRUE(packetReceived >> mapSizeY); |
| 95 | if (!gameMap->createNewMap(mapSizeX, mapSizeY)) |
| 96 | return false; |
| 97 | |
| 98 | // Map infos |
| 99 | std::string str; |
| 100 | OD_ASSERT_TRUE(packetReceived >> mLevelFilename); |
| 101 | gameMap->setLevelName(mLevelFilename); |
| 102 | OD_ASSERT_TRUE(packetReceived >> str); |
| 103 | gameMap->setLevelDescription(str); |
| 104 | OD_ASSERT_TRUE(packetReceived >> str); |
| 105 | gameMap->setLevelMusicFile(str); |
| 106 | OD_ASSERT_TRUE(packetReceived >> str); |
| 107 | gameMap->setLevelFightMusicFile(str); |
| 108 | |
| 109 | OD_ASSERT_TRUE(packetReceived >> str); |
| 110 | if(str.empty()) |
| 111 | str = ConfigManager::DEFAULT_TILESET_NAME; |
| 112 | |
| 113 | gameMap->setTileSetName(str); |
| 114 | |
| 115 | int32_t nb; |
| 116 | // Seats |
| 117 | OD_ASSERT_TRUE(packetReceived >> nb); |
| 118 | while(nb > 0) |
| 119 | { |
| 120 | --nb; |
| 121 | Seat* seat = new Seat(gameMap); |
| 122 | OD_ASSERT_TRUE(seat->importFromPacket(packetReceived)); |
| 123 | if(!gameMap->addSeat(seat)) |
| 124 | { |
| 125 | OD_LOG_ERR("Couldn't add seat id=" + Helper::toString(seat->getId())); |
| 126 | delete seat; |
| 127 | } |
| 128 | } |
| 129 | |
| 130 | // Creature definitions |
| 131 | OD_ASSERT_TRUE(packetReceived >> nb); |
nothing calls this directly
no test coverage detected