MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / NetworkHandlePauseChange

Function NetworkHandlePauseChange

src/network/network.cpp:352–396  ·  view source on GitHub ↗

* Handle the pause mode change so we send the right messages to the chat. * @param prev_mode The previous pause mode. * @param changed_mode The pause mode that got changed. */

Source from the content-addressed store, hash-verified

350 * @param changed_mode The pause mode that got changed.
351 */
352void NetworkHandlePauseChange(PauseModes prev_mode, PauseMode changed_mode)
353{
354 if (!_networking) return;
355
356 switch (changed_mode) {
357 case PauseMode::Normal:
358 case PauseMode::Join:
359 case PauseMode::GameScript:
360 case PauseMode::ActiveClients:
361 case PauseMode::LinkGraph: {
362 bool changed = _pause_mode.None() != prev_mode.None();
363 bool paused = _pause_mode.Any();
364 if (!paused && !changed) return;
365
366 std::string str;
367 if (!changed) {
368 std::array<StringParameter, 5> params{};
369 auto it = params.begin();
370 if (_pause_mode.Test(PauseMode::Normal)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL;
371 if (_pause_mode.Test(PauseMode::Join)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS;
372 if (_pause_mode.Test(PauseMode::GameScript)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT;
373 if (_pause_mode.Test(PauseMode::ActiveClients)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS;
374 if (_pause_mode.Test(PauseMode::LinkGraph)) *it++ = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH;
375 str = GetStringWithArgs(STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 + std::distance(params.begin(), it) - 1, {params.begin(), it});
376 } else {
377 StringID reason;
378 switch (changed_mode) {
379 case PauseMode::Normal: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL; break;
380 case PauseMode::Join: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS; break;
381 case PauseMode::GameScript: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT; break;
382 case PauseMode::ActiveClients: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS; break;
383 case PauseMode::LinkGraph: reason = STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH; break;
384 default: NOT_REACHED();
385 }
386 str = GetString(paused ? STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED : STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED, reason);
387 }
388
389 NetworkTextMessage(NETWORK_ACTION_SERVER_MESSAGE, CC_DEFAULT, false, "", str);
390 break;
391 }
392
393 default:
394 return;
395 }
396}
397
398
399/**

Callers 1

CmdPauseFunction · 0.85

Calls 8

GetStringWithArgsFunction · 0.85
NOT_REACHEDFunction · 0.85
NetworkTextMessageFunction · 0.85
NoneMethod · 0.80
AnyMethod · 0.80
TestMethod · 0.80
GetStringFunction · 0.50
beginMethod · 0.45

Tested by

no test coverage detected