示例#1
0
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;
    }
}
示例#2
0
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;
		}
	}
}