| 1223 | } |
| 1224 | |
| 1225 | const char *CClient::LoadMapSearch(const char *pMapName, const std::optional<SHA256_DIGEST> &WantedSha256, int WantedCrc) |
| 1226 | { |
| 1227 | char aBuf[512]; |
| 1228 | char aWanted[SHA256_MAXSTRSIZE + 16]; |
| 1229 | aWanted[0] = 0; |
| 1230 | if(WantedSha256.has_value()) |
| 1231 | { |
| 1232 | char aWantedSha256[SHA256_MAXSTRSIZE]; |
| 1233 | sha256_str(WantedSha256.value(), aWantedSha256, sizeof(aWantedSha256)); |
| 1234 | str_format(aWanted, sizeof(aWanted), "sha256=%s ", aWantedSha256); |
| 1235 | } |
| 1236 | str_format(aBuf, sizeof(aBuf), "loading map, map=%s wanted %scrc=%08x", pMapName, aWanted, WantedCrc); |
| 1237 | m_pConsole->Print(IConsole::OUTPUT_LEVEL_ADDINFO, "client", aBuf); |
| 1238 | |
| 1239 | // try the normal maps folder |
| 1240 | str_format(aBuf, sizeof(aBuf), "maps/%s.map", pMapName); |
| 1241 | const char *pError = LoadMap(pMapName, aBuf, WantedSha256, WantedCrc); |
| 1242 | if(!pError) |
| 1243 | return nullptr; |
| 1244 | |
| 1245 | // try the downloaded maps |
| 1246 | FormatMapDownloadFilename(pMapName, WantedSha256, WantedCrc, false, aBuf, sizeof(aBuf)); |
| 1247 | pError = LoadMap(pMapName, aBuf, WantedSha256, WantedCrc); |
| 1248 | if(!pError) |
| 1249 | return nullptr; |
| 1250 | |
| 1251 | // backward compatibility with old names |
| 1252 | if(WantedSha256.has_value()) |
| 1253 | { |
| 1254 | FormatMapDownloadFilename(pMapName, std::nullopt, WantedCrc, false, aBuf, sizeof(aBuf)); |
| 1255 | pError = LoadMap(pMapName, aBuf, WantedSha256, WantedCrc); |
| 1256 | if(!pError) |
| 1257 | return nullptr; |
| 1258 | } |
| 1259 | |
| 1260 | // search for the map within subfolders |
| 1261 | char aFilename[IO_MAX_PATH_LENGTH]; |
| 1262 | str_format(aFilename, sizeof(aFilename), "%s.map", pMapName); |
| 1263 | if(Storage()->FindFile(aFilename, "maps", IStorage::TYPE_ALL, aBuf, sizeof(aBuf))) |
| 1264 | { |
| 1265 | pError = LoadMap(pMapName, aBuf, WantedSha256, WantedCrc); |
| 1266 | if(!pError) |
| 1267 | return nullptr; |
| 1268 | } |
| 1269 | |
| 1270 | static char s_aErrorMsg[256]; |
| 1271 | str_format(s_aErrorMsg, sizeof(s_aErrorMsg), "Could not find map '%s'", pMapName); |
| 1272 | return s_aErrorMsg; |
| 1273 | } |
| 1274 | |
| 1275 | void CClient::ProcessConnlessPacket(CNetChunk *pPacket) |
| 1276 | { |
nothing calls this directly
no test coverage detected