static void window_multiplayer_groups_show_group_dropdown(rct_window *w, rct_widget *widget) { rct_widget *dropdownWidget; sint32 numItems, i; dropdownWidget = widget - 1; numItems = network_get_num_groups(); window_dropdown_show_text_custom_width( w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, numItems, widget->right - dropdownWidget->left ); for (i = 0; i < network_get_num_groups(); i++) { gDropdownItemsFormat[i] = STR_OPTIONS_DROPDOWN_ITEM; gDropdownItemsArgs[i] = (uintptr_t)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); } else if (widget == &window_multiplayer_groups_widgets[WIDX_SELECTED_GROUP_DROPDOWN]) { dropdown_set_checked(network_get_group_index(_selectedGroup), true); } }
void window_player_overview_paint(rct_window *w, rct_drawpixelinfo *dpi) { window_draw_widgets(w, dpi); window_player_draw_tab_images(dpi, w); sint32 player = network_get_player_index((uint8)w->number); if (player == -1) { return; } // Draw current group sint32 groupindex = network_get_group_index(network_get_player_group(player)); if (groupindex != -1) { rct_widget* widget = &window_player_overview_widgets[WIDX_GROUP]; char buffer[300]; char* lineCh; lineCh = buffer; lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); safe_strcpy(lineCh, network_get_group_name(groupindex), sizeof(buffer) - (lineCh - buffer)); set_format_arg(0, const char *, buffer); gfx_draw_string_centred_clipped( dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2, w->y + widget->top, widget->right - widget->left - 8 ); }
static void window_player_overview_show_group_dropdown(rct_window *w, rct_widget *widget) { rct_widget *dropdownWidget; sint32 numItems, i; sint32 player = network_get_player_index((uint8)w->number); if (player == -1) { return; } dropdownWidget = widget - 1; numItems = network_get_num_groups(); window_dropdown_show_text_custom_width( w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, 0, numItems, widget->right - dropdownWidget->left ); for (i = 0; i < network_get_num_groups(); i++) { gDropdownItemsFormat[i] = STR_OPTIONS_DROPDOWN_ITEM; gDropdownItemsArgs[i] = (uintptr_t)network_get_group_name(i); } dropdown_set_checked(network_get_group_index(network_get_player_group(player)), true); }
static void window_multiplayer_groups_mouseup(rct_window *w, sint32 widgetIndex) { switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_TAB1: case WIDX_TAB2: case WIDX_TAB3: case WIDX_TAB4: if (w->page != widgetIndex - WIDX_TAB1) { window_multiplayer_set_page(w, widgetIndex - WIDX_TAB1); } break; case WIDX_ADD_GROUP: game_do_command(0, GAME_COMMAND_FLAG_APPLY, 0, 0, GAME_COMMAND_MODIFY_GROUPS, 0, 0); break; case WIDX_REMOVE_GROUP: game_do_command(1 | (_selectedGroup << 8), GAME_COMMAND_FLAG_APPLY, 0, 0, GAME_COMMAND_MODIFY_GROUPS, 0, 0); break; case WIDX_RENAME_GROUP:; sint32 groupIndex = network_get_group_index(_selectedGroup); const utf8 *groupName = network_get_group_name(groupIndex); window_text_input_raw_open(w, widgetIndex, STR_GROUP_NAME, STR_ENTER_NEW_NAME_FOR_THIS_GROUP, (utf8*)groupName, 32); break; } }
void window_player_overview_show_group_dropdown(rct_window *w, rct_widget *widget) { rct_widget *dropdownWidget; int numItems, i; int player = network_get_player_index((uint8)w->number); if (player == -1) { return; } dropdownWidget = widget - 1; numItems = network_get_num_groups(); window_dropdown_show_text_custom_width( w->x + dropdownWidget->left, w->y + dropdownWidget->top, dropdownWidget->bottom - dropdownWidget->top + 1, w->colours[1], 0, numItems, widget->right - dropdownWidget->left ); for (i = 0; i < network_get_num_groups(); i++) { gDropdownItemsFormat[i] = 1142; gDropdownItemsArgs[i] = network_get_group_name_string_id(i); } dropdown_set_checked(network_get_group_index(network_get_player_group(player)), true); }
void window_player_overview_paint(rct_window *w, rct_drawpixelinfo *dpi) { window_draw_widgets(w, dpi); window_player_draw_tab_images(dpi, w); int player = network_get_player_index((uint8)w->number); if (player == -1) { return; } // Draw current group 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); gfx_draw_string_centred_clipped( dpi, 1193, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, w->x + (widget->left + widget->right - 11) / 2, w->y + widget->top, widget->right - widget->left - 8 ); } // Draw ping int x = w->x + 90; int y = w->y + 24; RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = STR_PING; gfx_draw_string_left(dpi, STR_WINDOW_COLOUR_2_STRING, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, x, y); char ping[64]; sprintf(ping, "%d ms", network_get_player_ping(player)); gfx_draw_string(dpi, ping, w->colours[2], x + 30, y); // Draw last action x = w->x + (w->width / 2); y = w->y + w->height - 13; int width = w->width - 8; int lastaction = network_get_player_last_action(player, 0); RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = STR_ACTION_NA; if (lastaction != -999) { RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, uint16) = network_get_action_name_string_id(lastaction); } gfx_draw_string_centred_clipped(dpi, STR_LAST_ACTION_RAN, (void*)RCT2_ADDRESS_COMMON_FORMAT_ARGS, 0, x, y, width); if (w->viewport != NULL && w->var_492 != -1) { window_draw_viewport(dpi, w); } }
static void window_multiplayer_groups_invalidate(rct_window *w) { window_multiplayer_set_pressed_tab(w); window_multiplayer_anchor_border_widgets(w); window_multiplayer_groups_widgets[WIDX_PERMISSIONS_LIST].right = w->width - 4; window_multiplayer_groups_widgets[WIDX_PERMISSIONS_LIST].bottom = w->height - 0x0F; window_align_tabs(w, WIDX_TAB1, WIDX_TAB4); // select other group if one is removed while (network_get_group_index(_selectedGroup) == -1 && _selectedGroup > 0) { _selectedGroup--; } }
static void window_multiplayer_groups_paint(rct_window *w, rct_drawpixelinfo *dpi) { window_draw_widgets(w, dpi); window_multiplayer_draw_tab_images(w, dpi); rct_widget* widget = &window_multiplayer_groups_widgets[WIDX_DEFAULT_GROUP]; sint32 group = network_get_group_index(network_get_default_group()); if (group != -1) { char buffer[300]; char* lineCh; lineCh = buffer; lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer)); set_format_arg(0, const char *, buffer); gfx_draw_string_centred_clipped( dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2, w->y + widget->top, widget->right - widget->left - 8 ); }
static void window_multiplayer_players_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, sint32 scrollIndex) { sint32 y; y = 0; for (sint32 i = 0; i < network_get_num_players(); i++) { if (y > dpi->y + dpi->height) { break; } if (y + 11 >= dpi->y) { char buffer[300]; // Draw player name char* lineCh = buffer; sint32 colour = COLOUR_BLACK; if (i == w->selected_list_item) { gfx_filter_rect(dpi, 0, y, 800, y + 9, PALETTE_DARKEN_1); safe_strcpy(buffer, network_get_player_name(i), sizeof(buffer)); colour = w->colours[2]; } else { if (network_get_player_flags(i) & NETWORK_PLAYER_FLAG_ISSERVER) { lineCh = utf8_write_codepoint(lineCh, FORMAT_BABYBLUE); } else { lineCh = utf8_write_codepoint(lineCh, FORMAT_BLACK); } safe_strcpy(lineCh, network_get_player_name(i), sizeof(buffer) - (lineCh - buffer)); } gfx_clip_string(buffer, 230); gfx_draw_string(dpi, buffer, colour, 0, y - 1); // Draw group name lineCh = buffer; sint32 group = network_get_group_index(network_get_player_group(i)); if (group != -1) { lineCh = utf8_write_codepoint(lineCh, FORMAT_BLACK); safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer)); gfx_clip_string(buffer, 80); gfx_draw_string(dpi, buffer, colour, 173, y - 1); } // Draw last action sint32 action = network_get_player_last_action(i, 2000); set_format_arg(0, rct_string_id, STR_ACTION_NA); if (action != -999) { set_format_arg(0, rct_string_id, network_get_action_name_string_id(action)); } gfx_draw_string_left_clipped(dpi, STR_BLACK_STRING, gCommonFormatArgs, COLOUR_BLACK, 256, y - 1, 100); // Draw ping lineCh = buffer; sint32 ping = network_get_player_ping(i); if (ping <= 100) { lineCh = utf8_write_codepoint(lineCh, FORMAT_GREEN); } else if (ping <= 250) { lineCh = utf8_write_codepoint(lineCh, FORMAT_YELLOW); } else { lineCh = utf8_write_codepoint(lineCh, FORMAT_RED); } snprintf(lineCh, sizeof(buffer) - (lineCh - buffer), "%d ms", ping); gfx_draw_string(dpi, buffer, colour, 356, y - 1); } y += 10; } }
w->y + widget->top, widget->right - widget->left - 8 ); } sint32 x = w->x + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].left + 4; sint32 y = w->y + window_multiplayer_groups_widgets[WIDX_CONTENT_PANEL].top + 4; gfx_draw_string_left(dpi, STR_DEFAULT_GROUP, NULL, w->colours[2], x, y); y += 20; gfx_fill_rect_inset(dpi, x, y - 6, x + 310, y - 5, w->colours[1], INSET_RECT_FLAG_BORDER_INSET); widget = &window_multiplayer_groups_widgets[WIDX_SELECTED_GROUP]; group = network_get_group_index(_selectedGroup); if (group != -1) { char buffer[300]; char* lineCh; lineCh = buffer; lineCh = utf8_write_codepoint(lineCh, FORMAT_WINDOW_COLOUR_2); safe_strcpy(lineCh, network_get_group_name(group), sizeof(buffer) - (lineCh - buffer)); set_format_arg(0, const char *, buffer); gfx_draw_string_centred_clipped( dpi, STR_STRING, gCommonFormatArgs, COLOUR_BLACK, w->x + (widget->left + widget->right - 11) / 2, w->y + widget->top, widget->right - widget->left - 8