the whole game

This commit is contained in:
2026-03-02 22:04:18 +03:00
parent 816e9060b4
commit f0617a5d22
2069 changed files with 581500 additions and 0 deletions

169
src/platform/input/Mouse.cpp Executable file
View File

@@ -0,0 +1,169 @@
#include "Mouse.h"
//
// MouseAction
//
MouseAction::MouseAction(char actionButtonId, char buttonData, short x, short y, char pointerId)
{
this->action = actionButtonId;
this->data = buttonData;
this->x = x;
this->y = y;
this->dx = this->dy = 0;
this->pointerId = pointerId;
}
MouseAction::MouseAction(char actionButtonId, char buttonData, short x, short y, short dx, short dy, char pointerId)
{
this->action = actionButtonId;
this->data = buttonData;
this->x = x;
this->y = y;
this->dx = dx;
this->dy = dy;
this->pointerId = pointerId;
}
bool MouseAction::isButton() const
{
return action == ACTION_LEFT || action == ACTION_RIGHT;
}
//
// MouseDevice
//
MouseDevice::MouseDevice()
: _index(-1),
_x(0), _xOld(0),
_y(0), _yOld(0),
_dx(DELTA_NOTSET), _dy(DELTA_NOTSET),
_firstMovementType(0)
{
for (int i = 0; i < MAX_NUM_BUTTONS; ++i)
_buttonStates[i] = 0;
}
void MouseDevice::reset() {
_index = -1;
_inputs.clear();
_buttonStates[MouseAction::ACTION_WHEEL] = 0;
}
char MouseDevice::getButtonState(int buttonId) {
if (buttonId < MouseAction::ACTION_LEFT || buttonId > MouseAction::ACTION_WHEEL)
return 0;
return _buttonStates[buttonId];
}
bool MouseDevice::isButtonDown(int buttonId) {
return getButtonState(buttonId) != 0;
}
/// Was the current movement the first movement after mouse down?
bool MouseDevice::wasFirstMovement() {
return _firstMovementType == 1;
}
short MouseDevice::getX() { return _x; }
short MouseDevice::getY() { return _y; }
short MouseDevice::getDX() { return (DELTA_NOTSET != _dx)? _dx : _x - _xOld; }
short MouseDevice::getDY() { return (DELTA_NOTSET != _dy)? _dy : _y - _yOld; }
void MouseDevice::reset2() {
_xOld = _x;
_yOld = _y;
_dx = _dy = DELTA_NOTSET;
}
bool MouseDevice::next() {
if (_index + 1 >= (int)_inputs.size())
return false;
++_index;
return true;
}
void MouseDevice::rewind() {
_index = -1;
}
bool MouseDevice::getEventButtonState() {
return _inputs[_index].data == MouseAction::DATA_DOWN;
}
char MouseDevice::getEventButton() {
return _inputs[_index].action;
}
const MouseAction& MouseDevice::getEvent() { return _inputs[_index]; }
void MouseDevice::feed(char actionButtonId, char buttonData, short x, short y) {
feed(actionButtonId, buttonData, x, y, 0, 0);
}
void MouseDevice::feed(char actionButtonId, char buttonData, short x, short y, short dx, short dy) {
_inputs.push_back(MouseAction(actionButtonId, buttonData, x, y, dx, dy, 0));
if (actionButtonId != MouseAction::ACTION_MOVE) {
_buttonStates[actionButtonId] = buttonData;
if (actionButtonId == MouseAction::ACTION_LEFT)
_firstMovementType = -1;
} else {
if (_dx == DELTA_NOTSET) {
_dx = _dy = 0;
}
_dx += dx;
_dy += dy;
if (_firstMovementType == -1)
_firstMovementType = 1;
else
_firstMovementType = 0;
}
_xOld = _x;
_yOld = _y;
_x = x;
_y = y;
}
//
// Mouse - static class wrapping a MouseDevice
//
void Mouse::reset() { _instance.reset(); }
char Mouse::getButtonState(int buttonId) { return _instance.getButtonState(buttonId); }
bool Mouse::isButtonDown(int buttonId) { return _instance.isButtonDown(buttonId); }
short Mouse::getX() { return _instance.getX(); }
short Mouse::getY() { return _instance.getY(); }
short Mouse::getDX() { return _instance.getDX(); }
short Mouse::getDY() { return _instance.getDY(); }
void Mouse::reset2() { _instance.reset2(); }
bool Mouse::next() { return _instance.next(); }
void Mouse::rewind() { _instance.rewind(); }
bool Mouse::getEventButtonState() { return _instance.getEventButtonState(); }
char Mouse::getEventButton() { return _instance.getEventButton(); }
const MouseAction& Mouse::getEvent() { return _instance.getEvent(); }
void Mouse::feed(char actionButtonId, char buttonData, short x, short y) {
feed(actionButtonId, buttonData, x, y, 0, 0);
}
void Mouse::feed(char actionButtonId, char buttonData, short x, short y, short dx, short dy) {
//LOGI("Mouse::feed: %d, %d, xy: %d, %d\n", actionButtonId, buttonData, x, y);
return _instance.feed(actionButtonId, buttonData, x, y, dx, dy);
}
MouseDevice Mouse::_instance;