From b257e431d9a58458f7dd4be0012bcd1b4ccead4b Mon Sep 17 00:00:00 2001 From: zsilencer Date: Wed, 20 Apr 2016 00:16:17 -0600 Subject: [PATCH] Get rid of using user_strings for interface --- src/game.c | 1 - src/localisation/string_ids.h | 2 ++ src/network/network.cpp | 37 +---------------------------------- src/network/network.h | 6 ------ src/windows/multiplayer.c | 22 +++++++++++++++------ src/windows/player.c | 36 ++++++++++++++++++++++------------ 6 files changed, 43 insertions(+), 61 deletions(-) diff --git a/src/game.c b/src/game.c index 644a48f225..2371b299f6 100644 --- a/src/game.c +++ b/src/game.c @@ -925,7 +925,6 @@ bool game_load_save(const utf8 *path) if (result) { game_load_init(); - network_free_string_ids(); if (network_get_mode() == NETWORK_MODE_SERVER) { network_send_map(); } diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 394a340514..49af38173b 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -105,6 +105,7 @@ enum { STR_CREDIT_SPARE_5 = 862, STR_CREDIT_SPARE_6 = 863, STR_CREDIT_SPARE_7 = 864, + STR_STRINGID = 865, STR_DROPDOWN_GLYPH = 876, STR_TOO_LOW = 877, @@ -417,6 +418,7 @@ enum { STR_OPTIONS_TITLE = 1168, STR_SOUND_NONE = 1169, + STR_STRING = 1170, STR_RIDE_ENTRANCE_CLOSED = 1171, STR_RIDE_ENTRANCE_NAME = 1172, diff --git a/src/network/network.cpp b/src/network/network.cpp index 01e3c7ba4f..2ae84ae939 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -237,13 +237,12 @@ int NetworkActions::FindCommand(int command) NetworkGroup::NetworkGroup() { - name_string_id = STR_NONE; actions_allowed = {0}; } NetworkGroup::~NetworkGroup() { - FreeNameStringId(); + } void NetworkGroup::Read(NetworkPacket& packet) @@ -264,14 +263,6 @@ void NetworkGroup::Write(NetworkPacket& packet) } } -void NetworkGroup::FreeNameStringId() -{ - if (name_string_id != STR_NONE) { - user_string_free(name_string_id); - name_string_id = STR_NONE; - } -} - void NetworkGroup::ToggleActionPermission(size_t index) { size_t byte = index / 8; @@ -308,18 +299,9 @@ std::string& NetworkGroup::GetName() void NetworkGroup::SetName(std::string name) { - FreeNameStringId(); NetworkGroup::name = name; } -rct_string_id NetworkGroup::GetNameStringId() -{ - if (name_string_id == STR_NONE) { - name_string_id = user_string_allocate(128, name.c_str()); - } - return name_string_id; -} - NetworkConnection::NetworkConnection() { authstatus = NETWORK_AUTH_NONE; @@ -1302,13 +1284,6 @@ void Network::LoadGroups() SDL_RWclose(file); } -void Network::FreeStringIds() -{ - for (auto it = group_list.begin(); it != group_list.end(); it++) { - (*it)->FreeNameStringId(); - } -} - void Network::Client_Send_AUTH(const char* name, const char* password) { std::unique_ptr packet = std::move(NetworkPacket::Allocate()); @@ -2217,11 +2192,6 @@ const char* network_get_group_name(unsigned int index) return gNetwork.group_list[index]->GetName().c_str(); } -rct_string_id network_get_group_name_string_id(unsigned int index) -{ - return gNetwork.group_list[index]->GetNameStringId(); -} - void network_chat_show_connected_message() { char *templateString = (char*)language_get_string(STR_INDIVIDUAL_KEYS_BASE); @@ -2436,11 +2406,6 @@ int network_get_current_player_group_index() return network_get_group_index(gNetwork.GetPlayerByID(gNetwork.GetPlayerID())->group); } -void network_free_string_ids() -{ - gNetwork.FreeStringIds(); -} - void network_send_map() { gNetwork.Server_Send_MAP(); diff --git a/src/network/network.h b/src/network/network.h index 019a5bf09a..0314de1e71 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -214,19 +214,16 @@ public: ~NetworkGroup(); void Read(NetworkPacket& packet); void Write(NetworkPacket& packet); - void FreeNameStringId(); void ToggleActionPermission(size_t index); bool CanPerformAction(size_t index); bool CanPerformCommand(int command); std::string& GetName(); void SetName(std::string name); - rct_string_id GetNameStringId(); std::array actions_allowed; uint8 id = 0; private: std::string name; - rct_string_id name_string_id; }; class NetworkConnection @@ -320,7 +317,6 @@ public: void SetDefaultGroup(uint8 id); void SaveGroups(); void LoadGroups(); - void FreeStringIds(); void Client_Send_AUTH(const char* name, const char* password); void Server_Send_AUTH(NetworkConnection& connection); @@ -458,7 +454,6 @@ int network_get_current_player_group_index(); uint8 network_get_group_id(unsigned int index); int network_get_num_groups(); const char* network_get_group_name(unsigned int index); -rct_string_id network_get_group_name_string_id(unsigned int index); void game_command_set_player_group(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* edi, int* ebp); void game_command_modify_groups(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp); void game_command_kick_player(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp); @@ -467,7 +462,6 @@ int network_get_num_actions(); rct_string_id network_get_action_name_string_id(unsigned int index); int network_can_perform_action(unsigned int groupindex, unsigned int index); int network_can_perform_command(unsigned int groupindex, unsigned int index); -void network_free_string_ids(); void network_send_map(); void network_send_chat(const char* text); diff --git a/src/windows/multiplayer.c b/src/windows/multiplayer.c index 460f6d68a3..5790551fd9 100644 --- a/src/windows/multiplayer.c +++ b/src/windows/multiplayer.c @@ -263,8 +263,8 @@ static void window_multiplayer_groups_show_group_dropdown(rct_window *w, rct_wid ); for (i = 0; i < network_get_num_groups(); i++) { - gDropdownItemsFormat[i] = 1142; - gDropdownItemsArgs[i] = network_get_group_name_string_id(i); + gDropdownItemsFormat[i] = 2777; + gDropdownItemsArgs[i] = (sint64)network_get_group_name(i); } if (widget == &window_multiplayer_groups_widgets[WIDX_DEFAULT_GROUP_DROPDOWN]) { dropdown_set_checked(network_get_group_index(network_get_default_group()), true); @@ -617,10 +617,15 @@ static void window_multiplayer_groups_paint(rct_window *w, rct_drawpixelinfo *dp rct_widget* widget = &window_multiplayer_groups_widgets[WIDX_DEFAULT_GROUP]; int group = network_get_group_index(network_get_default_group()); if (group != -1) { - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = network_get_group_name_string_id(group); + char buffer[300] = {0}; + char* lineCh; + lineCh = buffer; + lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); + strcpy(lineCh, network_get_group_name(group)); + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, const char *) = buffer; gfx_draw_string_centred_clipped( dpi, - 1193, + STR_STRING, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, w->x + (widget->left + widget->right - 11) / 2, @@ -641,10 +646,15 @@ static void window_multiplayer_groups_paint(rct_window *w, rct_drawpixelinfo *dp widget = &window_multiplayer_groups_widgets[WIDX_SELECTED_GROUP]; group = network_get_group_index(_selectedGroup); if (group != -1) { - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = network_get_group_name_string_id(group); + char buffer[300] = {0}; + char* lineCh; + lineCh = buffer; + lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); + strcpy(lineCh, network_get_group_name(group)); + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, const char *) = buffer; gfx_draw_string_centred_clipped( dpi, - 1193, + STR_STRING, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, w->x + (widget->left + widget->right - 11) / 2, diff --git a/src/windows/player.c b/src/windows/player.c index dd94715a39..ac19cc0a79 100644 --- a/src/windows/player.c +++ b/src/windows/player.c @@ -66,7 +66,7 @@ enum WINDOW_PLAYER_WIDGET_IDX { #define WINDOW_PLAYER_COMMON_WIDGETS \ { WWT_FRAME, 0, 0, 191, 0, 156, 0x0FFFFFFFF, STR_NONE }, /* Panel / Background */ \ - { WWT_CAPTION, 0, 1, 190, 1, 14, 865, STR_WINDOW_TITLE_TIP }, /* Title */ \ + { WWT_CAPTION, 0, 1, 190, 1, 14, STR_STRING, STR_WINDOW_TITLE_TIP }, /* Title */ \ { WWT_CLOSEBOX, 0, 179, 189, 2, 13, 824, STR_CLOSE_WINDOW_TIP }, /* Close x button */ \ { WWT_RESIZE, 1, 0, 191, 43, 156, 0x0FFFFFFFF, STR_NONE }, /* Resize */ \ { WWT_TAB, 1, 3, 33, 17, 43, 0x2000144E, STR_NONE }, /* Tab 1 */ \ @@ -184,6 +184,7 @@ static rct_window_event_list *window_player_page_events[] = { static void window_player_set_page(rct_window* w, int page); static void window_player_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w); static void window_player_update_viewport(rct_window *w, bool scroll); +static void window_player_update_title(rct_window* w); uint32 window_player_page_enabled_widgets[] = { (1 << WIDX_CLOSE) | @@ -222,7 +223,6 @@ void window_player_open(uint8 id) window->selected_list_item = -1; window->viewport_focus_coordinates.y = -1; - window->error.var_480 = user_string_allocate(128, network_get_player_name(player)); // repurposing var_480 to store this } window->page = 0; @@ -262,8 +262,8 @@ void window_player_overview_show_group_dropdown(rct_window *w, rct_widget *widge ); for (i = 0; i < network_get_num_groups(); i++) { - gDropdownItemsFormat[i] = 1142; - gDropdownItemsArgs[i] = network_get_group_name_string_id(i); + gDropdownItemsFormat[i] = 2777; + gDropdownItemsArgs[i] = (sint64)network_get_group_name(i); } dropdown_set_checked(network_get_group_index(network_get_player_group(player)), true); @@ -271,10 +271,7 @@ void window_player_overview_show_group_dropdown(rct_window *w, rct_widget *widge void window_player_overview_close(rct_window *w) { - if (w->error.var_480){ - user_string_free(w->error.var_480); - w->error.var_480 = 0; - } + } void window_player_overview_mouse_up(rct_window *w, int widgetIndex) @@ -369,11 +366,16 @@ void window_player_overview_paint(rct_window *w, rct_drawpixelinfo *dpi) int groupindex = network_get_group_index(network_get_player_group(player)); if (groupindex != -1) { rct_widget* widget = &window_player_overview_widgets[WIDX_GROUP]; - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = network_get_group_name_string_id(groupindex); + char buffer[300] = {0}; + char* lineCh; + lineCh = buffer; + lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); + strcpy(lineCh, network_get_group_name(groupindex)); + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, const char *) = buffer; gfx_draw_string_centred_clipped( dpi, - 1193, + STR_STRING, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, w->x + (widget->left + widget->right - 11) / 2, @@ -421,7 +423,7 @@ void window_player_overview_invalidate(rct_window *w) w->pressed_widgets &= ~(WIDX_TAB_2); w->pressed_widgets |= 1ULL << (w->page + WIDX_TAB_1); - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = w->error.var_480; // set title caption to player name + window_player_update_title(w); w->widgets[WIDX_BACKGROUND].right = w->width - 1; w->widgets[WIDX_BACKGROUND].bottom = w->height - 1; @@ -507,7 +509,7 @@ void window_player_statistics_invalidate(rct_window *w) w->pressed_widgets &= ~(WIDX_TAB_2); w->pressed_widgets |= 1ULL << (w->page + WIDX_TAB_1); - RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = w->error.var_480; // set title caption to player name + window_player_update_title(w); w->widgets[WIDX_BACKGROUND].right = w->width - 1; w->widgets[WIDX_BACKGROUND].bottom = w->height - 1; @@ -647,3 +649,13 @@ static void window_player_update_viewport(rct_window *w, bool scroll) } } } + +static void window_player_update_title(rct_window* w) +{ + int player = network_get_player_index((uint8)w->number); + if (player != -1) { + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, const char *) = network_get_player_name(player); // set title caption to player name + } else { + RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, const char *) = ""; + } +}