From a673d86621054f18b25add5878efab6fa035e352 Mon Sep 17 00:00:00 2001 From: Oxore Date: Mon, 9 Jul 2018 03:04:02 +0300 Subject: Introduce hard drop feature --- src/engine.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src') diff --git a/src/engine.c b/src/engine.c index 72fdbfc..6abda95 100644 --- a/src/engine.c +++ b/src/engine.c @@ -20,6 +20,7 @@ #define DOWN (1 << 2) #define LEFT (1 << 3) #define RIGHTHOLD (1 << 4) +#define HARDDROP (1 << 5) #define LEFTHOLD (1 << 7) int level_move_latency[] = { @@ -223,6 +224,14 @@ static void signal_up() project_ghost_shape(&fld, 1, 0); } +static void signal_harddrop() +{ + while (field_move_shape_down(&fld, 1)); + transition_put_shape(); + sfClock_restart(game.gameTick); + sfClock_restart(game.putTick); +} + static void signal_down() { if (field_move_shape_down(&fld, 1)) { @@ -263,6 +272,16 @@ static void game_keys() arrKeys = arrKeys & ~UP; } + /* HARDDROP */ + if (sfKeyboard_isKeyPressed(sfKeySpace)) { + if (!(arrKeys & HARDDROP)) { + arrKeys = arrKeys | HARDDROP; + signal_harddrop(); + } + } else { + arrKeys = arrKeys & ~HARDDROP; + } + /* DOWN */ if (sfKeyboard_isKeyPressed(sfKeyDown)) { if (!(arrKeys & DOWN)) { -- cgit v1.2.3