diff options
Diffstat (limited to 'src/gfx.cpp')
-rw-r--r-- | src/gfx.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp index 6039946fc..8027dad26 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1785,6 +1785,30 @@ void SetAnimatedMouseCursor(const AnimCursor *table) } /** + * Update cursor position on mouse movement for relative modes. + * @param delta_x How much change in the X position. + * @param delta_y How much change in the Y position. + */ +void CursorVars::UpdateCursorPositionRelative(int delta_x, int delta_y) +{ + if (this->fix_at) { + this->delta.x = delta_x; + this->delta.y = delta_y; + } else { + int last_position_x = this->pos.x; + int last_position_y = this->pos.y; + + this->pos.x = Clamp(this->pos.x + delta_x, 0, _cur_resolution.width - 1); + this->pos.y = Clamp(this->pos.y + delta_y, 0, _cur_resolution.height - 1); + + this->delta.x = last_position_x - this->pos.x; + this->delta.y = last_position_y - this->pos.y; + + this->dirty = true; + } +} + +/** * Update cursor position on mouse movement. * @param x New X position. * @param y New Y position. |