mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Move network status window to UI module
This commit is contained in:
@@ -247,6 +247,11 @@
|
|||||||
C685E51C1F8907850090598F /* Map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C685E5171F8907840090598F /* Map.cpp */; };
|
C685E51C1F8907850090598F /* Map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C685E5171F8907840090598F /* Map.cpp */; };
|
||||||
C685E51D1F8907850090598F /* Research.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C685E5181F8907840090598F /* Research.cpp */; };
|
C685E51D1F8907850090598F /* Research.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C685E5181F8907840090598F /* Research.cpp */; };
|
||||||
C6CB94F21EFFBF860065888F /* libfreetype.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D45A38B41CF3006400659A24 /* libfreetype.dylib */; };
|
C6CB94F21EFFBF860065888F /* libfreetype.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D45A38B41CF3006400659A24 /* libfreetype.dylib */; };
|
||||||
|
C6D2BEE21F9BAA6C008B557C /* Ride.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D2BEE11F9BAA6C008B557C /* Ride.cpp */; };
|
||||||
|
C6D2BEE61F9BAACE008B557C /* TrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D2BEE31F9BAACC008B557C /* TrackList.cpp */; };
|
||||||
|
C6D2BEE71F9BAACE008B557C /* MapTooltip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D2BEE41F9BAACD008B557C /* MapTooltip.cpp */; };
|
||||||
|
C6D2BEE81F9BAACE008B557C /* MazeConstruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D2BEE51F9BAACD008B557C /* MazeConstruction.cpp */; };
|
||||||
|
C6D2BEEA1F9BB83C008B557C /* NetworkStatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C6D2BEE91F9BB83B008B557C /* NetworkStatus.cpp */; };
|
||||||
C6E96E361E0408B40076A04F /* libzip.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E96E351E0408B40076A04F /* libzip.dylib */; };
|
C6E96E361E0408B40076A04F /* libzip.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = C6E96E351E0408B40076A04F /* libzip.dylib */; };
|
||||||
C6E96E371E040E040076A04F /* libzip.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C6E96E351E0408B40076A04F /* libzip.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
C6E96E371E040E040076A04F /* libzip.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C6E96E351E0408B40076A04F /* libzip.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
D41B73EF1C2101890080A7B9 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D41B73EE1C2101890080A7B9 /* libcurl.tbd */; };
|
D41B73EF1C2101890080A7B9 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D41B73EE1C2101890080A7B9 /* libcurl.tbd */; };
|
||||||
@@ -877,6 +882,11 @@
|
|||||||
C686F9031CDBC3B7009F9BFC /* boat_ride.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = boat_ride.c; sourceTree = "<group>"; };
|
C686F9031CDBC3B7009F9BFC /* boat_ride.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = boat_ride.c; sourceTree = "<group>"; };
|
||||||
C686F9041CDBC3B7009F9BFC /* dingy_slide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dingy_slide.c; sourceTree = "<group>"; };
|
C686F9041CDBC3B7009F9BFC /* dingy_slide.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dingy_slide.c; sourceTree = "<group>"; };
|
||||||
C686F9051CDBC3B7009F9BFC /* log_flume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log_flume.c; sourceTree = "<group>"; };
|
C686F9051CDBC3B7009F9BFC /* log_flume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = log_flume.c; sourceTree = "<group>"; };
|
||||||
|
C6D2BEE11F9BAA6C008B557C /* Ride.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Ride.cpp; sourceTree = "<group>"; };
|
||||||
|
C6D2BEE31F9BAACC008B557C /* TrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackList.cpp; sourceTree = "<group>"; };
|
||||||
|
C6D2BEE41F9BAACD008B557C /* MapTooltip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MapTooltip.cpp; sourceTree = "<group>"; };
|
||||||
|
C6D2BEE51F9BAACD008B557C /* MazeConstruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MazeConstruction.cpp; sourceTree = "<group>"; };
|
||||||
|
C6D2BEE91F9BB83B008B557C /* NetworkStatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkStatus.cpp; sourceTree = "<group>"; };
|
||||||
C6E96E331E0408A80076A04F /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = "<group>"; };
|
C6E96E331E0408A80076A04F /* zip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = "<group>"; };
|
||||||
C6E96E341E0408A80076A04F /* zipconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zipconf.h; sourceTree = "<group>"; };
|
C6E96E341E0408A80076A04F /* zipconf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = zipconf.h; sourceTree = "<group>"; };
|
||||||
C6E96E351E0408B40076A04F /* libzip.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libzip.dylib; sourceTree = "<group>"; };
|
C6E96E351E0408B40076A04F /* libzip.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libzip.dylib; sourceTree = "<group>"; };
|
||||||
@@ -2725,6 +2735,7 @@
|
|||||||
C666EE5B1F37ACB10061AA04 /* MapGen.cpp */,
|
C666EE5B1F37ACB10061AA04 /* MapGen.cpp */,
|
||||||
C666EE5C1F37ACB10061AA04 /* Multiplayer.cpp */,
|
C666EE5C1F37ACB10061AA04 /* Multiplayer.cpp */,
|
||||||
C666EE5D1F37ACB10061AA04 /* MusicCredits.cpp */,
|
C666EE5D1F37ACB10061AA04 /* MusicCredits.cpp */,
|
||||||
|
C6D2BEE91F9BB83B008B557C /* NetworkStatus.cpp */,
|
||||||
C654DF231F69C0430040F43D /* NewCampaign.cpp */,
|
C654DF231F69C0430040F43D /* NewCampaign.cpp */,
|
||||||
C685E5141F8907840090598F /* NewRide.cpp */,
|
C685E5141F8907840090598F /* NewRide.cpp */,
|
||||||
C666EE5E1F37ACB10061AA04 /* News.cpp */,
|
C666EE5E1F37ACB10061AA04 /* News.cpp */,
|
||||||
@@ -3292,6 +3303,7 @@
|
|||||||
4C93F18E1F8B747A00A9330D /* MotionSimulator.cpp in Sources */,
|
4C93F18E1F8B747A00A9330D /* MotionSimulator.cpp in Sources */,
|
||||||
C666EE711F37ACB10061AA04 /* MapGen.cpp in Sources */,
|
C666EE711F37ACB10061AA04 /* MapGen.cpp in Sources */,
|
||||||
4C93F17C1F8B747300A9330D /* Facility.cpp in Sources */,
|
4C93F17C1F8B747300A9330D /* Facility.cpp in Sources */,
|
||||||
|
C6D2BEEA1F9BB83C008B557C /* NetworkStatus.cpp in Sources */,
|
||||||
C64645011F3FA4120026AC2D /* Water.cpp in Sources */,
|
C64645011F3FA4120026AC2D /* Water.cpp in Sources */,
|
||||||
F76C88851EC5324E00FA49E2 /* OpenGLFramebuffer.cpp in Sources */,
|
F76C88851EC5324E00FA49E2 /* OpenGLFramebuffer.cpp in Sources */,
|
||||||
4C93F1451F8B744400A9330D /* JuniorRollerCoaster.cpp in Sources */,
|
4C93F1451F8B744400A9330D /* JuniorRollerCoaster.cpp in Sources */,
|
||||||
@@ -3452,7 +3464,6 @@
|
|||||||
F76C868E1EC4E88400FA49E2 /* scenery.c in Sources */,
|
F76C868E1EC4E88400FA49E2 /* scenery.c in Sources */,
|
||||||
F76C868F1EC4E88400FA49E2 /* scenery_multiple.c in Sources */,
|
F76C868F1EC4E88400FA49E2 /* scenery_multiple.c in Sources */,
|
||||||
F76C86901EC4E88400FA49E2 /* surface.c in Sources */,
|
F76C86901EC4E88400FA49E2 /* surface.c in Sources */,
|
||||||
C666EE2D1F33E3800061AA04 /* NetworkStatus.cpp in Sources */,
|
|
||||||
F76C86921EC4E88400FA49E2 /* Paint.cpp in Sources */,
|
F76C86921EC4E88400FA49E2 /* Paint.cpp in Sources */,
|
||||||
F76C86941EC4E88400FA49E2 /* paint_helpers.c in Sources */,
|
F76C86941EC4E88400FA49E2 /* paint_helpers.c in Sources */,
|
||||||
F76C86951EC4E88400FA49E2 /* litter.c in Sources */,
|
F76C86951EC4E88400FA49E2 /* litter.c in Sources */,
|
||||||
|
|||||||
@@ -146,6 +146,8 @@ public:
|
|||||||
}
|
}
|
||||||
case WV_MAZE_CONSTRUCTION:
|
case WV_MAZE_CONSTRUCTION:
|
||||||
return window_maze_construction_open();
|
return window_maze_construction_open();
|
||||||
|
case WV_NETWORK_PASSWORD:
|
||||||
|
return window_network_status_open_password();
|
||||||
default:
|
default:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@@ -203,6 +205,12 @@ public:
|
|||||||
}
|
}
|
||||||
case WC_MANAGE_TRACK_DESIGN:
|
case WC_MANAGE_TRACK_DESIGN:
|
||||||
return window_track_manage_open((track_design_file_ref *) intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN));
|
return window_track_manage_open((track_design_file_ref *) intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN));
|
||||||
|
case WC_NETWORK_STATUS:
|
||||||
|
{
|
||||||
|
std::string message = intent->GetStringExtra(INTENT_EXTRA_MESSAGE);
|
||||||
|
close_callback callback = intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK);
|
||||||
|
return window_network_status_open(message.c_str(), callback);
|
||||||
|
}
|
||||||
case WC_RIDE:
|
case WC_RIDE:
|
||||||
return window_ride_main_open(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
|
return window_ride_main_open(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
|
||||||
case WC_TRACK_DESIGN_PLACE:
|
case WC_TRACK_DESIGN_PLACE:
|
||||||
@@ -269,6 +277,19 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ForceClose(rct_windowclass windowClass) override
|
||||||
|
{
|
||||||
|
switch (windowClass)
|
||||||
|
{
|
||||||
|
case WC_NETWORK_STATUS:
|
||||||
|
window_network_status_close();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateMapTooltip() override
|
void UpdateMapTooltip() override
|
||||||
{
|
{
|
||||||
window_map_tooltip_update_visibility();
|
window_map_tooltip_update_visibility();
|
||||||
|
|||||||
@@ -14,11 +14,12 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#include "../network/network.h"
|
#include <openrct2-ui/windows/Window.h>
|
||||||
|
|
||||||
#include "../interface/widget.h"
|
#include <openrct2/interface/widget.h>
|
||||||
#include "../localisation/localisation.h"
|
#include <openrct2/localisation/localisation.h>
|
||||||
#include "../util/util.h"
|
#include <openrct2/network/network.h>
|
||||||
|
#include <openrct2/util/util.h>
|
||||||
|
|
||||||
static char _password[33];
|
static char _password[33];
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ static rct_window_event_list window_network_status_events = {
|
|||||||
|
|
||||||
static close_callback _onClose = nullptr;
|
static close_callback _onClose = nullptr;
|
||||||
|
|
||||||
void window_network_status_open(const char* text, close_callback onClose)
|
rct_window * window_network_status_open(const char* text, close_callback onClose)
|
||||||
{
|
{
|
||||||
_onClose = onClose;
|
_onClose = onClose;
|
||||||
safe_strcpy(window_network_status_text, text, sizeof(window_network_status_text));
|
safe_strcpy(window_network_status_text, text, sizeof(window_network_status_text));
|
||||||
@@ -86,7 +87,7 @@ void window_network_status_open(const char* text, close_callback onClose)
|
|||||||
// Check if window is already open
|
// Check if window is already open
|
||||||
rct_window *window = window_bring_to_front_by_class_with_flags(WC_NETWORK_STATUS, 0);
|
rct_window *window = window_bring_to_front_by_class_with_flags(WC_NETWORK_STATUS, 0);
|
||||||
if (window != nullptr)
|
if (window != nullptr)
|
||||||
return;
|
return window;
|
||||||
|
|
||||||
window = window_create_centred(420, 90, &window_network_status_events, WC_NETWORK_STATUS, WF_10 | WF_TRANSPARENT);
|
window = window_create_centred(420, 90, &window_network_status_events, WC_NETWORK_STATUS, WF_10 | WF_TRANSPARENT);
|
||||||
|
|
||||||
@@ -103,6 +104,8 @@ void window_network_status_open(const char* text, close_callback onClose)
|
|||||||
|
|
||||||
window->page = 0;
|
window->page = 0;
|
||||||
window->list_information_type = 0;
|
window->list_information_type = 0;
|
||||||
|
|
||||||
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
void window_network_status_close()
|
void window_network_status_close()
|
||||||
@@ -111,14 +114,16 @@ void window_network_status_close()
|
|||||||
window_close_by_class(WC_NETWORK_STATUS);
|
window_close_by_class(WC_NETWORK_STATUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void window_network_status_open_password()
|
rct_window * window_network_status_open_password()
|
||||||
{
|
{
|
||||||
rct_window* window;
|
rct_window* window;
|
||||||
window = window_bring_to_front_by_class(WC_NETWORK_STATUS);
|
window = window_bring_to_front_by_class(WC_NETWORK_STATUS);
|
||||||
if (window == nullptr)
|
if (window == nullptr)
|
||||||
return;
|
return nullptr;
|
||||||
|
|
||||||
window_text_input_raw_open(window, WIDX_PASSWORD, STR_PASSWORD_REQUIRED, STR_PASSWORD_REQUIRED_DESC, _password, 32);
|
window_text_input_raw_open(window, WIDX_PASSWORD, STR_PASSWORD_REQUIRED, STR_PASSWORD_REQUIRED_DESC, _password, 32);
|
||||||
|
|
||||||
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void window_network_status_onclose(rct_window *w)
|
static void window_network_status_onclose(rct_window *w)
|
||||||
@@ -121,3 +121,7 @@ void window_map_tooltip_update_visibility();
|
|||||||
|
|
||||||
rct_window * window_maze_construction_open();
|
rct_window * window_maze_construction_open();
|
||||||
void window_maze_construction_update_pressed_widgets();
|
void window_maze_construction_update_pressed_widgets();
|
||||||
|
|
||||||
|
rct_window * window_network_status_open(const char * text, close_callback onClose);
|
||||||
|
rct_window * window_network_status_open_password();
|
||||||
|
void window_network_status_close();
|
||||||
|
|||||||
@@ -1033,6 +1033,12 @@ extern "C"
|
|||||||
windowManager->BroadcastIntent(intent);
|
windowManager->BroadcastIntent(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void context_force_close_window_by_class(rct_windowclass windowClass)
|
||||||
|
{
|
||||||
|
auto windowManager = GetContext()->GetUiContext()->GetWindowManager();
|
||||||
|
windowManager->ForceClose(windowClass);
|
||||||
|
}
|
||||||
|
|
||||||
rct_window * context_show_error(rct_string_id title, rct_string_id message)
|
rct_window * context_show_error(rct_string_id title, rct_string_id message)
|
||||||
{
|
{
|
||||||
auto windowManager = GetContext()->GetUiContext()->GetWindowManager();
|
auto windowManager = GetContext()->GetUiContext()->GetWindowManager();
|
||||||
|
|||||||
@@ -219,6 +219,7 @@ extern "C"
|
|||||||
rct_window * context_show_error(rct_string_id title, rct_string_id message);
|
rct_window * context_show_error(rct_string_id title, rct_string_id message);
|
||||||
rct_window * context_open_intent(Intent * intent);
|
rct_window * context_open_intent(Intent * intent);
|
||||||
void context_broadcast_intent(Intent * intent);
|
void context_broadcast_intent(Intent * intent);
|
||||||
|
void context_force_close_window_by_class(rct_windowclass wc);
|
||||||
void context_update_map_tooltip();
|
void context_update_map_tooltip();
|
||||||
void context_input_handle_keyboard(bool isTitle);
|
void context_input_handle_keyboard(bool isTitle);
|
||||||
bool context_read_bmp(void * * outPixels, uint32 * outWidth, uint32 * outHeight, const utf8 * path);
|
bool context_read_bmp(void * * outPixels, uint32 * outWidth, uint32 * outHeight, const utf8 * path);
|
||||||
|
|||||||
@@ -508,6 +508,7 @@ enum {
|
|||||||
WV_FINANCES_RESEARCH,
|
WV_FINANCES_RESEARCH,
|
||||||
WV_RIDE_RESEARCH,
|
WV_RIDE_RESEARCH,
|
||||||
WV_MAZE_CONSTRUCTION,
|
WV_MAZE_CONSTRUCTION,
|
||||||
|
WV_NETWORK_PASSWORD,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@@ -722,11 +723,6 @@ void ride_construction_toolupdate_entrance_exit(sint32 screenX, sint32 screenY);
|
|||||||
void ride_construction_toolupdate_construct(sint32 screenX, sint32 screenY);
|
void ride_construction_toolupdate_construct(sint32 screenX, sint32 screenY);
|
||||||
void ride_construction_tooldown_construct(sint32 screenX, sint32 screenY);
|
void ride_construction_tooldown_construct(sint32 screenX, sint32 screenY);
|
||||||
|
|
||||||
|
|
||||||
void window_network_status_open(const char* text, close_callback onClose);
|
|
||||||
void window_network_status_close();
|
|
||||||
void window_network_status_open_password();
|
|
||||||
|
|
||||||
void window_scenery_open();
|
void window_scenery_open();
|
||||||
void window_tile_inspector_open();
|
void window_tile_inspector_open();
|
||||||
void window_tile_inspector_clear_clipboard();
|
void window_tile_inspector_clear_clipboard();
|
||||||
|
|||||||
@@ -463,9 +463,13 @@ void Network::UpdateClient()
|
|||||||
_lastConnectStatus = SOCKET_STATUS_RESOLVING;
|
_lastConnectStatus = SOCKET_STATUS_RESOLVING;
|
||||||
char str_resolving[256];
|
char str_resolving[256];
|
||||||
format_string(str_resolving, 256, STR_MULTIPLAYER_RESOLVING, nullptr);
|
format_string(str_resolving, 256, STR_MULTIPLAYER_RESOLVING, nullptr);
|
||||||
window_network_status_open(str_resolving, []() -> void {
|
|
||||||
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_resolving });
|
||||||
|
intent.putExtra(INTENT_EXTRA_CALLBACK, []() -> void {
|
||||||
gNetwork.Close();
|
gNetwork.Close();
|
||||||
});
|
});
|
||||||
|
context_open_intent(&intent);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -476,9 +480,14 @@ void Network::UpdateClient()
|
|||||||
_lastConnectStatus = SOCKET_STATUS_CONNECTING;
|
_lastConnectStatus = SOCKET_STATUS_CONNECTING;
|
||||||
char str_connecting[256];
|
char str_connecting[256];
|
||||||
format_string(str_connecting, 256, STR_MULTIPLAYER_CONNECTING, nullptr);
|
format_string(str_connecting, 256, STR_MULTIPLAYER_CONNECTING, nullptr);
|
||||||
window_network_status_open(str_connecting, []() -> void {
|
|
||||||
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_connecting });
|
||||||
|
intent.putExtra(INTENT_EXTRA_CALLBACK, []() -> void {
|
||||||
gNetwork.Close();
|
gNetwork.Close();
|
||||||
});
|
});
|
||||||
|
context_open_intent(&intent);
|
||||||
|
|
||||||
server_connect_time = platform_get_ticks();
|
server_connect_time = platform_get_ticks();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -490,9 +499,13 @@ void Network::UpdateClient()
|
|||||||
Client_Send_TOKEN();
|
Client_Send_TOKEN();
|
||||||
char str_authenticating[256];
|
char str_authenticating[256];
|
||||||
format_string(str_authenticating, 256, STR_MULTIPLAYER_AUTHENTICATING, nullptr);
|
format_string(str_authenticating, 256, STR_MULTIPLAYER_AUTHENTICATING, nullptr);
|
||||||
window_network_status_open(str_authenticating, []() -> void {
|
|
||||||
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_authenticating });
|
||||||
|
intent.putExtra(INTENT_EXTRA_CALLBACK, []() -> void {
|
||||||
gNetwork.Close();
|
gNetwork.Close();
|
||||||
});
|
});
|
||||||
|
context_open_intent(&intent);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -503,7 +516,7 @@ void Network::UpdateClient()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Close();
|
Close();
|
||||||
window_network_status_close();
|
context_force_close_window_by_class(WC_NETWORK_STATUS);
|
||||||
context_show_error(STR_UNABLE_TO_CONNECT_TO_SERVER, STR_NONE);
|
context_show_error(STR_UNABLE_TO_CONNECT_TO_SERVER, STR_NONE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -515,7 +528,7 @@ void Network::UpdateClient()
|
|||||||
if (!ProcessConnection(*server_connection)) {
|
if (!ProcessConnection(*server_connection)) {
|
||||||
// Do not show disconnect message window when password window closed/canceled
|
// Do not show disconnect message window when password window closed/canceled
|
||||||
if (server_connection->AuthStatus == NETWORK_AUTH_REQUIREPASSWORD) {
|
if (server_connection->AuthStatus == NETWORK_AUTH_REQUIREPASSWORD) {
|
||||||
window_network_status_close();
|
context_force_close_window_by_class(WC_NETWORK_STATUS);
|
||||||
} else {
|
} else {
|
||||||
char str_disconnected[256];
|
char str_disconnected[256];
|
||||||
|
|
||||||
@@ -526,7 +539,9 @@ void Network::UpdateClient()
|
|||||||
format_string(str_disconnected, 256, STR_MULTIPLAYER_DISCONNECTED_NO_REASON, nullptr);
|
format_string(str_disconnected, 256, STR_MULTIPLAYER_DISCONNECTED_NO_REASON, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
window_network_status_open(str_disconnected, nullptr);
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_disconnected });
|
||||||
|
context_open_intent(&intent);
|
||||||
}
|
}
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
@@ -647,7 +662,11 @@ void Network::CheckDesynchronizaton()
|
|||||||
|
|
||||||
char str_desync[256];
|
char str_desync[256];
|
||||||
format_string(str_desync, 256, STR_MULTIPLAYER_DESYNC, NULL);
|
format_string(str_desync, 256, STR_MULTIPLAYER_DESYNC, NULL);
|
||||||
window_network_status_open(str_desync, NULL);
|
|
||||||
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_desync });
|
||||||
|
context_open_intent(&intent);
|
||||||
|
|
||||||
if (!gConfigNetwork.stay_connected) {
|
if (!gConfigNetwork.stay_connected) {
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
@@ -1690,7 +1709,7 @@ void Network::Client_Handle_AUTH(NetworkConnection& connection, NetworkPacket& p
|
|||||||
connection.Socket->Disconnect();
|
connection.Socket->Disconnect();
|
||||||
break;
|
break;
|
||||||
case NETWORK_AUTH_REQUIREPASSWORD:
|
case NETWORK_AUTH_REQUIREPASSWORD:
|
||||||
window_network_status_open_password();
|
context_open_window_view(WV_NETWORK_PASSWORD);
|
||||||
break;
|
break;
|
||||||
case NETWORK_AUTH_UNKNOWN_KEY_DISALLOWED:
|
case NETWORK_AUTH_UNKNOWN_KEY_DISALLOWED:
|
||||||
connection.SetLastDisconnectReason(STR_MULTIPLAYER_UNKNOWN_KEY_DISALLOWED);
|
connection.SetLastDisconnectReason(STR_MULTIPLAYER_UNKNOWN_KEY_DISALLOWED);
|
||||||
@@ -1912,12 +1931,17 @@ void Network::Client_Handle_MAP(NetworkConnection& connection, NetworkPacket& pa
|
|||||||
char str_downloading_map[256];
|
char str_downloading_map[256];
|
||||||
uint32 downloading_map_args[2] = {(offset + chunksize) / 1024, size / 1024};
|
uint32 downloading_map_args[2] = {(offset + chunksize) / 1024, size / 1024};
|
||||||
format_string(str_downloading_map, 256, STR_MULTIPLAYER_DOWNLOADING_MAP, downloading_map_args);
|
format_string(str_downloading_map, 256, STR_MULTIPLAYER_DOWNLOADING_MAP, downloading_map_args);
|
||||||
window_network_status_open(str_downloading_map, []() -> void {
|
|
||||||
|
auto intent = Intent(WC_NETWORK_STATUS);
|
||||||
|
intent.putExtra(INTENT_EXTRA_MESSAGE, std::string { str_downloading_map });
|
||||||
|
intent.putExtra(INTENT_EXTRA_CALLBACK, []() -> void {
|
||||||
gNetwork.Close();
|
gNetwork.Close();
|
||||||
});
|
});
|
||||||
|
context_open_intent(&intent);
|
||||||
|
|
||||||
memcpy(&chunk_buffer[offset], (void*)packet.Read(chunksize), chunksize);
|
memcpy(&chunk_buffer[offset], (void*)packet.Read(chunksize), chunksize);
|
||||||
if (offset + chunksize == size) {
|
if (offset + chunksize == size) {
|
||||||
window_network_status_close();
|
context_force_close_window_by_class(WC_NETWORK_STATUS);
|
||||||
bool has_to_free = false;
|
bool has_to_free = false;
|
||||||
uint8 *data = &chunk_buffer[0];
|
uint8 *data = &chunk_buffer[0];
|
||||||
size_t data_size = size;
|
size_t data_size = size;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace OpenRCT2 { namespace Ui
|
|||||||
rct_window * ShowError(rct_string_id title, rct_string_id message) override { return nullptr; }
|
rct_window * ShowError(rct_string_id title, rct_string_id message) override { return nullptr; }
|
||||||
rct_window * OpenIntent(Intent * intent) override { return nullptr; };
|
rct_window * OpenIntent(Intent * intent) override { return nullptr; };
|
||||||
void BroadcastIntent(Intent * intent) override { }
|
void BroadcastIntent(Intent * intent) override { }
|
||||||
|
void ForceClose(rct_windowclass windowClass) override { }
|
||||||
void UpdateMapTooltip() override { }
|
void UpdateMapTooltip() override { }
|
||||||
void HandleKeyboard(bool isTitle) override { }
|
void HandleKeyboard(bool isTitle) override { }
|
||||||
std::string GetKeyboardShortcutString(sint32 shortcut) override { return std::string(); }
|
std::string GetKeyboardShortcutString(sint32 shortcut) override { return std::string(); }
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ namespace OpenRCT2
|
|||||||
virtual rct_window * OpenIntent(Intent * intent) abstract;
|
virtual rct_window * OpenIntent(Intent * intent) abstract;
|
||||||
virtual void BroadcastIntent(Intent * intent) abstract;
|
virtual void BroadcastIntent(Intent * intent) abstract;
|
||||||
virtual rct_window * ShowError(rct_string_id title, rct_string_id message) abstract;
|
virtual rct_window * ShowError(rct_string_id title, rct_string_id message) abstract;
|
||||||
|
virtual void ForceClose(rct_windowclass windowClass) abstract;
|
||||||
virtual void UpdateMapTooltip() abstract;
|
virtual void UpdateMapTooltip() abstract;
|
||||||
virtual void HandleKeyboard(bool isTitle) abstract;
|
virtual void HandleKeyboard(bool isTitle) abstract;
|
||||||
virtual std::string GetKeyboardShortcutString(sint32 shortcut) abstract;
|
virtual std::string GetKeyboardShortcutString(sint32 shortcut) abstract;
|
||||||
|
|||||||
@@ -51,6 +51,17 @@ Intent * Intent::putExtra(uint32 key, std::string value)
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Intent * Intent::putExtra(uint32 key, close_callback value)
|
||||||
|
{
|
||||||
|
IntentData data = {};
|
||||||
|
data.closeCallbackVal = value;
|
||||||
|
data.type = IntentData::DT_CLOSE_CALLBACK;
|
||||||
|
|
||||||
|
_Data.insert(std::make_pair(key, data));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
rct_windowclass Intent::GetWindowClass()
|
rct_windowclass Intent::GetWindowClass()
|
||||||
{
|
{
|
||||||
return this->_Class;
|
return this->_Class;
|
||||||
@@ -104,6 +115,18 @@ std::string Intent::GetStringExtra(uint32 key)
|
|||||||
return data.stringVal;
|
return data.stringVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
close_callback Intent::GetCloseCallbackExtra(uint32 key)
|
||||||
|
{
|
||||||
|
if (_Data.count(key) == 0)
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto data = _Data.at(key);
|
||||||
|
openrct2_assert(data.type == IntentData::DT_CLOSE_CALLBACK, "Actual type doesn't match requested type");
|
||||||
|
return data.closeCallbackVal;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
Intent *intent_create(rct_windowclass clss)
|
Intent *intent_create(rct_windowclass clss)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,13 +12,14 @@
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
struct IntentData
|
struct IntentData
|
||||||
{
|
{
|
||||||
enum DATATYPE { DT_INT, DT_STRING, DT_POINTER } type;
|
enum DATATYPE { DT_INT, DT_STRING, DT_POINTER, DT_CLOSE_CALLBACK } type;
|
||||||
|
|
||||||
union {
|
union {
|
||||||
uint32 unsignedInt;
|
uint32 unsignedInt;
|
||||||
sint32 signedInt;
|
sint32 signedInt;
|
||||||
} intVal;
|
} intVal;
|
||||||
std::string stringVal;
|
std::string stringVal;
|
||||||
|
close_callback closeCallbackVal;
|
||||||
void * pointerVal;
|
void * pointerVal;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -34,10 +35,12 @@ public:
|
|||||||
std::string GetStringExtra(uint32 key);
|
std::string GetStringExtra(uint32 key);
|
||||||
uint32 GetUIntExtra(uint32 key);
|
uint32 GetUIntExtra(uint32 key);
|
||||||
sint32 GetSIntExtra(uint32 key);
|
sint32 GetSIntExtra(uint32 key);
|
||||||
|
close_callback GetCloseCallbackExtra(uint32 key);
|
||||||
Intent * putExtra(uint32 key, uint32 value);
|
Intent * putExtra(uint32 key, uint32 value);
|
||||||
Intent * putExtra(uint32 key, void * value);
|
Intent * putExtra(uint32 key, void * value);
|
||||||
Intent * putExtra(uint32 key, sint32 value);
|
Intent * putExtra(uint32 key, sint32 value);
|
||||||
Intent * putExtra(uint32 key, std::string value);
|
Intent * putExtra(uint32 key, std::string value);
|
||||||
|
Intent * putExtra(uint32 key, close_callback value);
|
||||||
};
|
};
|
||||||
#else
|
#else
|
||||||
// Allow C code to use `Intent *`
|
// Allow C code to use `Intent *`
|
||||||
@@ -62,6 +65,7 @@ extern "C" {
|
|||||||
INTENT_EXTRA_RIDE_ENTRY_INDEX,
|
INTENT_EXTRA_RIDE_ENTRY_INDEX,
|
||||||
INTENT_EXTRA_TILE_ELEMENT,
|
INTENT_EXTRA_TILE_ELEMENT,
|
||||||
INTENT_EXTRA_VEHICLE,
|
INTENT_EXTRA_VEHICLE,
|
||||||
|
INTENT_EXTRA_MESSAGE,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|||||||
Reference in New Issue
Block a user