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