diff options
| author | Xander Swan <no email> | 2025-12-17 18:38:21 -0500 |
|---|---|---|
| committer | Xander Swan <no email> | 2025-12-17 18:38:21 -0500 |
| commit | ce4d64bd41937d7dff18ca607122188dc338d696 (patch) | |
| tree | ad5f7cbdffcc1478883cbca0ea7b8365b2108d0a /src/main.odin | |
| parent | 87a7a010ecbe2cb99fedf44d0cac31e2efae86d5 (diff) | |
switch to raylib, update some structure
Diffstat (limited to 'src/main.odin')
| -rw-r--r-- | src/main.odin | 131 |
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() } |
