diff --git a/game/game.jai b/game/game.jai new file mode 100644 index 0000000..a0723a6 --- /dev/null +++ b/game/game.jai @@ -0,0 +1,19 @@ +#scope_file +cam : Camera; +world : World; +#scope_export + +game_init :: () { + print("Game init...\n"); + cam.position = .{5,5,5}; + cam.target = .{3,6,3}; + cam.near = 0.1; + cam.far = 5000; +} + +game_tick :: () { +} + +game_draw :: () { + draw_sky(*cam, *world.conf); +} diff --git a/src/editor/editor.jai b/src/editor/editor.jai index 211a4a9..5639d11 100644 --- a/src/editor/editor.jai +++ b/src/editor/editor.jai @@ -9,6 +9,7 @@ #scope_file + Editor_View :: enum { Closed_Editor; Trile_Editor; @@ -19,6 +20,8 @@ current_editor_view : Editor_View = .Trile_Editor; #scope_export +in_editor_view : bool = false; + init_editor :: () { init_profiler(); init_console(); @@ -29,33 +32,37 @@ console_open_ignore_input : bool = false; draw_editor_ui :: (theme: *GR.Overall_Theme) { - r := GR.get_rect(0,0,0,0); - r.x = 0; r.w = 100*vw; - r.y = 0; r.h = ui_h(5, 0); - draw_bg_rectangle(r, theme); - r.w = 15*vw; - GR.label(r, tprint("Trueno v%.%", V_MAJOR, V_MINOR), *t_label_left(theme)); + if in_editor_view { + r := GR.get_rect(0,0,0,0); + r.x = 0; r.w = 100*vw; + r.y = 0; r.h = ui_h(5, 0); + draw_bg_rectangle(r, theme); + r.w = 15*vw; + GR.label(r, tprint("Trueno v%.%", V_MAJOR, V_MINOR), *t_label_left(theme)); - r.x = 100*vw - r.w; - if GR.button(r, "Level editor", *t_button_selectable(theme, current_editor_view == .Level_Editor)) - then current_editor_view = .Level_Editor; + r.x = 100*vw - r.w; + if GR.button(r, "Level editor", *t_button_selectable(theme, current_editor_view == .Level_Editor)) + then current_editor_view = .Level_Editor; - r.x -= r.w; - if GR.button(r, "Trile editor", *t_button_selectable(theme, current_editor_view == .Trile_Editor)) - then current_editor_view = .Trile_Editor; + r.x -= r.w; + if GR.button(r, "Trile editor", *t_button_selectable(theme, current_editor_view == .Trile_Editor)) + then current_editor_view = .Trile_Editor; - if current_editor_view == { - case .Trile_Editor; - draw_trile_editor_ui(theme); - case .Level_Editor; - draw_level_editor_ui(theme); + if current_editor_view == { + case .Trile_Editor; + draw_trile_editor_ui(theme); + case .Level_Editor; + draw_level_editor_ui(theme); + } } draw_console(theme); draw_profiler(); } draw_editor :: () { + if !in_editor_view then return; + if current_editor_view == { case .Trile_Editor; draw_trile_editor(); @@ -66,11 +73,18 @@ draw_editor :: () { } tick_editor_ui :: () { - if current_editor_view == { - case .Trile_Editor; - tick_trile_editor(); - case .Level_Editor; - tick_level_editor(); + if input_button_states[Key_Code.F3] & .START { + in_editor_view = !in_editor_view; } + + if in_editor_view { + if current_editor_view == { + case .Trile_Editor; + tick_trile_editor(); + case .Level_Editor; + tick_level_editor(); + } + } + tick_console(); } diff --git a/src/main.jai b/src/main.jai index 8e6316c..773ba4d 100644 --- a/src/main.jai +++ b/src/main.jai @@ -26,6 +26,8 @@ stbi :: #import "stb_image"; #load "ray.jai"; #load "world.jai"; +#load "../game/game.jai"; + last_frame_time : float64; delta\ _time : float64; @@ -101,10 +103,9 @@ init_after_asset_pack :: () { init_ui(); set_trile("test", Trile.{}); init_editor(); + game_init(); } -cam : Camera; - frame :: () { delta_time = get_time() - last_frame_time; last_frame_time = get_time(); @@ -122,6 +123,7 @@ frame :: () { dpis := state.dpi_scale; tick_profiler(); + if !in_editor_view then game_tick(); fonsClearState(state.fons); for event: Input.events_this_frame { GR.getrect_handle_event(event); @@ -134,6 +136,7 @@ frame :: () { sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, swapchain = cast,force(sg_swapchain) sglue_swapchain() })); tick_ui(); draw_editor(); + if !in_editor_view then game_draw(); ui_pass(); sg_end_pass(); sg_commit();