From b6cf1d104da53ec9c30dc45c35d9de48812f0afc Mon Sep 17 00:00:00 2001 From: Xander Swan Date: Wed, 3 Dec 2025 09:52:13 -0500 Subject: Initial commit --- src/main.odin | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/main.odin (limited to 'src/main.odin') diff --git a/src/main.odin b/src/main.odin new file mode 100644 index 0000000..41af6e3 --- /dev/null +++ b/src/main.odin @@ -0,0 +1,80 @@ +package demonchime + +// import "core:math" +// import "core:math/rand" +// import "core:time" + +import "base:runtime" + +import sg "shared:sokol/gfx" +import sapp "shared:sokol/app" +import sglue "shared:sokol/glue" +import slog "shared:sokol/log" + +import "draw" + +Vec2 :: [2]f32 + +state: struct { + player: Player, + + renderer: draw.Renderer, + + input: Input, +} + +init :: proc "c" () { + context = runtime.default_context() + + sg.setup({ + environment = sglue.environment(), + logger = {func=slog.func}, + }) + + init_keybinds(&state.input) + + draw.init(&state.renderer) + + init_player(&state.player) +} + +frame :: proc "c" () { + context = runtime.default_context() + + update_player(&state.player, f32(sapp.frame_duration())) + + draw.new_frame(&state.renderer) + + draw_player(state.player) + + draw.end_frame(&state.renderer) +} + +event :: proc "c" (event: ^sapp.Event) { + context = runtime.default_context() + + if event.type == .KEY_DOWN && event.key_code == .ESCAPE { + sapp.quit() + } + + input_event(event, &state.input) +} + +cleanup :: proc "c" () { + context = runtime.default_context() + sg.shutdown() +} + +main :: proc() { + sapp.run({ + init_cb = init, + frame_cb = frame, + event_cb = event, + cleanup_cb = cleanup, + width = 800, + height = 600, + window_title = "Demonchime", + icon = {sokol_default = true}, + logger = {func=slog.func}, + }) +} -- cgit v1.3-2-g0d8e