113 lines
3.6 KiB
Zig
113 lines
3.6 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");
|
|
|
|
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);
|
|
}
|