zig-raylib-db/src/main.zig

48 lines
1.7 KiB
Zig
Raw Normal View History

2024-02-17 02:27:03 +01:00
const std = @import("std");
const raylib = @import("raylib.zig");
const rl = raylib.rl;
const home = @import("home.zig");
const departure = @import("departure.zig");
2024-02-17 03:31:44 +01:00
const AppState = @import("state.zig");
2024-02-17 02:27:03 +01:00
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const allocator = gpa.allocator();
rl.SetConfigFlags(rl.FLAG_WINDOW_RESIZABLE | rl.FLAG_VSYNC_HINT);
rl.SetTargetFPS(60);
rl.InitWindow(800, 600, "Testing Raylib");
defer rl.CloseWindow();
2024-02-17 08:10:55 +01:00
const font = blk: {
2024-02-17 09:51:10 +01:00
var cp_cnt: c_int = 0;
const cp = rl.LoadCodepoints(
"aäbcdeèéfghijklmnoöpqrsßtuüvwxyzAÄBCDEÈÉFGHIJKLMNOÖPQRSẞTUÜVWXYZ0123456789-_,()/\\:+",
&cp_cnt,
);
break :blk rl.LoadFontEx("./db.ttf", 64, cp, cp_cnt);
2024-02-17 08:10:55 +01:00
};
2024-02-17 02:27:03 +01:00
var station_name_buffer: [100]u8 = .{0} ** 100;
var platform_buffer: [20]u8 = .{0} ** 20;
var station_id_buffer: [10]u8 = .{0} ** 10;
2024-02-17 03:31:44 +01:00
var appState = AppState{
2024-02-17 02:27:03 +01:00
.allocator = allocator,
2024-02-17 09:51:10 +01:00
.font = font,
2024-02-17 02:27:03 +01:00
.home_screen_state = .{
.station_name = std.ArrayListUnmanaged(u8).initBuffer(&station_name_buffer),
},
.departure_screen_state = .{
.platform = std.ArrayListUnmanaged(u8).initBuffer(&platform_buffer),
.station_id = std.ArrayListUnmanaged(u8).initBuffer(&station_id_buffer), // 7 digit id
.departure_date = std.time.Instant.now() catch @panic("Idk buddy, hook a wall clock to your CPU ig"),
},
};
while (!appState.close_app) {
switch (appState.screen) {
.home => try home.render(&appState),
.departure => try departure.render(&appState),
}
}
}