diff options
Diffstat (limited to 'src/main.odin')
| -rw-r--r-- | src/main.odin | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/src/main.odin b/src/main.odin index 9a6c09a..6b04e02 100644 --- a/src/main.odin +++ b/src/main.odin @@ -8,11 +8,13 @@ import "base:runtime" import "core:log" import "core:fmt" +import "core:mem" import rl "vendor:raylib" import "draw" import "phys" +import "tiled" Vec2 :: [2]f32 @@ -24,6 +26,8 @@ Rect :: struct { state: struct { player: Player, platform_list: Entity_List(Platform), + + room: tiled.Map, } init :: proc() { @@ -33,6 +37,12 @@ init :: proc() { init_player(&state.player) + room, err := tiled.load_map("res/room_begin.tmj") + if err != .NONE { + log.errorf("Error loading map (%v)", err) + } + state.room = room + make_platform(Rect{ start = {50, 50}, size = {64, 20} @@ -41,7 +51,7 @@ init :: proc() { i := f32(20) for i < draw.SCREEN_WIDTH - 20 - 64 { make_platform(Rect{ - start = {i, 340}, + start = {i, draw.SCREEN_HEIGHT - 20}, size = {64, 20} }) i += 65 @@ -52,14 +62,6 @@ init :: proc() { 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} }) @@ -90,23 +92,54 @@ frame :: proc() { draw.new_frame() + draw_platforms() + draw_player(state.player) + + tiled.draw_map(state.room) + 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() } cleanup :: proc() { + delete_player(&state.player) delete_entity_list(state.platform_list) + tiled.delete_map(state.room) + phys.destroy_world() } main :: proc() { + when ODIN_DEBUG { + track: mem.Tracking_Allocator + mem.tracking_allocator_init(&track, context.allocator) + context.allocator = mem.tracking_allocator(&track) + + defer { + if len(track.allocation_map) > 0 { + fmt.eprintf("=== %v allocations not freed: ===\n", len(track.allocation_map)) + total := 0 + for _, entry in track.allocation_map { + fmt.eprintf( + "- %v bytes @ %v (%v, mode %v)\n", + entry.size, + entry.location, + entry.err, + entry.mode, + ) + total += entry.size + } + + fmt.eprintf("=== a total of %v bytes unfreed ===\n", total) + } + mem.tracking_allocator_destroy(&track) + } + } + logger := log.create_console_logger() context.logger = logger defer log.destroy_console_logger(logger) |
