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.
.dependencies = .{
.seizer = .{
.url = "https://github.com/leroycep/seizer/archive/e065ae24f5ae4be546c6f1eb170677b0ac835452.tar.gz",
.hash = "12200e611cb9ea7aa15b43cc52a6ff31aa8dbcf33a360c858ea237a6df102ee8da6d",
.url = "https://github.com/leroycep/seizer/archive/78cba44f8d07492cb84939ad836746f7d82ae5e2.tar.gz",
.hash = "1220cbae20222089c1ec9b847ef3466f13a665707e8d0e8ea2b57ffda083fd9275b6",
},
},
.paths = .{

View File

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