| 2448 | } |
| 2449 | |
| 2450 | void CClient::LoadDDNetInfo() |
| 2451 | { |
| 2452 | const json_value *pDDNetInfo = m_ServerBrowser.LoadDDNetInfo(); |
| 2453 | |
| 2454 | if(!pDDNetInfo) |
| 2455 | { |
| 2456 | m_InfoState = EInfoState::ERROR; |
| 2457 | return; |
| 2458 | } |
| 2459 | |
| 2460 | const json_value &DDNetInfo = *pDDNetInfo; |
| 2461 | const json_value &CurrentVersion = DDNetInfo["version"]; |
| 2462 | if(CurrentVersion.type == json_string) |
| 2463 | { |
| 2464 | char aNewVersionStr[64]; |
| 2465 | str_copy(aNewVersionStr, CurrentVersion); |
| 2466 | char aCurVersionStr[64]; |
| 2467 | str_copy(aCurVersionStr, GAME_RELEASE_VERSION); |
| 2468 | if(ToVersion(aNewVersionStr) > ToVersion(aCurVersionStr)) |
| 2469 | { |
| 2470 | str_copy(m_aVersionStr, CurrentVersion); |
| 2471 | } |
| 2472 | else |
| 2473 | { |
| 2474 | m_aVersionStr[0] = '0'; |
| 2475 | m_aVersionStr[1] = '\0'; |
| 2476 | } |
| 2477 | } |
| 2478 | |
| 2479 | const json_value &News = DDNetInfo["news"]; |
| 2480 | if(News.type == json_string) |
| 2481 | { |
| 2482 | // Only mark news button if something new was added to the news |
| 2483 | if(m_aNews[0] && str_find(m_aNews, News) == nullptr) |
| 2484 | g_Config.m_UiUnreadNews = true; |
| 2485 | |
| 2486 | str_copy(m_aNews, News); |
| 2487 | } |
| 2488 | |
| 2489 | const json_value &MapDownloadUrl = DDNetInfo["map-download-url"]; |
| 2490 | if(MapDownloadUrl.type == json_string) |
| 2491 | { |
| 2492 | str_copy(m_aMapDownloadUrl, MapDownloadUrl); |
| 2493 | } |
| 2494 | |
| 2495 | const json_value &Points = DDNetInfo["points"]; |
| 2496 | if(Points.type == json_integer) |
| 2497 | { |
| 2498 | m_Points = Points.u.integer; |
| 2499 | } |
| 2500 | |
| 2501 | const json_value &StunServersIpv6 = DDNetInfo["stun-servers-ipv6"]; |
| 2502 | if(StunServersIpv6.type == json_array && StunServersIpv6[0].type == json_string) |
| 2503 | { |
| 2504 | NETADDR Addr; |
| 2505 | if(!net_addr_from_str(&Addr, StunServersIpv6[0])) |
| 2506 | { |
| 2507 | m_aNetClient[CONN_MAIN].FeedStunServer(Addr); |
nothing calls this directly
no test coverage detected