mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-08 07:28:22 -10:00
90 lines
2.5 KiB
C++
90 lines
2.5 KiB
C++
/*
|
|
* Copyright (C) Volition, Inc. 1999. All rights reserved.
|
|
*
|
|
* All source code herein is the property of Volition, Inc. You may not sell
|
|
* or otherwise commercially exploit the source or things you created based on the
|
|
* source.
|
|
*
|
|
*/
|
|
|
|
|
|
|
|
#include "io/timer.h"
|
|
#include "ui/ui.h"
|
|
#include "ui/uidefs.h"
|
|
|
|
|
|
UI_MOUSE ui_mouse;
|
|
|
|
int ui_mouse_inited = 0;
|
|
|
|
void ui_mouse_process()
|
|
{
|
|
int buttons;
|
|
|
|
if (!ui_mouse_inited) {
|
|
ui_mouse_inited = 1;
|
|
ui_mouse.x = 0;
|
|
ui_mouse.y = 0;
|
|
ui_mouse.dx = 0;
|
|
ui_mouse.dy = 0;
|
|
ui_mouse.b1_status = 0;
|
|
ui_mouse.b1_last_status = 0;
|
|
ui_mouse.b1_time_lastpressed=0;
|
|
ui_mouse.b2_status = 0;
|
|
ui_mouse.b2_last_status = 0;
|
|
ui_mouse.b2_time_lastpressed = 0;
|
|
ui_mouse.timestamp = timer_get_milliseconds();
|
|
}
|
|
|
|
buttons = mouse_get_pos_unscaled( &ui_mouse.x, &ui_mouse.y );
|
|
|
|
// check if mouse pressed
|
|
if (buttons & MOUSE_LEFT_BUTTON)
|
|
ui_mouse.b1_status = BUTTON_PRESSED;
|
|
else
|
|
ui_mouse.b1_status = BUTTON_RELEASED;
|
|
|
|
if (buttons & MOUSE_RIGHT_BUTTON)
|
|
ui_mouse.b2_status = BUTTON_PRESSED;
|
|
else
|
|
ui_mouse.b2_status = BUTTON_RELEASED;
|
|
|
|
// now check if we missed something between checks, just in case
|
|
if (mouse_down_count(MOUSE_LEFT_BUTTON))
|
|
ui_mouse.b1_status = BUTTON_PRESSED;
|
|
|
|
if (mouse_up_count(MOUSE_LEFT_BUTTON))
|
|
ui_mouse.b1_status = BUTTON_RELEASED;
|
|
|
|
if (mouse_down_count(MOUSE_RIGHT_BUTTON))
|
|
ui_mouse.b2_status = BUTTON_PRESSED;
|
|
|
|
if (mouse_up_count(MOUSE_RIGHT_BUTTON))
|
|
ui_mouse.b2_status = BUTTON_RELEASED;
|
|
|
|
// check for double clicks
|
|
if ((ui_mouse.b1_status & BUTTON_PRESSED) && (ui_mouse.b1_last_status & BUTTON_RELEASED) ) {
|
|
if ( timer_get_milliseconds() <= ui_mouse.b1_time_lastpressed + 250 )
|
|
ui_mouse.b1_status |= BUTTON_DOUBLE_CLICKED;
|
|
|
|
ui_mouse.b1_time_lastpressed = timer_get_milliseconds();
|
|
ui_mouse.b1_status |= BUTTON_JUST_PRESSED;
|
|
|
|
} else if ((ui_mouse.b1_status & BUTTON_RELEASED) && (ui_mouse.b1_last_status & BUTTON_PRESSED) )
|
|
ui_mouse.b1_status |= BUTTON_JUST_RELEASED;
|
|
|
|
if ((ui_mouse.b2_status & BUTTON_PRESSED) && (ui_mouse.b2_last_status & BUTTON_RELEASED) ) {
|
|
if ( timer_get_milliseconds() <= ui_mouse.b2_time_lastpressed + 250 )
|
|
ui_mouse.b2_status |= BUTTON_DOUBLE_CLICKED;
|
|
|
|
ui_mouse.b2_time_lastpressed = timer_get_milliseconds();
|
|
ui_mouse.b2_status |= BUTTON_JUST_PRESSED;
|
|
|
|
} else if ((ui_mouse.b2_status & BUTTON_RELEASED) && (ui_mouse.b2_last_status & BUTTON_PRESSED) )
|
|
ui_mouse.b2_status |= BUTTON_JUST_RELEASED;
|
|
|
|
ui_mouse.b1_last_status = ui_mouse.b1_status;
|
|
ui_mouse.b2_last_status = ui_mouse.b2_status;
|
|
}
|