Horizontal repetition WIP
This commit is contained in:
parent
276016cdf7
commit
2c22dabeae
69
src/Game.zig
69
src/Game.zig
|
@ -54,6 +54,10 @@ action_list: [7]Action = .{
|
||||||
},
|
},
|
||||||
|
|
||||||
timer_down: Timer,
|
timer_down: Timer,
|
||||||
|
timer_left_arr: Timer,
|
||||||
|
timer_left_das: Timer,
|
||||||
|
timer_right_arr: Timer,
|
||||||
|
timer_right_das: Timer,
|
||||||
|
|
||||||
pub fn init(_renderer: *SDL.SDL_Renderer) Self {
|
pub fn init(_renderer: *SDL.SDL_Renderer) Self {
|
||||||
var ret = Self{
|
var ret = Self{
|
||||||
|
@ -68,7 +72,11 @@ pub fn init(_renderer: *SDL.SDL_Renderer) Self {
|
||||||
.held = null,
|
.held = null,
|
||||||
.renderer = _renderer,
|
.renderer = _renderer,
|
||||||
|
|
||||||
.timer_down = Timer.init(33),
|
.timer_down = Timer.init(50),
|
||||||
|
.timer_left_arr = Timer.init(50),
|
||||||
|
.timer_left_das = Timer.init(200),
|
||||||
|
.timer_right_arr = Timer.init(50),
|
||||||
|
.timer_right_das = Timer.init(200),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Calculate positions
|
// Calculate positions
|
||||||
|
@ -82,20 +90,75 @@ pub fn init(_renderer: *SDL.SDL_Renderer) Self {
|
||||||
|
|
||||||
ret.grid_pos_x = @divFloor(aux_w, 2) - (ret.grid_cell_size * @divFloor(Grid.ncolumns, 2));
|
ret.grid_pos_x = @divFloor(aux_w, 2) - (ret.grid_cell_size * @divFloor(Grid.ncolumns, 2));
|
||||||
ret.grid_pos_y = @divFloor(aux_h, 2) - (ret.grid_cell_size * @divFloor(Grid.nrows + Grid.buffer, 2));
|
ret.grid_pos_y = @divFloor(aux_h, 2) - (ret.grid_cell_size * @divFloor(Grid.nrows + Grid.buffer, 2));
|
||||||
|
|
||||||
ret.piece = ret.bag.pop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get a piece from the bag
|
||||||
|
ret.piece = ret.bag.pop();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
pub fn tick(self: *Self) State {
|
pub fn tick(self: *Self) State {
|
||||||
|
|
||||||
// TIMERS
|
// TIMERS
|
||||||
|
// Dropping a piece
|
||||||
if (self.piece.timer_dropped.finished()) {
|
if (self.piece.timer_dropped.finished()) {
|
||||||
self.piece.timer_dropped.stop();
|
self.piece.timer_dropped.stop();
|
||||||
self.piece.dropped = true;
|
self.piece.dropped = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Repeat Right
|
||||||
|
|
||||||
|
// DAS
|
||||||
|
if (self.action_list[@enumToInt(Action.Offset.right)].holding) {
|
||||||
|
if (!self.timer_right_das.started) {
|
||||||
|
self.timer_right_das.start();
|
||||||
|
std.debug.print("Starting DAS\n", .{});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Stop both
|
||||||
|
self.timer_right_das.stop();
|
||||||
|
self.timer_right_arr.stop();
|
||||||
|
std.debug.print("Stopping\n", .{});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ARR
|
||||||
|
if (self.timer_right_das.finished()) {
|
||||||
|
if (!self.timer_right_arr.started) {
|
||||||
|
self.timer_right_arr.start();
|
||||||
|
std.debug.print("Starting ARR\n", .{});
|
||||||
|
} else if (self.timer_right_arr.finished()) {
|
||||||
|
self.timer_right_arr.stop();
|
||||||
|
self.action_list[@enumToInt(Action.Offset.right)].holding = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Repeat Left
|
||||||
|
|
||||||
|
// DAS
|
||||||
|
if (self.action_list[@enumToInt(Action.Offset.left)].holding) {
|
||||||
|
if (!self.timer_left_das.started) {
|
||||||
|
self.timer_left_das.start();
|
||||||
|
std.debug.print("Starting DAS\n", .{});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Stop both
|
||||||
|
self.timer_left_das.stop();
|
||||||
|
self.timer_left_arr.stop();
|
||||||
|
std.debug.print("Stopping\n", .{});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ARR
|
||||||
|
if (self.timer_left_das.finished()) {
|
||||||
|
if (!self.timer_left_arr.started) {
|
||||||
|
self.timer_left_arr.start();
|
||||||
|
std.debug.print("Starting ARR\n", .{});
|
||||||
|
} else if (self.timer_left_arr.finished()) {
|
||||||
|
self.timer_left_arr.stop();
|
||||||
|
self.action_list[@enumToInt(Action.Offset.left)].holding = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Repeat Down
|
||||||
if (self.action_list[@enumToInt(Action.Offset.down)].holding) {
|
if (self.action_list[@enumToInt(Action.Offset.down)].holding) {
|
||||||
if (!self.timer_down.started) {
|
if (!self.timer_down.started) {
|
||||||
self.timer_down.start();
|
self.timer_down.start();
|
||||||
|
|
Loading…
Reference in New Issue