feat: only redraw when neccessary
/ build-dist (push) Failing after 31s Details

dev
LeRoyce Pearson 2024-07-26 14:16:20 -06:00
parent 17988b97f7
commit 9bfb9112f5
2 changed files with 26 additions and 21 deletions

View File

@ -16,8 +16,8 @@
// internet connectivity. // internet connectivity.
.dependencies = .{ .dependencies = .{
.seizer = .{ .seizer = .{
.url = "https://github.com/leroycep/seizer/archive/e065ae24f5ae4be546c6f1eb170677b0ac835452.tar.gz", .url = "https://github.com/leroycep/seizer/archive/78cba44f8d07492cb84939ad836746f7d82ae5e2.tar.gz",
.hash = "12200e611cb9ea7aa15b43cc52a6ff31aa8dbcf33a360c858ea237a6df102ee8da6d", .hash = "1220cbae20222089c1ec9b847ef3466f13a665707e8d0e8ea2b57ffda083fd9275b6",
}, },
}, },
.paths = .{ .paths = .{

View File

@ -24,6 +24,8 @@ var current_menu_fn: ?MenuFn = null;
var win_count: ?u32 = null; var win_count: ?u32 = null;
var win_triggered: bool = false; var win_triggered: bool = false;
var frame_count: u64 = 0; var frame_count: u64 = 0;
var draw_required: bool = true;
var previous_framebuffer_size: [2]f32 = .{ 0, 0 };
pub fn init() !void { pub fn init() !void {
prng = std.rand.DefaultPrng.init(@bitCast(std.time.timestamp())); prng = std.rand.DefaultPrng.init(@bitCast(std.time.timestamp()));
@ -179,6 +181,17 @@ fn render(window: seizer.Window) !void {
resetHistory(); resetHistory();
win_triggered = true; win_triggered = true;
draw_required = true;
}
const framebuffer_size = window.getFramebufferSize();
if (!std.mem.eql(f32, &framebuffer_size, &previous_framebuffer_size)) {
draw_required = true;
}
if (!draw_required) {
return;
} }
gl.clearColor(0.2, 0.4, 0.2, 1.0); gl.clearColor(0.2, 0.4, 0.2, 1.0);
@ -186,7 +199,7 @@ fn render(window: seizer.Window) !void {
canvas.begin(.{ canvas.begin(.{
.window_size = window.getSize(), .window_size = window.getSize(),
.framebuffer_size = window.getFramebufferSize(), .framebuffer_size = framebuffer_size,
}); });
const scale: u32 = if (canvas.window_size[1] <= 400) 1 else 2; const scale: u32 = if (canvas.window_size[1] <= 400) 1 else 2;
@ -400,6 +413,8 @@ fn render(window: seizer.Window) !void {
canvas.end(); canvas.end();
try window.swapBuffers();
frame_count +%= 1; frame_count +%= 1;
} }
@ -414,26 +429,9 @@ pub fn haveWon() bool {
return true; return true;
} }
pub fn makeStandardDeck(allocator: std.mem.Allocator) ![]Card {
var deck = try allocator.alloc(Card, 52);
errdefer allocator.free(deck);
var next_index: usize = 0;
for (0..4) |suit| {
for (1..14) |rank| {
deck[next_index] = Card{
.suit = @enumFromInt(suit),
.rank = @intCast(rank),
};
next_index += 1;
}
}
return deck;
}
pub fn deselect(pressed: bool) !void { pub fn deselect(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
try menu_fn(.deselect); try menu_fn(.deselect);
} }
@ -444,6 +442,7 @@ pub fn deselect(pressed: bool) !void {
pub fn doSelectOrPlace(pressed: bool) !void { pub fn doSelectOrPlace(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
try menu_fn(.select); try menu_fn(.select);
return; return;
@ -590,6 +589,7 @@ pub fn doSelectOrPlace(pressed: bool) !void {
pub fn moveLeft(pressed: bool) !void { pub fn moveLeft(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
_ = menu_fn; _ = menu_fn;
return; return;
@ -620,6 +620,7 @@ pub fn moveLeft(pressed: bool) !void {
pub fn moveRight(pressed: bool) !void { pub fn moveRight(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
_ = menu_fn; _ = menu_fn;
return; return;
@ -650,6 +651,7 @@ pub fn moveRight(pressed: bool) !void {
pub fn moveUp(pressed: bool) !void { pub fn moveUp(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
return try menu_fn(.up); return try menu_fn(.up);
@ -687,6 +689,7 @@ pub fn moveUp(pressed: bool) !void {
pub fn moveDown(pressed: bool) !void { pub fn moveDown(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn) |menu_fn| { if (current_menu_fn) |menu_fn| {
return try menu_fn(.down); return try menu_fn(.down);
} }
@ -722,6 +725,7 @@ pub fn moveDown(pressed: bool) !void {
pub fn undo(pressed: bool) !void { pub fn undo(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (history.items.len > 1) { if (history.items.len > 1) {
_ = history.pop(); _ = history.pop();
@ -734,6 +738,7 @@ pub fn undo(pressed: bool) !void {
pub fn toggleMenu(pressed: bool) !void { pub fn toggleMenu(pressed: bool) !void {
if (!pressed) return; if (!pressed) return;
draw_required = true;
if (current_menu_fn == null) { if (current_menu_fn == null) {
current_menu_fn = menuMain; current_menu_fn = menuMain;
} else { } else {