usg/src/renderer.zig

34 lines
1.4 KiB
Zig

const SDL = @import("sdl2");
const Game = @import("game.zig");
const Bag = @import("bag.zig");
const Grid = @import("grid.zig");
const Piece = @import("piece.zig");
pub fn renderBag(renderer: *SDL.SDL_Renderer, bag: Bag, cell_size: i32, pos_x: i32, pos_y: i32) void {
var trans: u8 = 0;
for (bag.contents[0..5]) |_, i| {
if (bag.contents[i]) |piece_type| {
var piece = Piece.init(piece_type);
piece.color.a -|= trans;
trans +|= 55;
piece.render(renderer, cell_size, pos_x, pos_y + @intCast(i32, i) * cell_size * 4);
}
}
}
pub fn renderHeld(renderer: *SDL.SDL_Renderer, held: Piece.Type, cell_size: i32, pos_x: i32, pos_y: i32) void {
Piece.init(held).render(renderer, cell_size, pos_x, pos_y);
}
pub fn render(game: Game) void {
game.grid.render(game.renderer, game.grid_cell_size, game.grid_pos_x, game.grid_pos_y);
game.piece.render(game.renderer, game.grid_cell_size, game.grid_pos_x, game.grid_pos_y);
game.shadow.render(game.renderer, game.grid_cell_size, game.grid_pos_x, game.grid_pos_y);
renderBag(game.renderer, game.bag, game.grid_cell_size, game.grid_pos_x + game.grid_cell_size * (Grid.ncolumns + 1), game.grid_pos_y);
if (game.held) |held_piece| {
renderHeld(game.renderer, held_piece, game.grid_cell_size, game.grid_pos_x - (game.grid_cell_size * 5), game.grid_pos_y);
}
}