const SDL = @import("sdl2"); const Game = @import("game.zig"); const Bag = @import("bag.zig"); const Grid = @import("grid.zig"); const Piece = @import("piece.zig"); const Color = @import("color.zig"); pub fn renderBag(game: Game) void { const pos_x = game.grid_pos_x + ((Grid.ncolumns + 1) * game.grid_cell_size); const pos_y = game.grid_pos_y + (Grid.buffer * game.grid_cell_size); const cell_size = game.grid_cell_size; var rect = SDL.SDL_Rect{ .x = pos_x, .y = pos_y, .w = cell_size, .h = cell_size, }; //var trans: u8 = 0; var r: u8 = 0; var g: u8 = 0; var b: u8 = 0; var a: u8 = 255; for (game.bag.contents[0..5]) |_, i| { if (game.bag.contents[i]) |piece_type| { var piece = Piece.init(piece_type); for (piece.structure) |_, y| { for (piece.structure[y]) |_, x| { if (piece.structure[y][x]) { r = piece.color.r; g = piece.color.g; b = piece.color.b; a = piece.color.a; } else { r = piece.color.r; g = piece.color.g; b = piece.color.b; a = 50; } rect.x = pos_x + @intCast(i32, x) * cell_size; rect.y = pos_y + (@intCast(i32, y) + @intCast(i32, i * piece.structure.len)) * cell_size; _ = SDL.SDL_SetRenderDrawColor(game.renderer, r, g, b, a); _ = SDL.SDL_RenderFillRect(game.renderer, &rect); _ = SDL.SDL_SetRenderDrawColor(game.renderer, r -| 30, g -| 30, b -| 30, a); _ = SDL.SDL_RenderDrawRect(game.renderer, &rect); } } } } } pub fn renderHeld(game: Game) void { const pos_x = game.grid_pos_x - (5 * game.grid_cell_size); const pos_y = game.grid_pos_y + (Grid.buffer * game.grid_cell_size); const cell_size = game.grid_cell_size; var rect = SDL.SDL_Rect{ .x = pos_x, .y = pos_y, .w = cell_size, .h = cell_size, }; //var trans: u8 = 0; var r: u8 = 0; var g: u8 = 0; var b: u8 = 0; var a: u8 = 255; if (game.held) |held_type| { var held = Piece.init(held_type); for (held.structure) |_, y| { for (held.structure[y]) |_, x| { if (held.structure[y][x]) { r = held.color.r; g = held.color.g; b = held.color.b; a = held.color.a; } else { r = held.color.r; g = held.color.g; b = held.color.b; a = 50; } rect.x = pos_x + @intCast(i32, x) * cell_size; rect.y = pos_y + @intCast(i32, y) * cell_size; _ = SDL.SDL_SetRenderDrawColor(game.renderer, r, g, b, a); _ = SDL.SDL_RenderFillRect(game.renderer, &rect); _ = SDL.SDL_SetRenderDrawColor(game.renderer, r -| 30, g -| 30, b -| 30, a); _ = SDL.SDL_RenderDrawRect(game.renderer, &rect); } } } } 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); renderHeld(game); }