diff --git a/common/main/multi.h b/common/main/multi.h index af8f76bb3..f6eb78a08 100644 --- a/common/main/multi.h +++ b/common/main/multi.h @@ -547,8 +547,9 @@ void multi_send_bounty( void ); void multi_consistency_error(int reset); int multi_level_sync(void); int multi_endlevel(int *secret); -int multi_endlevel_poll1(newmenu *menu,const d_event &event, const unused_newmenu_userdata_t *); -int multi_endlevel_poll2( newmenu *menu,const d_event &event, const unused_newmenu_userdata_t *); +using multi_endlevel_poll = int(newmenu *menu,const d_event &event, const unused_newmenu_userdata_t *); +multi_endlevel_poll *get_multi_endlevel_poll1(); +multi_endlevel_poll *get_multi_endlevel_poll2(); void multi_send_endlevel_packet(); #ifdef dsx namespace dsx { diff --git a/similar/main/gameseq.cpp b/similar/main/gameseq.cpp index 884d21fc4..3117e47e4 100644 --- a/similar/main/gameseq.cpp +++ b/similar/main/gameseq.cpp @@ -923,7 +923,7 @@ void DoEndLevelScoreGlitz(int network) Assert(c <= N_GLITZITEMS); - newmenu_do2(nullptr, title, c, m, network && (Game_mode & GM_NETWORK) ? multi_endlevel_poll1 : unused_newmenu_subfunction, unused_newmenu_userdata, 0, GLITZ_BACKGROUND); + newmenu_do2(nullptr, title, c, m, network && (Game_mode & GM_NETWORK) ? get_multi_endlevel_poll1() : unused_newmenu_subfunction, unused_newmenu_userdata, 0, GLITZ_BACKGROUND); } #if defined(DXX_BUILD_DESCENT_II) diff --git a/similar/main/kmatrix.cpp b/similar/main/kmatrix.cpp index 62b327470..7169443ab 100644 --- a/similar/main/kmatrix.cpp +++ b/similar/main/kmatrix.cpp @@ -292,7 +292,7 @@ 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( NULL, TXT_ABORT_GAME, nm_message_items, km->network ? multi_endlevel_poll2 : unused_newmenu_subfunction, unused_newmenu_userdata ); + choice = newmenu_do(nullptr, TXT_ABORT_GAME, nm_message_items, km->network ? get_multi_endlevel_poll2() : unused_newmenu_subfunction, unused_newmenu_userdata); } if (choice==0) @@ -357,8 +357,6 @@ static window_event_result kmatrix_handler(window *, const d_event &event, kmatr multi_leave_game(); km->aborted = 1; - - return window_event_result::close; } } #endif diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index b6662d075..d9f381097 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -1124,38 +1124,30 @@ multi_endlevel(int *secret) return(result); } -int multi_endlevel_poll1( newmenu *menu,const d_event &event, const unused_newmenu_userdata_t *userdata) +multi_endlevel_poll *get_multi_endlevel_poll1() { switch (multi_protocol) { #ifdef USE_UDP case MULTI_PROTO_UDP: - return net_udp_kmatrix_poll1( menu, event, userdata ); - break; + return net_udp_kmatrix_poll1; #endif default: - Error("Protocol handling missing in multi_endlevel_poll1\n"); - break; + throw std::logic_error("Protocol handling missing in multi_endlevel_poll1"); } - - return 0; // kill warning } -int multi_endlevel_poll2( newmenu *menu,const d_event &event, const unused_newmenu_userdata_t *userdata) +multi_endlevel_poll *get_multi_endlevel_poll2() { switch (multi_protocol) { #ifdef USE_UDP case MULTI_PROTO_UDP: - return net_udp_kmatrix_poll2( menu, event, userdata ); - break; + return net_udp_kmatrix_poll2; #endif default: - Error("Protocol handling missing in multi_endlevel_poll2\n"); - break; + throw std::logic_error("Protocol handling missing in multi_endlevel_poll2"); } - - return 0; } void multi_send_endlevel_packet()