Event fixes & refactoring

- added new state tracking to Event
- removed old fields from Event
- fixed some issues with Events and fps counter
dev-ui
Piotr Dziwinski 2012-09-22 00:38:17 +02:00
parent 15ff1d512b
commit 0ff419560d
28 changed files with 272 additions and 293 deletions

View File

@ -725,7 +725,7 @@ int CApplication::Run()
{ {
haveEvent = true; haveEvent = true;
Event event = ParseEvent(); Event event = ProcessSystemEvent();
if (event.type == EVENT_QUIT) if (event.type == EVENT_QUIT)
goto end; // exit the loop goto end; // exit the loop
@ -812,21 +812,11 @@ const std::string& CApplication::GetErrorMessage()
return m_errorMessage; return m_errorMessage;
} }
//! Translates SDL press state to PressState
PressState TranslatePressState(unsigned char state)
{
if (state == SDL_PRESSED)
return STATE_PRESSED;
else
return STATE_RELEASED;
}
/** The SDL event parsed is stored internally. /** The SDL event parsed is stored internally.
If event is not available or is not understood, returned event is of type EVENT_NULL. */ If event is not available or is not understood, returned event is of type EVENT_NULL. */
Event CApplication::ParseEvent() Event CApplication::ProcessSystemEvent()
{ {
Event event; Event event;
event.systemEvent = true; event.systemEvent = true;
if (m_private->currentEvent.type == SDL_QUIT) if (m_private->currentEvent.type == SDL_QUIT)
@ -843,9 +833,10 @@ Event CApplication::ParseEvent()
event.key.virt = false; event.key.virt = false;
event.key.key = m_private->currentEvent.key.keysym.sym; event.key.key = m_private->currentEvent.key.keysym.sym;
event.key.mod = m_private->currentEvent.key.keysym.mod;
event.key.state = TranslatePressState(m_private->currentEvent.key.state);
event.key.unicode = m_private->currentEvent.key.keysym.unicode; event.key.unicode = m_private->currentEvent.key.keysym.unicode;
// Use the occasion to update kmods
m_kmodState = m_private->currentEvent.key.keysym.mod;
} }
else if ( (m_private->currentEvent.type == SDL_MOUSEBUTTONDOWN) || else if ( (m_private->currentEvent.type == SDL_MOUSEBUTTONDOWN) ||
(m_private->currentEvent.type == SDL_MOUSEBUTTONUP) ) (m_private->currentEvent.type == SDL_MOUSEBUTTONUP) )
@ -860,8 +851,6 @@ Event CApplication::ParseEvent()
event.mouseWheel.dir = WHEEL_DOWN; event.mouseWheel.dir = WHEEL_DOWN;
else else
event.mouseWheel.dir = WHEEL_UP; event.mouseWheel.dir = WHEEL_UP;
event.mouseWheel.pos = m_engine->WindowToInterfaceCoords(
Math::IntPoint(m_private->currentEvent.button.x, m_private->currentEvent.button.y));
} }
} }
else else
@ -871,18 +860,24 @@ Event CApplication::ParseEvent()
else else
event.type = EVENT_MOUSE_BUTTON_UP; event.type = EVENT_MOUSE_BUTTON_UP;
event.mouseButton.button = m_private->currentEvent.button.button; event.mouseButton.button = static_cast<MouseButton>(1 << m_private->currentEvent.button.button);
event.mouseButton.state = TranslatePressState(m_private->currentEvent.button.state);
event.mouseButton.pos = m_engine->WindowToInterfaceCoords( // Use the occasion to update mouse button state
Math::IntPoint(m_private->currentEvent.button.x, m_private->currentEvent.button.y)); if (m_private->currentEvent.type == SDL_MOUSEBUTTONDOWN)
m_mouseButtonsState |= event.mouseButton.button;
else
m_mouseButtonsState &= ~event.mouseButton.button;
} }
// Use the occasion to update mouse pos
m_mousePos = m_engine->WindowToInterfaceCoords(
Math::IntPoint(m_private->currentEvent.button.x, m_private->currentEvent.button.y));
} }
else if (m_private->currentEvent.type == SDL_MOUSEMOTION) else if (m_private->currentEvent.type == SDL_MOUSEMOTION)
{ {
event.type = EVENT_MOUSE_MOVE; event.type = EVENT_MOUSE_MOVE;
event.mouseMove.state = TranslatePressState(m_private->currentEvent.button.state); m_mousePos = m_engine->WindowToInterfaceCoords(
event.mouseMove.pos = m_engine->WindowToInterfaceCoords(
Math::IntPoint(m_private->currentEvent.button.x, m_private->currentEvent.button.y)); Math::IntPoint(m_private->currentEvent.button.x, m_private->currentEvent.button.y));
} }
else if (m_private->currentEvent.type == SDL_JOYAXISMOTION) else if (m_private->currentEvent.type == SDL_JOYAXISMOTION)
@ -901,7 +896,6 @@ Event CApplication::ParseEvent()
event.type = EVENT_JOY_BUTTON_UP; event.type = EVENT_JOY_BUTTON_UP;
event.joyButton.button = m_private->currentEvent.jbutton.button; event.joyButton.button = m_private->currentEvent.jbutton.button;
event.joyButton.state = TranslatePressState(m_private->currentEvent.jbutton.state);
} }
else if (m_private->currentEvent.type == SDL_ACTIVEEVENT) else if (m_private->currentEvent.type == SDL_ACTIVEEVENT)
{ {
@ -917,35 +911,10 @@ Event CApplication::ParseEvent()
event.active.gain = m_private->currentEvent.active.gain == 1; event.active.gain = m_private->currentEvent.active.gain == 1;
} }
return event;
}
/** if (event.type == EVENT_KEY_DOWN)
* Processes incoming events. It is the first function called after an event is captured.
* Event is modified, updating its tracked keys state and mouse position to current values.
* Function returns \c true if the event is to be passed on to other processing functions
* or \c false if not. */
bool CApplication::ProcessEvent(Event &event)
{
CLogger *l = GetLogger();
event.trackedKeys = m_trackedKeys;
event.mousePos = m_mousePos;
if (event.type == EVENT_ACTIVE)
{ {
if (m_debugMode) if (event.key.key == KEY(KP8))
l->Info("Focus change: active = %s\n", event.active.gain ? "true" : "false");
}
else if (event.type == EVENT_KEY_DOWN)
{
m_kmodState = event.key.mod;
if ((m_kmodState & KEY_MOD(SHIFT)) != 0)
m_trackedKeys |= TRKEY_SHIFT;
else if ((m_kmodState & KEY_MOD(CTRL)) != 0)
m_trackedKeys |= TRKEY_CONTROL;
else if (event.key.key == KEY(KP8))
m_trackedKeys |= TRKEY_NUM_UP; m_trackedKeys |= TRKEY_NUM_UP;
else if (event.key.key == KEY(KP2)) else if (event.key.key == KEY(KP2))
m_trackedKeys |= TRKEY_NUM_DOWN; m_trackedKeys |= TRKEY_NUM_DOWN;
@ -964,13 +933,7 @@ bool CApplication::ProcessEvent(Event &event)
} }
else if (event.type == EVENT_KEY_UP) else if (event.type == EVENT_KEY_UP)
{ {
m_kmodState = event.key.mod; if (event.key.key == KEY(KP8))
if ((m_kmodState & KEY_MOD(SHIFT)) != 0)
m_trackedKeys &= ~TRKEY_SHIFT;
else if ((m_kmodState & KEY_MOD(CTRL)) != 0)
m_trackedKeys &= ~TRKEY_CONTROL;
else if (event.key.key == KEY(KP8))
m_trackedKeys &= ~TRKEY_NUM_UP; m_trackedKeys &= ~TRKEY_NUM_UP;
else if (event.key.key == KEY(KP2)) else if (event.key.key == KEY(KP2))
m_trackedKeys &= ~TRKEY_NUM_DOWN; m_trackedKeys &= ~TRKEY_NUM_DOWN;
@ -987,14 +950,23 @@ bool CApplication::ProcessEvent(Event &event)
else if (event.key.key == KEY(PAGEDOWN)) else if (event.key.key == KEY(PAGEDOWN))
m_trackedKeys &= ~TRKEY_PAGE_DOWN; m_trackedKeys &= ~TRKEY_PAGE_DOWN;
} }
else if (event.type == EVENT_MOUSE_BUTTON_DOWN)
{ event.trackedKeysState = m_trackedKeys;
m_mouseButtonsState |= 1 << event.mouseButton.button; event.kmodState = m_kmodState;
} event.mousePos = m_mousePos;
else if (event.type == EVENT_MOUSE_BUTTON_UP) event.mouseButtonsState = m_mouseButtonsState;
{
m_mouseButtonsState &= ~(1 << event.mouseButton.button); return event;
} }
/**
* Processes incoming events. It is the first function called after an event is captured.
* Event is modified, updating its tracked keys state and mouse position to current values.
* Function returns \c true if the event is to be passed on to other processing functions
* or \c false if not. */
bool CApplication::ProcessEvent(const Event &event)
{
CLogger *l = GetLogger();
// Print the events in debug mode to test the code // Print the events in debug mode to test the code
if (m_debugMode) if (m_debugMode)
@ -1005,28 +977,21 @@ bool CApplication::ProcessEvent(Event &event)
case EVENT_KEY_UP: case EVENT_KEY_UP:
l->Info("EVENT_KEY_%s:\n", (event.type == EVENT_KEY_DOWN) ? "DOWN" : "UP"); l->Info("EVENT_KEY_%s:\n", (event.type == EVENT_KEY_DOWN) ? "DOWN" : "UP");
l->Info(" virt = %s\n", (event.key.virt) ? "true" : "false"); l->Info(" virt = %s\n", (event.key.virt) ? "true" : "false");
l->Info(" key = %4x\n", event.key.key); l->Info(" key = %d\n", event.key.key);
l->Info(" state = %s\n", (event.key.state == STATE_PRESSED) ? "STATE_PRESSED" : "STATE_RELEASED"); l->Info(" unicode = 0x%04x\n", event.key.unicode);
l->Info(" mod = %4x\n", event.key.mod);
l->Info(" unicode = %4x\n", event.key.unicode);
break; break;
case EVENT_MOUSE_MOVE: case EVENT_MOUSE_MOVE:
l->Info("EVENT_MOUSE_MOVE:\n"); l->Info("EVENT_MOUSE_MOVE:\n");
l->Info(" state = %s\n", (event.mouseMove.state == STATE_PRESSED) ? "STATE_PRESSED" : "STATE_RELEASED");
l->Info(" pos = (%f, %f)\n", event.mouseMove.pos.x, event.mouseMove.pos.y);
break; break;
case EVENT_MOUSE_BUTTON_DOWN: case EVENT_MOUSE_BUTTON_DOWN:
case EVENT_MOUSE_BUTTON_UP: case EVENT_MOUSE_BUTTON_UP:
l->Info("EVENT_MOUSE_BUTTON_%s:\n", (event.type == EVENT_MOUSE_BUTTON_DOWN) ? "DOWN" : "UP"); l->Info("EVENT_MOUSE_BUTTON_%s:\n", (event.type == EVENT_MOUSE_BUTTON_DOWN) ? "DOWN" : "UP");
l->Info(" button = %d\n", event.mouseButton.button); l->Info(" button = %d\n", event.mouseButton.button);
l->Info(" state = %s\n", (event.mouseButton.state == STATE_PRESSED) ? "STATE_PRESSED" : "STATE_RELEASED");
l->Info(" pos = (%f, %f)\n", event.mouseButton.pos.x, event.mouseButton.pos.y);
break; break;
case EVENT_MOUSE_WHEEL: case EVENT_MOUSE_WHEEL:
l->Info("EVENT_MOUSE_WHEEL:\n"); l->Info("EVENT_MOUSE_WHEEL:\n");
l->Info(" dir = %s\n", (event.mouseWheel.dir == WHEEL_DOWN) ? "WHEEL_DOWN" : "WHEEL_UP"); l->Info(" dir = %s\n", (event.mouseWheel.dir == WHEEL_DOWN) ? "WHEEL_DOWN" : "WHEEL_UP");
l->Info(" pos = (%f, %f)\n", event.mouseWheel.pos.x, event.mouseWheel.pos.y); break;
break;
case EVENT_JOY_AXIS: case EVENT_JOY_AXIS:
l->Info("EVENT_JOY_AXIS:\n"); l->Info("EVENT_JOY_AXIS:\n");
l->Info(" axis = %d\n", event.joyAxis.axis); l->Info(" axis = %d\n", event.joyAxis.axis);
@ -1036,7 +1001,6 @@ bool CApplication::ProcessEvent(Event &event)
case EVENT_JOY_BUTTON_UP: case EVENT_JOY_BUTTON_UP:
l->Info("EVENT_JOY_BUTTON_%s:\n", (event.type == EVENT_JOY_BUTTON_DOWN) ? "DOWN" : "UP"); l->Info("EVENT_JOY_BUTTON_%s:\n", (event.type == EVENT_JOY_BUTTON_DOWN) ? "DOWN" : "UP");
l->Info(" button = %d\n", event.joyButton.button); l->Info(" button = %d\n", event.joyButton.button);
l->Info(" state = %s\n", (event.joyButton.state == STATE_PRESSED) ? "STATE_PRESSED" : "STATE_RELEASED");
break; break;
case EVENT_ACTIVE: case EVENT_ACTIVE:
l->Info("EVENT_ACTIVE:\n"); l->Info("EVENT_ACTIVE:\n");
@ -1044,8 +1008,16 @@ bool CApplication::ProcessEvent(Event &event)
l->Info(" gain = %s\n", event.active.gain ? "true" : "false"); l->Info(" gain = %s\n", event.active.gain ? "true" : "false");
break; break;
default: default:
l->Info("Event type = %d:\n", static_cast<int>(event.type));
break; break;
} }
l->Info(" systemEvent = %s\n", event.systemEvent ? "true" : "false");
l->Info(" rTime = %f\n", event.rTime);
l->Info(" kmodState = %04x\n", event.kmodState);
l->Info(" trackedKeysState = %04x\n", event.trackedKeysState);
l->Info(" mousePos = %f, %f\n", event.mousePos.x, event.mousePos.y);
l->Info(" mouseButtonsState = %02x\n", event.mouseButtonsState);
} }
// By default, pass on all events // By default, pass on all events
@ -1081,9 +1053,9 @@ Event CApplication::CreateVirtualEvent(const Event& sourceEvent)
virtualEvent.type = EVENT_KEY_DOWN; virtualEvent.type = EVENT_KEY_DOWN;
else else
virtualEvent.type = EVENT_KEY_UP; virtualEvent.type = EVENT_KEY_UP;
virtualEvent.key.virt = true; virtualEvent.key.virt = true;
virtualEvent.key.key = VIRTUAL_JOY(sourceEvent.joyButton.button); virtualEvent.key.key = VIRTUAL_JOY(sourceEvent.joyButton.button);
virtualEvent.key.mod = 0;
virtualEvent.key.unicode = 0; virtualEvent.key.unicode = 0;
} }
else else
@ -1161,6 +1133,11 @@ void CApplication::StepSimulation()
Event frameEvent(EVENT_FRAME); Event frameEvent(EVENT_FRAME);
frameEvent.systemEvent = true;
frameEvent.trackedKeysState = m_trackedKeys;
frameEvent.kmodState = m_kmodState;
frameEvent.mousePos = m_mousePos;
frameEvent.mouseButtonsState = m_mouseButtonsState;
frameEvent.rTime = m_relTime; frameEvent.rTime = m_relTime;
m_eventQueue->AddEvent(frameEvent); m_eventQueue->AddEvent(frameEvent);
} }
@ -1280,6 +1257,7 @@ bool CApplication::GetMouseButtonState(int index)
void CApplication::ResetKeyStates() void CApplication::ResetKeyStates()
{ {
GetLogger()->Info("Reset key states\n");
m_trackedKeys = 0; m_trackedKeys = 0;
m_kmodState = 0; m_kmodState = 0;
m_robotMain->ResetKeyStates(); m_robotMain->ResetKeyStates();

View File

@ -76,20 +76,18 @@ enum VideoQueryResult
/** /**
* \enum TrackedKeys * \enum TrackedKeys
* \brief Keys (or kmods) whose state (pressed/released) is tracked by CApplication * \brief Additional keys whose state (pressed/released) is tracked by CApplication
*/ */
enum TrackedKey enum TrackedKey
{ {
TRKEY_SHIFT = (1<<0), TRKEY_NUM_UP = (1<<0),
TRKEY_CONTROL = (1<<1), TRKEY_NUM_DOWN = (1<<1),
TRKEY_NUM_UP = (1<<2), TRKEY_NUM_LEFT = (1<<2),
TRKEY_NUM_DOWN = (1<<3), TRKEY_NUM_RIGHT = (1<<3),
TRKEY_NUM_LEFT = (1<<4), TRKEY_NUM_PLUS = (1<<4),
TRKEY_NUM_RIGHT = (1<<5), TRKEY_NUM_MINUS = (1<<5),
TRKEY_NUM_PLUS = (1<<6), TRKEY_PAGE_UP = (1<<6),
TRKEY_NUM_MINUS = (1<<7), TRKEY_PAGE_DOWN = (1<<7)
TRKEY_PAGE_UP = (1<<8),
TRKEY_PAGE_DOWN = (1<<9)
}; };
/** /**
@ -305,11 +303,11 @@ protected:
bool CreateVideoSurface(); bool CreateVideoSurface();
//! Processes the captured SDL event to Event struct //! Processes the captured SDL event to Event struct
Event ParseEvent(); Event ProcessSystemEvent();
//! If applicable, creates a virtual event to match the changed state as of new event //! If applicable, creates a virtual event to match the changed state as of new event
Event CreateVirtualEvent(const Event& sourceEvent); Event CreateVirtualEvent(const Event& sourceEvent);
//! Handles some incoming events //! Handles some incoming events
bool ProcessEvent(Event &event); bool ProcessEvent(const Event& event);
//! Renders the image in window //! Renders the image in window
void Render(); void Render();
@ -375,17 +373,17 @@ protected:
bool m_simulationSuspended; bool m_simulationSuspended;
//@} //@}
//! Current state of key modifiers (mask of SDLMod) //! Current state of key modifiers (bitmask of SDLMod)
unsigned int m_kmodState; unsigned int m_kmodState;
//! Current state of some tracked keys (mask of TrackedKey) //! Current state of some tracked keys (bitmask of TrackedKey enum values)
unsigned int m_trackedKeys; unsigned int m_trackedKeys;
//! Current state of mouse buttons (mask of button indexes)
unsigned int m_mouseButtonsState;
//! Current mode of mouse //! Current mode of mouse
MouseMode m_mouseMode; MouseMode m_mouseMode;
//! Current position of mouse cursor //! Current position of mouse cursor
Math::Point m_mousePos; Math::Point m_mousePos;
//! Current state of mouse buttons (bitmask of MouseButton enum values)
unsigned int m_mouseButtonsState;
//! Info about current joystick device //! Info about current joystick device
JoystickDevice m_joystick; JoystickDevice m_joystick;

View File

@ -30,43 +30,34 @@
class CInstanceManager; class CInstanceManager;
/**
* \enum PressState
* \brief State of key/mouse button
*/
enum PressState
{
STATE_PRESSED,
STATE_RELEASED
};
/** /**
* \struct KeyEventData * \struct KeyEventData
* \brief Additional data for keyboard event * \brief Additional data for keyboard event
*/ */
struct KeyEventData struct KeyEventData
{ {
//! STATE_PRESSED or STATE_RELEASED */ //! If true, the key is a virtual code generated by certain key modifiers or joystick buttons
PressState state;
//! If true, the key is a virtual code generated by key modifier press or joystick button press
bool virt; bool virt;
//! Key symbol: KEY(...) macro value or virtual key VIRTUAL_... (from common/key.h) //! Key symbol: KEY(...) macro value or virtual key VIRTUAL_... (from common/key.h)
unsigned int key; unsigned int key;
//! Keyboard modifiers: a bitmask made of KEY_MOD(...) macro values (from common/key.h)
unsigned int mod;
//! Unicode character //! Unicode character
//! NOTE: applicable only to EVENT_KEY_DOWN events!
unsigned int unicode; unsigned int unicode;
}; };
/** \struct MouseMotionEventData /**
\brief Additional data for mouse move event */ * \enum MouseButton
struct MouseMoveEventData * \brief Mouse button
*
* Values are a bitmask to have a state bitmask
*/
enum MouseButton
{ {
//! Current button state MOUSE_BUTTON_LEFT = (1<<1),
PressState state; MOUSE_BUTTON_MIDDLE = (1<<2),
//! Position of mouse in normalized coordinates (0..1) MOUSE_BUTTON_RIGHT = (1<<3),
Math::Point pos; //! There may be additional mouse buttons >= this value
MOUSE_BUTTON_OTHER = (1<<4)
}; };
/** /**
@ -75,12 +66,8 @@ struct MouseMoveEventData
*/ */
struct MouseButtonEventData struct MouseButtonEventData
{ {
//! The mouse button index //! The mouse button
unsigned char button; MouseButton button;
//! STATE_PRESSED or STATE_RELEASED
PressState state;
//! Position of mouse in normalized coordinates (0..1)
Math::Point pos;
}; };
/** /**
@ -101,8 +88,6 @@ struct MouseWheelEventData
{ {
//! Wheel direction //! Wheel direction
WheelDirection dir; WheelDirection dir;
//! Position of mouse in normalized coordinates (0..1)
Math::Point pos;
}; };
/** /**
@ -125,8 +110,6 @@ struct JoyButtonEventData
{ {
//! The joystick button index //! The joystick button index
unsigned char button; unsigned char button;
//! STATE_PRESSED or STATE_RELEASED
PressState state;
}; };
/** /**
@ -170,20 +153,48 @@ struct ActiveEventData
**/ **/
struct Event struct Event
{ {
//! Type of event (EVENT_*) //! Type of event
EventType type; EventType type;
//! If true, the event was produced by system (SDL); else, it has come from user interface //! If true, the event was produced by system in CApplication; else, it has come from game engine
bool systemEvent; bool systemEvent;
//! Relative time since last EVENT_FRAME
//! Scope: only EVENT_FRAME events
// TODO: gradually replace the usage of this with new CApplication's time functions
float rTime;
//! Motion vector set by keyboard or joystick (managed by CRobotMain)
//! Scope: all system events
Math::Vector motionInput;
//! Current state of keyboard modifier keys: bitmask made of KEY_MOD(...) macro values (from common/key.h)
//! Scope: all system events
unsigned int kmodState;
//! Current state of tracked keys: bitmask of TrackedKey enum values
//! Scope: all system events
unsigned int trackedKeysState;
//! Current position of mouse cursor in interface coords
//! Scope: all system events
Math::Point mousePos;
//! Current state of mouse buttons: bitmask of MouseButton enum values
//! Scope: all system events
unsigned int mouseButtonsState;
//! Custom parameter that may be set for some events
//! Scope: some interface events
long customParam;
//! Union with additional data, applicable only to some events
union union
{ {
//! Additional data for EVENT_KEY_DOWN and EVENT_KEY_UP //! Additional data for EVENT_KEY_DOWN and EVENT_KEY_UP
KeyEventData key; KeyEventData key;
//! Additional data for EVENT_MOUSE_BUTTON_DOWN and EVENT_MOUSE_BUTTON_UP //! Additional data for EVENT_MOUSE_BUTTON_DOWN and EVENT_MOUSE_BUTTON_UP
MouseButtonEventData mouseButton; MouseButtonEventData mouseButton;
//! Additional data for EVENT_MOUSE_MOVE
MouseMoveEventData mouseMove;
//! Additional data for EVENT_MOUSE_WHEEL //! Additional data for EVENT_MOUSE_WHEEL
MouseWheelEventData mouseWheel; MouseWheelEventData mouseWheel;
//! Additional data for EVENT_JOY //! Additional data for EVENT_JOY
@ -194,35 +205,15 @@ struct Event
ActiveEventData active; ActiveEventData active;
}; };
//! State of tracked keys (mask of TrackedKey enum values) Event(EventType type = EVENT_NULL)
unsigned int trackedKeys;
//! Mouse position is provided also for other types of events besides mouse events
Math::Point mousePos;
//! Motion vector set by keyboard or joystick
Math::Vector motionInput;
// TODO: remove and replace references with trackedKeys
short keyState;
// TODO: remove and replace references with mousePos
Math::Point pos;
// TODO: remove
long param; // parameter
// TODO: remove in longer term (use CApplication's new time functions instead)
float rTime; // relative time
Event(EventType aType = EVENT_NULL)
{ {
type = aType; this->type = type;
systemEvent = false;
trackedKeys = 0;
param = 0; systemEvent = false;
rTime = 0.0f; rTime = 0.0f;
mouseButtonsState = 0;
trackedKeysState = 0;
customParam = 0;
} }
}; };
@ -254,6 +245,7 @@ public:
void Flush(); void Flush();
//! Adds an event to the queue //! Adds an event to the queue
bool AddEvent(const Event &event); bool AddEvent(const Event &event);
//! Removes and returns an event from queue front
bool GetEvent(Event &event); bool GetEvent(Event &event);
protected: protected:

View File

@ -60,10 +60,16 @@ enum EventType
//! Event sent after releasing a joystick button //! Event sent after releasing a joystick button
EVENT_JOY_BUTTON_UP = 14, EVENT_JOY_BUTTON_UP = 14,
/* Events sent/received in game and user interface */
EVENT_UPDINTERFACE = 20, EVENT_UPDINTERFACE = 20,
EVENT_WIN = 30, EVENT_WIN = 30,
EVENT_LOST = 31, EVENT_LOST = 31,
//! CEdit focus
EVENT_FOCUS = 35,
EVENT_BUTTON_OK = 40, EVENT_BUTTON_OK = 40,
EVENT_BUTTON_CANCEL = 41, EVENT_BUTTON_CANCEL = 41,
EVENT_BUTTON_NEXT = 42, EVENT_BUTTON_NEXT = 42,

View File

@ -18,6 +18,8 @@
#include "graphics/engine/camera.h" #include "graphics/engine/camera.h"
#include "app/app.h"
#include "common/iman.h" #include "common/iman.h"
#include "graphics/engine/engine.h" #include "graphics/engine/engine.h"
@ -1022,7 +1024,7 @@ bool CCamera::EventProcess(const Event &event)
bool CCamera::EventMouseMove(const Event &event) bool CCamera::EventMouseMove(const Event &event)
{ {
m_mousePos = event.pos; m_mousePos = event.mousePos;
return true; return true;
} }
@ -1193,7 +1195,7 @@ bool CCamera::EventFrameFree(const Event &event)
m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, event.motionInput.y * event.rTime * factor * m_speed); m_eyePt = Math::LookatPoint(m_eyePt, m_directionH, m_directionV, event.motionInput.y * event.rTime * factor * m_speed);
// Left/Right // Left/Right
if ( event.keyState & KS_CONTROL ) if ( event.kmodState & KEY_MOD(CTRL) )
{ {
if ( event.motionInput.x < 0.0f ) if ( event.motionInput.x < 0.0f )
m_eyePt = Math::LookatPoint(m_eyePt, m_directionH + Math::PI / 2.0f, m_directionV, -event.motionInput.x * event.rTime * factor * m_speed); m_eyePt = Math::LookatPoint(m_eyePt, m_directionH + Math::PI / 2.0f, m_directionV, -event.motionInput.x * event.rTime * factor * m_speed);
@ -1206,12 +1208,12 @@ bool CCamera::EventFrameFree(const Event &event)
} }
// PageUp/PageDown // PageUp/PageDown
if ( event.keyState & KS_NUMMINUS ) if ( event.trackedKeysState & TRKEY_NUM_MINUS )
{ {
if (m_heightEye < 500.0f) if (m_heightEye < 500.0f)
m_heightEye += event.rTime * factor * m_speed; m_heightEye += event.rTime * factor * m_speed;
} }
if ( event.keyState & KS_NUMPLUS ) if ( event.trackedKeysState & TRKEY_NUM_PLUS )
{ {
if (m_heightEye > -2.0f) if (m_heightEye > -2.0f)
m_heightEye -= event.rTime * factor * m_speed; m_heightEye -= event.rTime * factor * m_speed;
@ -1299,12 +1301,12 @@ bool CCamera::EventFrameBack(const Event &event)
type = m_cameraObj->GetType(); type = m_cameraObj->GetType();
// +/-. // +/-.
if (event.keyState & KS_NUMPLUS) if (event.trackedKeysState & TRKEY_NUM_PLUS)
{ {
m_backDist -= event.rTime * 30.0f * m_speed; m_backDist -= event.rTime * 30.0f * m_speed;
if (m_backDist < m_backMin) m_backDist = m_backMin; if (m_backDist < m_backMin) m_backDist = m_backMin;
} }
if (event.keyState & KS_NUMMINUS) if (event.trackedKeysState & TRKEY_NUM_MINUS)
{ {
m_backDist += event.rTime * 30.0f * m_speed; m_backDist += event.rTime * 30.0f * m_speed;
if (m_backDist > 200.0f) m_backDist = 200.0f; if (m_backDist > 200.0f) m_backDist = 200.0f;
@ -1448,12 +1450,12 @@ bool CCamera::EventFrameBack(const Event &event)
bool CCamera::EventFrameFix(const Event &event) bool CCamera::EventFrameFix(const Event &event)
{ {
// +/-. // +/-.
if (event.keyState & KS_NUMPLUS) if (event.trackedKeysState & TRKEY_NUM_PLUS)
{ {
m_fixDist -= event.rTime * 30.0f * m_speed; m_fixDist -= event.rTime * 30.0f * m_speed;
if (m_fixDist < 10.0f) m_fixDist = 10.0f; if (m_fixDist < 10.0f) m_fixDist = 10.0f;
} }
if (event.keyState & KS_NUMMINUS) if (event.trackedKeysState & TRKEY_NUM_MINUS)
{ {
m_fixDist += event.rTime * 30.0f * m_speed; m_fixDist += event.rTime * 30.0f * m_speed;
if (m_fixDist > 200.0f) m_fixDist = 200.0f; if (m_fixDist > 200.0f) m_fixDist = 200.0f;
@ -1552,24 +1554,24 @@ bool CCamera::EventFrameVisit(const Event &event)
m_visitTime += event.rTime; m_visitTime += event.rTime;
// +/-. // +/-.
if (event.keyState & KS_NUMPLUS) if (event.trackedKeysState & TRKEY_NUM_PLUS)
{ {
m_visitDist -= event.rTime * 50.0f * m_speed; m_visitDist -= event.rTime * 50.0f * m_speed;
if (m_visitDist < 20.0f) m_visitDist = 20.0f; if (m_visitDist < 20.0f) m_visitDist = 20.0f;
} }
if (event.keyState & KS_NUMMINUS) if (event.trackedKeysState & TRKEY_NUM_MINUS)
{ {
m_visitDist += event.rTime * 50.0f * m_speed; m_visitDist += event.rTime * 50.0f * m_speed;
if (m_visitDist > 200.0f) m_visitDist = 200.0f; if (m_visitDist > 200.0f) m_visitDist = 200.0f;
} }
// PageUp/Down. // PageUp/Down.
if (event.keyState & KS_PAGEUP) if (event.trackedKeysState & TRKEY_PAGE_UP)
{ {
m_visitDirectionV -= event.rTime * 1.0f * m_speed; m_visitDirectionV -= event.rTime * 1.0f * m_speed;
if (m_visitDirectionV < -Math::PI * 0.40f) m_visitDirectionV = -Math::PI * 0.40f; if (m_visitDirectionV < -Math::PI * 0.40f) m_visitDirectionV = -Math::PI * 0.40f;
} }
if (event.keyState & KS_PAGEDOWN) if (event.trackedKeysState & TRKEY_PAGE_DOWN)
{ {
m_visitDirectionV += event.rTime * 1.0f * m_speed; m_visitDirectionV += event.rTime * 1.0f * m_speed;
if (m_visitDirectionV > 0.0f ) m_visitDirectionV = 0.0f; if (m_visitDirectionV > 0.0f ) m_visitDirectionV = 0.0f;

View File

@ -356,6 +356,7 @@ void CEngine::FrameUpdate()
CopyTimeStamp(m_lastFrameTime, m_currentFrameTime); CopyTimeStamp(m_lastFrameTime, m_currentFrameTime);
m_fps = m_fpsCounter / diff; m_fps = m_fpsCounter / diff;
m_fpsCounter = 0;
if (m_showStats) if (m_showStats)
{ {

View File

@ -578,7 +578,7 @@ bool CBrain::EventProcess(const Event &event)
} }
if ( action == EVENT_OBJECT_TARGET && !m_object->GetTrainer() ) if ( action == EVENT_OBJECT_TARGET && !m_object->GetTrainer() )
{ {
err = StartTaskGunGoal((event.pos.y-0.50f)*1.3f, (event.pos.x-0.50f)*2.0f); err = StartTaskGunGoal((event.mousePos.y-0.50f)*1.3f, (event.mousePos.x-0.50f)*2.0f);
} }
if ( action == EVENT_OBJECT_FIREANT ) if ( action == EVENT_OBJECT_FIREANT )

View File

@ -1333,8 +1333,8 @@ bool CRobotMain::EventProcess(Event &event)
{ {
if (event.type == EVENT_MOUSE_MOVE) if (event.type == EVENT_MOUSE_MOVE)
{ {
m_lastMousePos = event.pos; m_lastMousePos = event.mousePos;
HiliteObject(event.pos); HiliteObject(event.mousePos);
} }
return false; return false;
} }
@ -1344,8 +1344,8 @@ bool CRobotMain::EventProcess(Event &event)
if (event.type == EVENT_MOUSE_MOVE) if (event.type == EVENT_MOUSE_MOVE)
{ {
m_lastMousePos = event.pos; m_lastMousePos = event.mousePos;
HiliteObject(event.pos); HiliteObject(event.mousePos);
} }
if (m_displayInfo != nullptr) // current info? if (m_displayInfo != nullptr) // current info?
@ -1514,7 +1514,7 @@ bool CRobotMain::EventProcess(Event &event)
if (event.mouseButton.button != 1) // only left mouse button if (event.mouseButton.button != 1) // only left mouse button
break; break;
obj = DetectObject(event.pos); obj = DetectObject(event.mousePos);
if (!m_shortCut) obj = nullptr; if (!m_shortCut) obj = nullptr;
if (obj != nullptr && obj->GetType() == OBJECT_TOTO) if (obj != nullptr && obj->GetType() == OBJECT_TOTO)
{ {

View File

@ -101,11 +101,11 @@ bool CButton::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
m_bCapture = true; m_bCapture = true;
m_repeat = DELAY1; m_repeat = DELAY1;
@ -125,10 +125,10 @@ bool CButton::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && //left if ( event.type == EVENT_MOUSE_BUTTON_UP && //left
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
m_bCapture ) m_bCapture )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
if ( !m_bImmediat && !m_bRepeat ) if ( !m_bImmediat && !m_bRepeat )
{ {

View File

@ -73,11 +73,11 @@ bool CCheck::EventProcess(const Event &event)
CControl::EventProcess(event); CControl::EventProcess(event);
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
Event newEvent = event; Event newEvent = event;
newEvent.type = m_eventType; newEvent.type = m_eventType;

View File

@ -105,11 +105,11 @@ bool CColor::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
m_repeat = DELAY1; m_repeat = DELAY1;
@ -120,7 +120,7 @@ bool CColor::EventProcess(const Event &event)
} }
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == 1) if ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
m_repeat = 0.0f; m_repeat = 0.0f;
} }

View File

@ -60,9 +60,9 @@ bool CCompass::EventProcess(const Event &event)
CControl::EventProcess(event); CControl::EventProcess(event);
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1) event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
Event newEvent = event; Event newEvent = event;
newEvent.type = m_eventType; newEvent.type = m_eventType;

View File

@ -304,9 +304,9 @@ bool CControl::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE ) if ( event.type == EVENT_MOUSE_MOVE )
{ {
m_glintMouse = event.mouseMove.pos; m_glintMouse = event.mousePos;
if ( Detect(event.mouseMove.pos) ) if ( Detect(event.mousePos) )
{ {
if ( (m_state & STATE_VISIBLE) && if ( (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE ) ) (m_state & STATE_ENABLE ) )
@ -321,9 +321,9 @@ bool CControl::EventProcess(const Event &event)
} }
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == 1) if ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
if ( Detect(event.mouseButton.pos) ) if ( Detect(event.mousePos) )
{ {
m_bCapture = true; m_bCapture = true;
SetState(STATE_PRESS); SetState(STATE_PRESS);
@ -332,7 +332,7 @@ bool CControl::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture ) if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
{ {
if ( Detect(event.mouseMove.pos) ) if ( Detect(event.mousePos) )
{ {
SetState(STATE_PRESS); SetState(STATE_PRESS);
} }
@ -342,7 +342,7 @@ bool CControl::EventProcess(const Event &event)
} }
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && m_bCapture && event.mouseButton.button == 1) if ( event.type == EVENT_MOUSE_BUTTON_UP && m_bCapture && event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
m_bCapture = false; m_bCapture = false;
ClearState(STATE_PRESS); ClearState(STATE_PRESS);

View File

@ -103,7 +103,7 @@ bool CDisplayInfo::EventProcess(const Event &event)
toto = static_cast<CMotionToto*>(m_toto->GetMotion()); toto = static_cast<CMotionToto*>(m_toto->GetMotion());
if ( toto != 0 ) if ( toto != 0 )
{ {
toto->SetMousePos(event.mouseMove.pos); toto->SetMousePos(event.mousePos);
} }
} }
} }
@ -201,8 +201,8 @@ bool CDisplayInfo::EventProcess(const Event &event)
} }
} }
if ( ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == 1 )|| if ( ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == MOUSE_BUTTON_LEFT )||
( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == 1 )) ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == MOUSE_BUTTON_LEFT ))
{ {
UpdateCopyButton(); UpdateCopyButton();
} }

