diff --git a/src/Game.zig b/src/Game.zig index 2f3b8a7..012b11e 100644 --- a/src/Game.zig +++ b/src/Game.zig @@ -51,6 +51,7 @@ timer_left_arr: Timer, timer_left_das: Timer, timer_right_arr: Timer, timer_right_das: Timer, +timer_gravity: Timer, pub fn init(renderer: *SDL.SDL_Renderer) Self { var ret = Self{ @@ -67,6 +68,7 @@ pub fn init(renderer: *SDL.SDL_Renderer) Self { .timer_left_das = Timer.init(200), .timer_right_arr = Timer.init(50), .timer_right_das = Timer.init(200), + .timer_gravity = Timer.init(200), }; // Get a piece from the bag @@ -140,6 +142,19 @@ pub fn tick(self: *Self) State { self.timer_down.stop(); } + // Gravity + + if (!self.piece.timer_dropped.started) { + if (!self.timer_gravity.started) { + self.timer_gravity.start(); + } else if (self.timer_gravity.finished()){ + self.action_list[@enumToInt(ActionCode.down)].activate = true; + self.timer_gravity.start(); + } + } else { + self.timer_gravity.stop(); + } + // DROP if (self.piece.dropped) { diff --git a/src/Timer.zig b/src/Timer.zig index 01691a3..039dec8 100644 --- a/src/Timer.zig +++ b/src/Timer.zig @@ -22,6 +22,11 @@ pub fn start(self: *Self) void { self.initial = SDL.SDL_GetTicks64(); } +pub fn unstop (self: *Self) void { + self.started = true; + +} + pub fn finished(self: *Self) bool { if (self.started) { self.progress = SDL.SDL_GetTicks64() - self.initial;