From 53f75c3c72b077cc32f13856fdcfe2bd701eaac0 Mon Sep 17 00:00:00 2001 From: Kp Date: Fri, 28 Aug 2020 00:18:45 +0000 Subject: [PATCH] Use enum class for kmatrix network flag --- common/main/kmatrix.h | 11 ++++++++++- similar/main/kmatrix.cpp | 14 +++++++------- similar/main/multi.cpp | 2 +- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/common/main/kmatrix.h b/common/main/kmatrix.h index bef297d8e..8d196c1b4 100644 --- a/common/main/kmatrix.h +++ b/common/main/kmatrix.h @@ -35,7 +35,16 @@ enum class kmatrix_result proceed, }; -kmatrix_result kmatrix_view(int network); // shows matrix screen. Retruns 0 if aborted (quitting game) and 1 if proceeding to next level if applicable. +enum class kmatrix_network : uint8_t +{ + offline, + /* This has the same numeric value as GM_NETWORK, but currently, + * that is not required for correct operation. + */ + multiplayer = 4, +}; + +kmatrix_result kmatrix_view(kmatrix_network network); // shows matrix screen. Retruns 0 if aborted (quitting game) and 1 if proceeding to next level if applicable. #ifdef dsx namespace dsx { kmatrix_result multi_endlevel_score(); diff --git a/similar/main/kmatrix.cpp b/similar/main/kmatrix.cpp index b02993291..ae74e2c95 100644 --- a/similar/main/kmatrix.cpp +++ b/similar/main/kmatrix.cpp @@ -174,10 +174,10 @@ namespace { struct kmatrix_screen : ignore_window_pointer_t { grs_main_bitmap background; - int network; fix64 end_time; int playing; int aborted; + kmatrix_network network; }; } @@ -295,14 +295,14 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr nm_item_menu(TXT_YES), nm_item_menu(TXT_NO), }}; - choice = newmenu_do(nullptr, TXT_ABORT_GAME, nm_message_items, km->network ? get_multi_endlevel_poll2() : unused_newmenu_subfunction, unused_newmenu_userdata); + choice = newmenu_do(nullptr, TXT_ABORT_GAME, nm_message_items, km->network != kmatrix_network::offline ? get_multi_endlevel_poll2() : unused_newmenu_subfunction, unused_newmenu_userdata); } if (choice==0) { get_local_player().connected=CONNECT_DISCONNECTED; - if (km->network) + if (km->network != kmatrix_network::offline) multi_send_endlevel_packet(); multi_leave_game(); @@ -321,7 +321,7 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr { timer_delay2(50); - if (km->network) + if (km->network != kmatrix_network::offline) multi_do_protocol_frame(0, 1); km->playing = 0; @@ -347,7 +347,7 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr // Check if end_time has been reached and exit loop if (timer_query() >= km->end_time && km->end_time != -1) { - if (km->network) + if (km->network != kmatrix_network::offline) multi_send_endlevel_packet(); // make sure #if defined(DXX_BUILD_DESCENT_II) @@ -357,7 +357,7 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr { get_local_player().connected=CONNECT_DISCONNECTED; - if (km->network) + if (km->network != kmatrix_network::offline) multi_send_endlevel_packet(); multi_leave_game(); @@ -385,7 +385,7 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr } } -kmatrix_result kmatrix_view(int network) +kmatrix_result kmatrix_view(const kmatrix_network network) { auto &Objects = LevelUniqueObjectState.Objects; auto &vcobjptridx = Objects.vcptridx; diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index 50c8f5cd0..b81d4e8e9 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -450,7 +450,7 @@ kmatrix_result multi_endlevel_score() } // Do the actual screen we wish to show - const auto rval = kmatrix_view(Game_mode & GM_NETWORK); + const auto rval = kmatrix_view(static_cast(Game_mode & GM_NETWORK)); // Restore connect state