aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.odin')
-rw-r--r--src/main.odin131
1 files changed, 30 insertions, 101 deletions
diff --git a/src/main.odin b/src/main.odin
index 2ca3e7f..9a6c09a 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -7,13 +7,9 @@ package demonchime
import "base:runtime"
import "core:log"
+import "core:fmt"
-import sg "shared:sokol/gfx"
-import sapp "shared:sokol/app"
-import sglue "shared:sokol/glue"
-import stime "shared:sokol/time"
-import slog "shared:sokol/log"
-import sdtxt "shared:sokol/debugtext"
+import rl "vendor:raylib"
import "draw"
import "phys"
@@ -27,47 +23,13 @@ Rect :: struct {
state: struct {
player: Player,
-
platform_list: Entity_List(Platform),
-
- renderer: draw.Renderer,
- physics_world: phys.World,
-
- input: Input,
-
- fps: f32,
- last_fps: f32,
- frames_rendered: int,
}
-logger: log.Logger
-
-default_context :: proc "contextless" () -> runtime.Context {
- ctx := runtime.default_context()
- ctx.logger = logger
- return ctx
-}
-
-init :: proc "c" () {
- context = default_context()
-
- stime.setup()
-
- sg.setup({
- environment = sglue.environment(),
- logger = {func=slog.func},
- })
-
- sdtxt.setup({
- fonts = {
- 0 = sdtxt.font_kc853(),
- },
- logger = {func=slog.func},
- })
+init :: proc() {
+ init_keybinds()
- init_keybinds(&state.input)
-
- draw.init(&state.renderer)
+ draw.init()
init_player(&state.player)
@@ -89,17 +51,14 @@ init :: proc "c" () {
start = {160, 320},
size = {20, 20}
})
-
make_platform(Rect{
start = {240, 280},
size = {40, 20}
})
-
make_platform(Rect{
start = {260, 260},
size = {20, 20}
})
-
make_platform(Rect{
start = {300, 220},
size = {40, 20}
@@ -126,74 +85,44 @@ init :: proc "c" () {
})
}
-frame :: proc "c" () {
- context = default_context()
-
- update_player(&state.player, f32(sapp.frame_duration()))
-
- // sdtxt.canvas(f32(sapp.width()), f32(sapp.height()))
- sdtxt.canvas(draw.SCREEN_WIDTH, draw.SCREEN_HEIGHT)
- sdtxt.origin(0.1, 0.1)
- sdtxt.home()
- sdtxt.font(0)
+frame :: proc() {
+ update_player(&state.player, rl.GetFrameTime())
- stats := sg.query_frame_stats()
- sdtxt.printf("FPS: %f\n", state.fps)
- sdtxt.printf("Draw calls: %d\n", stats.num_draw)
+ draw.new_frame()
- draw.new_frame(&state.renderer)
-
- draw_player(state.player)
+ fps_text := fmt.caprintf(
+ "FPS: %v", rl.GetFPS(),
+ allocator = context.temp_allocator,
+ )
+ rl.DrawText(fps_text, 5, 5, 8, rl.GREEN)
draw_platforms()
+ draw_player(state.player)
- draw.end_frame(&state.renderer)
-
- free_all(context.temp_allocator)
-
- state.frames_rendered += 1
- now := f32(stime.sec(stime.now()))
- if now - state.last_fps > 1 {
- state.fps = f32(state.frames_rendered) / (now - state.last_fps)
- state.last_fps = now
- state.frames_rendered = 0
- }
-}
-
-event :: proc "c" (event: ^sapp.Event) {
- context = default_context()
-
- if event.type == .KEY_DOWN && event.key_code == .ESCAPE {
- sapp.quit()
- }
-
- input_event(event, &state.input)
+ draw.end_frame()
}
-cleanup :: proc "c" () {
- context = default_context()
- sg.shutdown()
- sdtxt.shutdown()
-
+cleanup :: proc() {
delete_entity_list(state.platform_list)
}
main :: proc() {
- logger = log.create_console_logger()
+ logger := log.create_console_logger()
context.logger = logger
+ defer log.destroy_console_logger(logger)
- 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},
- })
+ rl.InitWindow(480 * 2, 360 * 2, "Demonchime")
+
+ rl.SetWindowState({.WINDOW_RESIZABLE})
+
+ init()
+
+ for !rl.WindowShouldClose() {
+ frame()
+
+ free_all(context.temp_allocator)
+ }
- log.destroy_console_logger(logger)
+ cleanup()
}