void window_player_overview_mouse_up(rct_window *w, rct_widgetindex widgetIndex) { switch(widgetIndex){ case WIDX_CLOSE: window_close(w); break; case WIDX_TAB_1: case WIDX_TAB_2: window_player_set_page(w, widgetIndex - WIDX_TAB_1); break; case WIDX_LOCATE:{ rct_window* mainWindow = window_get_main(); if (mainWindow != nullptr) { sint32 player = network_get_player_index((uint8)w->number); if (player == -1) { return; } LocationXYZ16 coord = network_get_player_last_action_coord(player); if (coord.x || coord.y || coord.z) { window_scroll_to_location(mainWindow, coord.x, coord.y, coord.z); } } }break; case WIDX_KICK: game_do_command(w->number, GAME_COMMAND_FLAG_APPLY, 0, 0, GAME_COMMAND_KICK_PLAYER, 0, 0); break; } }
static void window_player_update_viewport(rct_window *w, bool scroll) { int playerIndex = network_get_player_index((uint8)w->number); if (playerIndex == -1) { return; } rct_viewport *viewport = w->viewport; if (viewport != NULL) { rct_xyz16 coord = network_get_player_last_action_coord(playerIndex); if (coord.x != 0 || coord.y != 0 || coord.z != 0) { int viewX, viewY; center_2d_coordinates(coord.x, coord.y, coord.z, &viewX, &viewY, viewport); // Don't scroll if the view was originally undefined if (w->var_492 == -1) { scroll = false; } if (!scroll || w->saved_view_x != viewX || w->saved_view_y != viewY) { w->flags |= WF_SCROLLING_TO_LOCATION; w->saved_view_x = viewX; w->saved_view_y = viewY; if (!scroll) { w->viewport->view_x = viewX; w->viewport->view_y = viewY; } widget_invalidate(w, WIDX_VIEWPORT); } // Draw the viewport w->var_492 = 0; } else { // Don't draw the viewport w->var_492 = -1; } } }