| 628 | } |
| 629 | |
| 630 | void ServerSelectSection::OnServerFound(Jazz2::Multiplayer::ServerDescription&& desc) |
| 631 | { |
| 632 | std::uint64_t serverVersion = parseVersion(desc.Version); |
| 633 | desc.IsCompatible = ((serverVersion & VersionMask) == (CurrentVersion & VersionMask)); |
| 634 | |
| 635 | #if defined(DEATH_TARGET_EMSCRIPTEN) && defined(WITH_WEBSOCKET) |
| 636 | // On Emscripten (WS-only client), mark servers without WebSocket support as unavailable |
| 637 | if (desc.WsPort == 0) { |
| 638 | desc.IsCompatible = false; |
| 639 | } |
| 640 | #endif |
| 641 | |
| 642 | for (auto& item : _items) { |
| 643 | if (item.Desc.EndpointString == desc.EndpointString) { |
| 644 | std::uint32_t prevFlags = (item.Desc.Flags & 0x80000000u /*Local*/); |
| 645 | item.Desc = std::move(desc); |
| 646 | item.Desc.Flags |= prevFlags; |
| 647 | return; |
| 648 | } |
| 649 | } |
| 650 | |
| 651 | _items.push_back(std::move(desc)); |
| 652 | } |
| 653 | |
| 654 | void ServerSelectSection::ExecuteSelected() |
| 655 | { |
no test coverage detected