MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / processMessage

Method processMessage

source/network/ODClient.cpp:74–960  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72}
73
74bool 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);

Callers

nothing calls this directly

Calls 15

Vector3Class · 0.85
getGameEntityFromPacketFunction · 0.85
getClientGameMapMethod · 0.80
createNewMapMethod · 0.80
setLevelNameMethod · 0.80
setLevelDescriptionMethod · 0.80
setLevelMusicFileMethod · 0.80
setTileSetNameMethod · 0.80
addSeatMethod · 0.80
addClassDescriptionMethod · 0.80
addWeaponMethod · 0.80

Tested by

no test coverage detected