View File

@ -240,14 +240,14 @@ bool CEdit::EventProcess(const Event &event)
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_UP && event.mouseWheel.dir == WHEEL_UP &&
Detect(event.pos) ) Detect(event.mousePos) )
{ {
Scroll(m_lineFirst-3, true); Scroll(m_lineFirst-3, true);
return true; return true;
} }
if (event.type == EVENT_KEY_DOWN && if (event.type == EVENT_KEY_DOWN &&
event.mouseWheel.dir == WHEEL_DOWN && event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mouseWheel.pos) ) Detect(event.mousePos) )
{ {
Scroll(m_lineFirst+3, true); Scroll(m_lineFirst+3, true);
return true; return true;
@ -263,8 +263,8 @@ bool CEdit::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE ) if ( event.type == EVENT_MOUSE_MOVE )
{ {
if ( Detect(event.mouseMove.pos) && if ( Detect(event.mousePos) &&
event.mouseMove.pos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) ) event.mousePos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) )
{ {
if ( m_bEdit ) if ( m_bEdit )
{ {
@ -272,7 +272,7 @@ bool CEdit::EventProcess(const Event &event)
} }
else else
{ {
if ( IsLinkPos(event.mouseMove.pos) ) if ( IsLinkPos(event.mousePos) )
{ {
m_engine->SetMouseType(Gfx::ENG_MOUSE_HAND); m_engine->SetMouseType(Gfx::ENG_MOUSE_HAND);
} }
@ -297,23 +297,23 @@ bool CEdit::EventProcess(const Event &event)
if ( event.type == EVENT_KEY_DOWN && m_bFocus ) if ( event.type == EVENT_KEY_DOWN && m_bFocus )
{ {
bShift = ( (event.trackedKeys & TRKEY_SHIFT) != 0 ); bShift = ( (event.kmodState & KEY_MOD(SHIFT) ) != 0 );
bControl = ( (event.trackedKeys & TRKEY_CONTROL) != 0); bControl = ( (event.kmodState & KEY_MOD(CTRL) ) != 0);
if ( (event.key.unicode == 'X' && !bShift && bControl) || if ( (event.key.unicode == 'X' && !bShift && bControl) ||
(event.key.key == KEY(DELETE) && bShift && !bControl) ) ((event.kmodState & KEY_MOD(CTRL)) != 0 && bShift && !bControl) )
{ {
Cut(); Cut();
return true; return true;
} }
if ( (event.key.unicode == 'C' && !bShift && bControl) || if ( (event.key.unicode == 'C' && !bShift && bControl) ||
(event.key.key == KEY(INSERT) && !bShift && bControl) ) ((event.kmodState & KEY_MOD(CTRL)) != 0 && !bShift && bControl) )
{ {
Copy(); Copy();
return true; return true;
} }
if ( (event.key.unicode == 'V' && !bShift && bControl) || if ( (event.key.unicode == 'V' && !bShift && bControl) ||
(event.param == KEY(INSERT) && bShift && !bControl) ) ((event.kmodState & KEY_MOD(CTRL)) != 0 && bShift && !bControl) )
{ {
Paste(); Paste();
return true; return true;
@ -471,9 +471,9 @@ bool CEdit::EventProcess(const Event &event)
} }
} }
if ( event.type == EVENT_ACTIVE ) if ( event.type == EVENT_FOCUS )
{ {
if ( event.param == m_eventType ) if ( event.customParam == m_eventType )
{ {
m_bFocus = true; m_bFocus = true;
} }
@ -484,15 +484,15 @@ bool CEdit::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1) event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
m_mouseFirstPos = event.pos; m_mouseFirstPos = event.mousePos;
m_mouseLastPos = event.pos; m_mouseLastPos = event.mousePos;
if ( Detect(event.pos) ) if ( Detect(event.mousePos) )
{ {
if ( event.pos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) ) if ( event.mousePos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) )
{ {
MouseClick(event.pos); MouseClick(event.mousePos);
if ( m_bEdit || m_bHilite ) m_bCapture = true; if ( m_bEdit || m_bHilite ) m_bCapture = true;
} }
m_bFocus = true; m_bFocus = true;
@ -505,8 +505,8 @@ bool CEdit::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture ) if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
{ {
m_mouseLastPos = event.pos; m_mouseLastPos = event.mousePos;
MouseMove(event.pos); MouseMove(event.mousePos);
} }
if ( event.type == EVENT_FRAME && m_bCapture ) if ( event.type == EVENT_FRAME && m_bCapture )
@ -515,11 +515,11 @@ bool CEdit::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && if ( event.type == EVENT_MOUSE_BUTTON_UP &&
event.mouseButton.button == 1) event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
if ( Detect(event.pos) ) if ( Detect(event.mousePos) )
{ {
if ( event.pos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) ) if ( event.mousePos.x < m_pos.x+m_dim.x-(m_bMulti?MARGX+SCROLL_WIDTH:0.0f) )
{ {
MouseRelease(m_mouseFirstPos); MouseRelease(m_mouseFirstPos);
} }
@ -528,7 +528,7 @@ bool CEdit::EventProcess(const Event &event)
{ {
if ( m_timeLastClick+DELAY_DBCLICK > m_time ) // double-click ? if ( m_timeLastClick+DELAY_DBCLICK > m_time ) // double-click ?
{ {
MouseDoubleClick(event.pos); MouseDoubleClick(event.mousePos);
} }
m_timeLastClick = m_time; m_timeLastClick = m_time;
m_bCapture = false; m_bCapture = false;

View File

@ -191,7 +191,7 @@ bool CEditValue::EventProcess(const Event &event)
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_UP && event.mouseWheel.dir == WHEEL_UP &&
Detect(event.mouseWheel.pos)) Detect(event.mousePos))
{ {
value = GetValue()+m_stepValue; value = GetValue()+m_stepValue;
if ( value > m_maxValue ) value = m_maxValue; if ( value > m_maxValue ) value = m_maxValue;
@ -200,7 +200,7 @@ bool CEditValue::EventProcess(const Event &event)
} }
if ( event.type == EVENT_KEY_DOWN && if ( event.type == EVENT_KEY_DOWN &&
event.mouseWheel.dir == WHEEL_DOWN && event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mouseWheel.pos)) Detect(event.mousePos))
{ {
value = GetValue()-m_stepValue; value = GetValue()-m_stepValue;
if ( value < m_minValue ) value = m_minValue; if ( value < m_minValue ) value = m_minValue;
@ -230,9 +230,8 @@ void CEditValue::HiliteValue(const Event &event)
m_edit->SetFocus(true); m_edit->SetFocus(true);
Event newEvent = event; Event newEvent = event;
newEvent.type = EVENT_ACTIVE; newEvent.type = EVENT_FOCUS;
newEvent.active.gain = true; // TODO not much pretty sure about it newEvent.customParam = m_edit->GetEventType();
newEvent.param = m_edit->GetEventType();
m_event->AddEvent(newEvent); // defocus the other objects m_event->AddEvent(newEvent); // defocus the other objects
} }

View File

@ -56,7 +56,7 @@ bool CGauge::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_BUTTON_DOWN ) if ( event.type == EVENT_MOUSE_BUTTON_DOWN )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
Event newEvent = event; Event newEvent = event;
newEvent.type = m_eventType; newEvent.type = m_eventType;

View File

@ -282,7 +282,7 @@ bool CInterface::EventProcess(const Event &event)
if (m_camera == nullptr) { if (m_camera == nullptr) {
m_camera = static_cast<Gfx::CCamera *>(m_iMan->SearchInstance(CLASS_CAMERA)); m_camera = static_cast<Gfx::CCamera *>(m_iMan->SearchInstance(CLASS_CAMERA));
} }
m_engine->SetMouseType(m_camera->GetMouseDef(event.mouseMove.pos)); m_engine->SetMouseType(m_camera->GetMouseDef(event.mousePos));
} }
for (int i = MAXCONTROL-1; i >= 0; i--) { for (int i = MAXCONTROL-1; i >= 0; i--) {

View File

@ -82,8 +82,8 @@ bool CKey::EventProcess(const Event &event)
CControl::EventProcess(event); CControl::EventProcess(event);
if (event.type == EVENT_MOUSE_BUTTON_DOWN) { if (event.type == EVENT_MOUSE_BUTTON_DOWN) {
if (event.mouseButton.button == 1) // left if (event.mouseButton.button == MOUSE_BUTTON_LEFT) // left
m_bCatch = Detect(event.mouseButton.pos); m_bCatch = Detect(event.mousePos);
} }
if (event.type == EVENT_KEY_DOWN && m_bCatch) { if (event.type == EVENT_KEY_DOWN && m_bCatch) {
@ -92,12 +92,13 @@ bool CKey::EventProcess(const Event &event)
if ( TestKey(event.key.key) ) { // impossible ? if ( TestKey(event.key.key) ) { // impossible ?
m_sound->Play(SOUND_TZOING); m_sound->Play(SOUND_TZOING);
} else { } else {
// TODO: test for virtual, joystick, etc.
if ( event.key.key == m_key[0] || event.key.key == m_key[1] ) { if ( event.key.key == m_key[0] || event.key.key == m_key[1] ) {
m_key[0] = event.key.key; m_key[0] = event.key.key;
m_key[1] = 0; m_key[1] = 0;
} else { } else {
m_key[1] = m_key[0]; m_key[1] = m_key[0];
m_key[0] = event.param; m_key[0] = event.key.key;
} }
m_sound->Play(SOUND_CLICK); m_sound->Play(SOUND_CLICK);

View File

@ -257,7 +257,7 @@ bool CList::EventProcess(const Event &event)
if ((m_state & STATE_ENABLE) == 0) if ((m_state & STATE_ENABLE) == 0)
return true; return true;
if (event.type == EVENT_MOUSE_WHEEL && event.mouseWheel.dir == WHEEL_UP && Detect(event.mouseWheel.pos)) { if (event.type == EVENT_MOUSE_WHEEL && event.mouseWheel.dir == WHEEL_UP && Detect(event.mousePos)) {
if (m_firstLine > 0) if (m_firstLine > 0)
m_firstLine--; m_firstLine--;
UpdateScroll(); UpdateScroll();
@ -265,7 +265,7 @@ bool CList::EventProcess(const Event &event)
return true; return true;
} }
if (event.type == EVENT_MOUSE_WHEEL && event.mouseWheel.dir == WHEEL_DOWN && Detect(event.mouseWheel.pos)) { if (event.type == EVENT_MOUSE_WHEEL && event.mouseWheel.dir == WHEEL_DOWN && Detect(event.mousePos)) {
if (m_firstLine < m_totalLine - m_displayLine) if (m_firstLine < m_totalLine - m_displayLine)
m_firstLine++; m_firstLine++;
UpdateScroll(); UpdateScroll();
@ -275,7 +275,7 @@ bool CList::EventProcess(const Event &event)
CControl::EventProcess(event); CControl::EventProcess(event);
if (event.type == EVENT_MOUSE_MOVE && Detect(event.mouseMove.pos)) { if (event.type == EVENT_MOUSE_MOVE && Detect(event.mousePos)) {
m_engine->SetMouseType(Gfx::ENG_MOUSE_NORM); m_engine->SetMouseType(Gfx::ENG_MOUSE_NORM);
for (i = 0; i < m_displayLine; i++) { for (i = 0; i < m_displayLine; i++) {
if (i + m_firstLine >= m_totalLine) if (i + m_firstLine >= m_totalLine)

View File

@ -2096,8 +2096,8 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE ) if ( event.type == EVENT_MOUSE_MOVE )
{ {
m_glintMouse = event.pos; m_glintMouse = event.mousePos;
NiceParticle(event.pos, event.trackedKeys & TRKEY_NUM_LEFT); NiceParticle(event.mousePos, event.mouseButtonsState & MOUSE_BUTTON_LEFT);
} }
if ( m_bDialog ) // this dialogue? if ( m_bDialog ) // this dialogue?
@ -2105,7 +2105,7 @@ bool CMainDialog::EventProcess(const Event &event)
m_interface->EventProcess(event); m_interface->EventProcess(event);
if ( event.type == EVENT_DIALOG_OK || if ( event.type == EVENT_DIALOG_OK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(RETURN) ) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(RETURN) ) )
{ {
StopDialog(); StopDialog();
if ( m_phase == PHASE_NAME ) if ( m_phase == PHASE_NAME )
@ -2131,7 +2131,7 @@ bool CMainDialog::EventProcess(const Event &event)
} }
} }
if ( event.type == EVENT_DIALOG_CANCEL || if ( event.type == EVENT_DIALOG_CANCEL ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE) ) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE) ) )
{ {
StopDialog(); StopDialog();
} }
@ -2177,7 +2177,7 @@ bool CMainDialog::EventProcess(const Event &event)
switch( event.type ) switch( event.type )
{ {
case EVENT_KEY_DOWN: case EVENT_KEY_DOWN:
if ( event.param == KEY(ESCAPE) ) if ( event.key.key == KEY(ESCAPE) )
{ {
//? StartQuit(); // would you leave? //? StartQuit(); // would you leave?
m_sound->Play(SOUND_TZOING); m_sound->Play(SOUND_TZOING);
@ -2238,11 +2238,11 @@ bool CMainDialog::EventProcess(const Event &event)
switch( event.type ) switch( event.type )
{ {
case EVENT_KEY_DOWN: case EVENT_KEY_DOWN:
if ( event.param == KEY(RETURN) ) if ( event.key.key == KEY(RETURN) )
{ {
NameSelect(); NameSelect();
} }
if ( event.param == KEY(ESCAPE) ) if ( event.key.key == KEY(ESCAPE) )
{ {
pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5)); pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5));
if ( pw == 0 ) break; if ( pw == 0 ) break;
@ -2295,11 +2295,11 @@ bool CMainDialog::EventProcess(const Event &event)
switch( event.type ) switch( event.type )
{ {
case EVENT_KEY_DOWN: case EVENT_KEY_DOWN:
if ( event.param == KEY(RETURN) ) if ( event.key.key == KEY(RETURN) )
{ {
m_main->ChangePhase(PHASE_INIT); m_main->ChangePhase(PHASE_INIT);
} }
if ( event.param == KEY(ESCAPE) ) if ( event.key.key == KEY(ESCAPE) )
{ {
m_main->ChangePhase(PHASE_NAME); m_main->ChangePhase(PHASE_NAME);
} }
@ -2430,7 +2430,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == pw->GetEventTypeClose() || if ( event.type == pw->GetEventTypeClose() ||
event.type == EVENT_INTERFACE_BACK || event.type == EVENT_INTERFACE_BACK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) )
{ {
m_main->ChangePhase(PHASE_INIT); m_main->ChangePhase(PHASE_INIT);
return false; return false;
@ -2502,7 +2502,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == pw->GetEventTypeClose() || if ( event.type == pw->GetEventTypeClose() ||
event.type == EVENT_INTERFACE_BACK || event.type == EVENT_INTERFACE_BACK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) )
{ {
SetupMemorize(); SetupMemorize();
m_engine->ApplyChange(); m_engine->ApplyChange();
@ -2548,7 +2548,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == pw->GetEventTypeClose() || if ( event.type == pw->GetEventTypeClose() ||
event.type == EVENT_INTERFACE_BACK || event.type == EVENT_INTERFACE_BACK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) )
{ {
SetupMemorize(); SetupMemorize();
m_engine->ApplyChange(); m_engine->ApplyChange();
@ -2920,7 +2920,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == pw->GetEventTypeClose() || if ( event.type == pw->GetEventTypeClose() ||
event.type == EVENT_INTERFACE_BACK || event.type == EVENT_INTERFACE_BACK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) )
{ {
ChangePhase(m_phaseTerm); ChangePhase(m_phaseTerm);
} }
@ -2953,7 +2953,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == pw->GetEventTypeClose() || if ( event.type == pw->GetEventTypeClose() ||
event.type == EVENT_INTERFACE_BACK || event.type == EVENT_INTERFACE_BACK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) )
{ {
m_interface->DeleteControl(EVENT_WINDOW5); m_interface->DeleteControl(EVENT_WINDOW5);
ChangePhase(PHASE_SIMUL); ChangePhase(PHASE_SIMUL);
@ -3027,7 +3027,7 @@ bool CMainDialog::EventProcess(const Event &event)
if ( event.type == EVENT_KEY_DOWN ) if ( event.type == EVENT_KEY_DOWN )
{ {
if ( event.param == KEY(ESCAPE) ) if ( event.key.key == KEY(ESCAPE) )
{ {
ChangePhase(PHASE_INIT); ChangePhase(PHASE_INIT);
} }
@ -4822,6 +4822,8 @@ void CMainDialog::UpdateSceneChap(int &chap)
pl->SetCheck(j, bPassed); pl->SetCheck(j, bPassed);
pl->SetEnable(j, true); pl->SetEnable(j, true);
continue;
if ( m_phase == PHASE_MISSION && !m_main->GetShowAll() && !bPassed ) if ( m_phase == PHASE_MISSION && !m_main->GetShowAll() && !bPassed )
{ {
j ++; j ++;

View File

@ -187,15 +187,15 @@ bool CMap::EventProcess(const Event &event)
if ( event.type == EVENT_FRAME ) if ( event.type == EVENT_FRAME )
m_time += event.rTime; m_time += event.rTime;
if ( event.type == EVENT_MOUSE_MOVE && Detect(event.pos) ) { if ( event.type == EVENT_MOUSE_MOVE && Detect(event.mousePos) ) {
m_engine->SetMouseType(Gfx::ENG_MOUSE_NORM); m_engine->SetMouseType(Gfx::ENG_MOUSE_NORM);
if ( DetectObject(event.mouseMove.pos, bInMap) != 0 ) if ( DetectObject(event.mousePos, bInMap) != 0 )
m_engine->SetMouseType(Gfx::ENG_MOUSE_HAND); m_engine->SetMouseType(Gfx::ENG_MOUSE_HAND);
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == 1 ) { if ( event.type == EVENT_MOUSE_BUTTON_DOWN && event.mouseButton.button == MOUSE_BUTTON_LEFT ) {
if ( CControl::Detect(event.mouseButton.pos) ) { if ( CControl::Detect(event.mousePos) ) {
SelectObject(event.mouseButton.pos); SelectObject(event.mousePos);
return false; return false;
} }
} }

View File

@ -234,21 +234,21 @@ bool CScroll::EventProcess(const Event &event)
hButton = m_buttonUp?m_dim.x/0.75f:0.0f; hButton = m_buttonUp?m_dim.x/0.75f:0.0f;
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
pos.y = m_pos.y+hButton; pos.y = m_pos.y+hButton;
dim.y = m_dim.y-hButton*2.0f; dim.y = m_dim.y-hButton*2.0f;
pos.y += dim.y*(1.0f-m_visibleRatio)*(1.0f-m_visibleValue); pos.y += dim.y*(1.0f-m_visibleRatio)*(1.0f-m_visibleValue);
dim.y *= m_visibleRatio; dim.y *= m_visibleRatio;
if ( event.mouseButton.pos.y < pos.y || if ( event.mousePos.y < pos.y ||
event.mouseButton.pos.y > pos.y+dim.y ) // click outside cabin? event.mousePos.y > pos.y+dim.y ) // click outside cabin?
{ {
h = (m_dim.y-hButton*2.0f)*(1.0f-m_visibleRatio); h = (m_dim.y-hButton*2.0f)*(1.0f-m_visibleRatio);
value = 1.0f-(event.mouseButton.pos.y-(m_pos.y+hButton+dim.y*0.5f))/h; value = 1.0f-(event.mousePos.y-(m_pos.y+hButton+dim.y*0.5f))/h;
if ( value < 0.0f ) value = 0.0f; if ( value < 0.0f ) value = 0.0f;
if ( value > 1.0f ) value = 1.0f; if ( value > 1.0f ) value = 1.0f;
m_visibleValue = value; m_visibleValue = value;
@ -259,7 +259,7 @@ bool CScroll::EventProcess(const Event &event)
m_event->AddEvent(newEvent); m_event->AddEvent(newEvent);
} }
m_bCapture = true; m_bCapture = true;
m_pressPos = event.mouseButton.pos; m_pressPos = event.mousePos;
m_pressValue = m_visibleValue; m_pressValue = m_visibleValue;
} }
} }
@ -269,7 +269,7 @@ bool CScroll::EventProcess(const Event &event)
h = (m_dim.y-hButton*2.0f)*(1.0f-m_visibleRatio); h = (m_dim.y-hButton*2.0f)*(1.0f-m_visibleRatio);
if ( h != 0 ) if ( h != 0 )
{ {
value = m_pressValue - (event.mouseMove.pos.y-m_pressPos.y)/h; value = m_pressValue - (event.mousePos.y-m_pressPos.y)/h;
if ( value < 0.0f ) value = 0.0f; if ( value < 0.0f ) value = 0.0f;
if ( value > 1.0f ) value = 1.0f; if ( value > 1.0f ) value = 1.0f;
@ -286,7 +286,7 @@ bool CScroll::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && if ( event.type == EVENT_MOUSE_BUTTON_UP &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
m_bCapture ) m_bCapture )
{ {
m_bCapture = false; m_bCapture = false;
@ -294,7 +294,7 @@ bool CScroll::EventProcess(const Event &event)
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_UP && event.mouseWheel.dir == WHEEL_UP &&
Detect(event.mouseWheel.pos) && Detect(event.mousePos) &&
m_buttonUp != 0) m_buttonUp != 0)
{ {
Event newEvent = event; Event newEvent = event;
@ -303,7 +303,7 @@ bool CScroll::EventProcess(const Event &event)
} }
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_DOWN && event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mouseWheel.pos) && Detect(event.mousePos) &&
m_buttonDown != 0) m_buttonDown != 0)
{ {
Event newEvent = event; Event newEvent = event;

View File

@ -67,9 +67,9 @@ bool CShortcut::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1) event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
Event newEvent = event; Event newEvent = event;
newEvent.type = m_eventType; newEvent.type = m_eventType;

View File

@ -284,24 +284,24 @@ bool CSlider::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
(event.mouseButton.button == 1 ) && (event.mouseButton.button == MOUSE_BUTTON_LEFT ) &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
if ( m_bHoriz ) if ( m_bHoriz )
{ {
pos.x = m_pos.x+m_marginButton; pos.x = m_pos.x+m_marginButton;
dim.x = m_dim.x-m_marginButton*2.0f; dim.x = m_dim.x-m_marginButton*2.0f;
value = (event.mouseButton.pos.x-pos.x-CURSOR_WIDTH/2.0f); value = (event.mousePos.x-pos.x-CURSOR_WIDTH/2.0f);
value /= (dim.x-CURSOR_WIDTH); value /= (dim.x-CURSOR_WIDTH);
} }
else else
{ {
pos.y = m_pos.y+m_marginButton; pos.y = m_pos.y+m_marginButton;
dim.y = m_dim.y-m_marginButton*2.0f; dim.y = m_dim.y-m_marginButton*2.0f;
value = (event.mouseButton.pos.y-pos.y-CURSOR_WIDTH/2.0f); value = (event.mousePos.y-pos.y-CURSOR_WIDTH/2.0f);
value /= (dim.y-CURSOR_WIDTH); value /= (dim.y-CURSOR_WIDTH);
} }
if ( value < 0.0f ) value = 0.0f; if ( value < 0.0f ) value = 0.0f;
@ -314,7 +314,7 @@ bool CSlider::EventProcess(const Event &event)
m_event->AddEvent(newEvent); m_event->AddEvent(newEvent);
m_bCapture = true; m_bCapture = true;
m_pressPos = event.mouseButton.pos; m_pressPos = event.mousePos;
m_pressValue = m_visibleValue; m_pressValue = m_visibleValue;
} }
} }
@ -325,14 +325,14 @@ bool CSlider::EventProcess(const Event &event)
{ {
pos.x = m_pos.x+m_marginButton; pos.x = m_pos.x+m_marginButton;
dim.x = m_dim.x-m_marginButton*2.0f; dim.x = m_dim.x-m_marginButton*2.0f;
value = (event.mouseMove.pos.x-pos.x-CURSOR_WIDTH/2.0f); value = (event.mousePos.x-pos.x-CURSOR_WIDTH/2.0f);
value /= (dim.x-CURSOR_WIDTH); value /= (dim.x-CURSOR_WIDTH);
} }
else else
{ {
pos.y = m_pos.y+m_marginButton; pos.y = m_pos.y+m_marginButton;
dim.y = m_dim.y-m_marginButton*2.0f; dim.y = m_dim.y-m_marginButton*2.0f;
value = (event.mouseMove.pos.y-pos.y-CURSOR_WIDTH/2.0f); value = (event.mousePos.y-pos.y-CURSOR_WIDTH/2.0f);
value /= (dim.y-CURSOR_WIDTH); value /= (dim.y-CURSOR_WIDTH);
} }
if ( value < 0.0f ) value = 0.0f; if ( value < 0.0f ) value = 0.0f;
@ -350,7 +350,7 @@ bool CSlider::EventProcess(const Event &event)
} }
if ( ( event.type == EVENT_MOUSE_BUTTON_UP ) && if ( ( event.type == EVENT_MOUSE_BUTTON_UP ) &&
( event.mouseButton.button == 1 ) && ( event.mouseButton.button == MOUSE_BUTTON_LEFT ) &&
m_bCapture ) m_bCapture )
{ {
m_bCapture = false; m_bCapture = false;
@ -358,7 +358,7 @@ bool CSlider::EventProcess(const Event &event)
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseWheel.dir == WHEEL_UP && event.mouseWheel.dir == WHEEL_UP &&
Detect(event.mouseWheel.pos) && Detect(event.mousePos) &&
m_buttonLeft != 0) m_buttonLeft != 0)
{ {
Event newEvent = event; Event newEvent = event;
@ -367,8 +367,8 @@ bool CSlider::EventProcess(const Event &event)
} }
if (event.type == EVENT_MOUSE_WHEEL && if (event.type == EVENT_MOUSE_WHEEL &&
event.mouseButton.button == WHEEL_DOWN && event.mouseWheel.dir == WHEEL_DOWN &&
Detect(event.mouseWheel.pos) && Detect(event.mousePos) &&
m_buttonRight != 0) m_buttonRight != 0)
{ {
Event newEvent = event; Event newEvent = event;

View File

@ -242,7 +242,7 @@ bool CStudio::EventProcess(const Event &event)
if ( event.type == EVENT_KEY_DOWN ) if ( event.type == EVENT_KEY_DOWN )
{ {
if ( event.key.key == m_main->GetInputBinding(INPUT_SLOT_CBOT).key || if ( event.key.key == m_main->GetInputBinding(INPUT_SLOT_CBOT).key ||
event.param == m_main->GetInputBinding(INPUT_SLOT_CBOT).joy ) event.key.key == m_main->GetInputBinding(INPUT_SLOT_CBOT).joy )
{ {
if ( m_helpFilename.length() > 0 ) if ( m_helpFilename.length() > 0 )
{ {
@ -1355,7 +1355,7 @@ bool CStudio::EventDialog(const Event &event)
} }
if ( event.type == EVENT_DIALOG_OK || if ( event.type == EVENT_DIALOG_OK ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(RETURN)) ) (event.type == EVENT_KEY_DOWN && event.key.key == KEY(RETURN)) )
{ {
if ( m_dialog == SD_OPEN ) if ( m_dialog == SD_OPEN )
{ {
@ -1371,7 +1371,7 @@ bool CStudio::EventDialog(const Event &event)
} }
if ( event.type == EVENT_DIALOG_CANCEL || if ( event.type == EVENT_DIALOG_CANCEL ||
(event.type == EVENT_KEY_DOWN && event.param == KEY(ESCAPE)) || (event.type == EVENT_KEY_DOWN && event.key.key == KEY(ESCAPE)) ||
event.type == pw->GetEventTypeClose() ) event.type == pw->GetEventTypeClose() )
{ {
StopDialog(); StopDialog();

View File

@ -59,7 +59,7 @@ bool CTarget::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE ) if ( event.type == EVENT_MOUSE_MOVE )
{ {
if ( CControl::Detect(event.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET); m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET);
Event newEvent = event; Event newEvent = event;
@ -70,11 +70,11 @@ bool CTarget::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
Event newEvent = event; Event newEvent = event;
newEvent.type = EVENT_OBJECT_FIRE; newEvent.type = EVENT_OBJECT_FIRE;
@ -96,9 +96,9 @@ bool CTarget::EventProcess(const Event &event)
{ {
m_main->SetFriendAim(false); m_main->SetFriendAim(false);
if ( CControl::Detect(event.mouseMove.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
pObj = DetectFriendObject(event.mouseMove.pos); pObj = DetectFriendObject(event.mousePos);
if ( pObj == 0 ) if ( pObj == 0 )
{ {
m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET); m_engine->SetMouseType(Gfx::ENG_MOUSE_TARGET);
@ -117,11 +117,11 @@ bool CTarget::EventProcess(const Event &event)
} }
if ( event.type == EVENT_MOUSE_BUTTON_DOWN && if ( event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1 && event.mouseButton.button == MOUSE_BUTTON_LEFT &&
(m_state & STATE_VISIBLE) && (m_state & STATE_VISIBLE) &&
(m_state & STATE_ENABLE) ) (m_state & STATE_ENABLE) )
{ {
if ( CControl::Detect(event.mouseButton.pos) ) if ( CControl::Detect(event.mousePos) )
{ {
if ( !m_main->GetFriendAim() ) if ( !m_main->GetFriendAim() )
{ {

View File

@ -949,9 +949,9 @@ bool CWindow::EventProcess(const Event &event)
m_pressMouse = Gfx::ENG_MOUSE_NORM; m_pressMouse = Gfx::ENG_MOUSE_NORM;
if ( m_name.length() > 0 && m_bMovable && // title bar? if ( m_name.length() > 0 && m_bMovable && // title bar?
Detect(event.pos) ) Detect(event.mousePos) )
{ {
flags = BorderDetect(event.pos); flags = BorderDetect(event.mousePos);
if ( flags == -1 ) if ( flags == -1 )
{ {
m_pressMouse = Gfx::ENG_MOUSE_MOVE; // + m_pressMouse = Gfx::ENG_MOUSE_MOVE; // +
@ -1011,17 +1011,17 @@ bool CWindow::EventProcess(const Event &event)
} }
if ( m_bTrashEvent && event.type == EVENT_MOUSE_BUTTON_DOWN && if ( m_bTrashEvent && event.type == EVENT_MOUSE_BUTTON_DOWN &&
event.mouseButton.button == 1) event.mouseButton.button == MOUSE_BUTTON_LEFT)
{ {
if ( Detect(event.pos) ) if ( Detect(event.mousePos) )
{ {
if ( m_name.length() > 0 && m_bMovable ) // title bar? if ( m_name.length() > 0 && m_bMovable ) // title bar?
{ {
m_pressFlags = BorderDetect(event.pos); m_pressFlags = BorderDetect(event.mousePos);
if ( m_pressFlags != 0 ) if ( m_pressFlags != 0 )
{ {
m_bCapture = true; m_bCapture = true;
m_pressPos = event.pos; m_pressPos = event.mousePos;
} }
} }
return false; return false;
@ -1030,7 +1030,7 @@ bool CWindow::EventProcess(const Event &event)
if ( event.type == EVENT_MOUSE_MOVE && m_bCapture ) if ( event.type == EVENT_MOUSE_MOVE && m_bCapture )
{ {
pos = event.pos; pos = event.mousePos;
if ( m_pressFlags == -1 ) // all moves? if ( m_pressFlags == -1 ) // all moves?
{ {
m_pos.x += pos.x-m_pressPos.x; m_pos.x += pos.x-m_pressPos.x;
@ -1081,7 +1081,7 @@ bool CWindow::EventProcess(const Event &event)
m_event->AddEvent(newEvent); m_event->AddEvent(newEvent);
} }
if ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == 1 && m_bCapture ) if ( event.type == EVENT_MOUSE_BUTTON_UP && event.mouseButton.button == MOUSE_BUTTON_LEFT && m_bCapture )
{ {
m_bCapture = false; m_bCapture = false;
} }