diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2022-03-09 17:46:59 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2022-03-30 08:20:21 +0200 |
| commit | e9d69f90837c4cc688fc90b783db508e2dcc9f6f (patch) | |
| tree | a03394984d234300fedc15bf8d7bc1432516e520 | |
| parent | 244f0b26f8910593d5cf4c60b4051d8e1e1b090c (diff) | |
| download | rts-e9d69f90837c4cc688fc90b783db508e2dcc9f6f.tar.gz | |
camera: implement mouse support
| -rw-r--r-- | src/camera/src/mouse.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/camera/src/mouse.c b/src/camera/src/mouse.c index eff15bf..4249ca5 100644 --- a/src/camera/src/mouse.c +++ b/src/camera/src/mouse.c @@ -21,12 +21,37 @@ static void update_speed(struct camera *const cam, const struct mouse *const m) { MAX_SPEED = 10, STEP = 1, - T_STEP = 3 + THRESHOLD_X = CAMERA_CURSOR_WIDTH * 3, + THRESHOLD_Y = CAMERA_CURSOR_HEIGHT * 3 }; - struct cursor *const c = &cam->cursor; + const struct cursor *const c = &cam->cursor; + if (c->x >= screen_w - THRESHOLD_X) + { + if (cam->x_speed - STEP > -MAX_SPEED) + cam->x_speed -= STEP; + } + else if (c->x < THRESHOLD_X) + { + if (cam->x_speed + STEP < MAX_SPEED) + cam->x_speed += STEP; + } + else + cam->x_speed = 0; + if (c->y >= screen_h - THRESHOLD_Y) + { + if (cam->y_speed - STEP > -MAX_SPEED) + cam->y_speed -= STEP; + } + else if (c->y < THRESHOLD_Y) + { + if (cam->y_speed + STEP < MAX_SPEED) + cam->y_speed += STEP; + } + else + cam->y_speed = 0; } void camera_update_mouse(struct camera *const cam, const struct mouse *const m) |
