1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 09:44:52 +01:00

Get rid of using user_strings for interface

This commit is contained in:
zsilencer
2016-04-20 00:16:17 -06:00
parent ddedcf1d3b
commit b257e431d9
6 changed files with 43 additions and 61 deletions

View File

@@ -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();
}

View File

@@ -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,

View File

@@ -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<NetworkPacket> 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();

View File

@@ -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<uint8, 8> 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);

View File

@@ -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,

View File

@@ -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 *) = "";
}
}