aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
diff options
context:
space:
mode:
authorXander Swan <email>2025-12-03 09:52:13 -0500
committerXander Swan <email>2025-12-03 09:52:13 -0500
commitb6cf1d104da53ec9c30dc45c35d9de48812f0afc (patch)
tree49421206d8d866e82a8a743cba5ced494cbfc785 /src/main.odin
Initial commit
Diffstat (limited to 'src/main.odin')
-rw-r--r--src/main.odin80
1 files changed, 80 insertions, 0 deletions
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},
+ })
+}