add code to integrate a game into the engine
This commit is contained in:
parent
d0ee73035b
commit
77a70fc139
19
game/game.jai
Normal file
19
game/game.jai
Normal file
@ -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);
|
||||||
|
}
|
||||||
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#scope_file
|
#scope_file
|
||||||
|
|
||||||
|
|
||||||
Editor_View :: enum {
|
Editor_View :: enum {
|
||||||
Closed_Editor;
|
Closed_Editor;
|
||||||
Trile_Editor;
|
Trile_Editor;
|
||||||
@ -19,6 +20,8 @@ current_editor_view : Editor_View = .Trile_Editor;
|
|||||||
|
|
||||||
#scope_export
|
#scope_export
|
||||||
|
|
||||||
|
in_editor_view : bool = false;
|
||||||
|
|
||||||
init_editor :: () {
|
init_editor :: () {
|
||||||
init_profiler();
|
init_profiler();
|
||||||
init_console();
|
init_console();
|
||||||
@ -29,33 +32,37 @@ console_open_ignore_input : bool = false;
|
|||||||
|
|
||||||
|
|
||||||
draw_editor_ui :: (theme: *GR.Overall_Theme) {
|
draw_editor_ui :: (theme: *GR.Overall_Theme) {
|
||||||
r := GR.get_rect(0,0,0,0);
|
if in_editor_view {
|
||||||
r.x = 0; r.w = 100*vw;
|
r := GR.get_rect(0,0,0,0);
|
||||||
r.y = 0; r.h = ui_h(5, 0);
|
r.x = 0; r.w = 100*vw;
|
||||||
draw_bg_rectangle(r, theme);
|
r.y = 0; r.h = ui_h(5, 0);
|
||||||
r.w = 15*vw;
|
draw_bg_rectangle(r, theme);
|
||||||
GR.label(r, tprint("Trueno v%.%", V_MAJOR, V_MINOR), *t_label_left(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;
|
r.x = 100*vw - r.w;
|
||||||
if GR.button(r, "Level editor", *t_button_selectable(theme, current_editor_view == .Level_Editor))
|
if GR.button(r, "Level editor", *t_button_selectable(theme, current_editor_view == .Level_Editor))
|
||||||
then current_editor_view = .Level_Editor;
|
then current_editor_view = .Level_Editor;
|
||||||
|
|
||||||
r.x -= r.w;
|
r.x -= r.w;
|
||||||
if GR.button(r, "Trile editor", *t_button_selectable(theme, current_editor_view == .Trile_Editor))
|
if GR.button(r, "Trile editor", *t_button_selectable(theme, current_editor_view == .Trile_Editor))
|
||||||
then current_editor_view = .Trile_Editor;
|
then current_editor_view = .Trile_Editor;
|
||||||
|
|
||||||
|
|
||||||
if current_editor_view == {
|
if current_editor_view == {
|
||||||
case .Trile_Editor;
|
case .Trile_Editor;
|
||||||
draw_trile_editor_ui(theme);
|
draw_trile_editor_ui(theme);
|
||||||
case .Level_Editor;
|
case .Level_Editor;
|
||||||
draw_level_editor_ui(theme);
|
draw_level_editor_ui(theme);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
draw_console(theme);
|
draw_console(theme);
|
||||||
draw_profiler();
|
draw_profiler();
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_editor :: () {
|
draw_editor :: () {
|
||||||
|
if !in_editor_view then return;
|
||||||
|
|
||||||
if current_editor_view == {
|
if current_editor_view == {
|
||||||
case .Trile_Editor;
|
case .Trile_Editor;
|
||||||
draw_trile_editor();
|
draw_trile_editor();
|
||||||
@ -66,11 +73,18 @@ draw_editor :: () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tick_editor_ui :: () {
|
tick_editor_ui :: () {
|
||||||
if current_editor_view == {
|
if input_button_states[Key_Code.F3] & .START {
|
||||||
case .Trile_Editor;
|
in_editor_view = !in_editor_view;
|
||||||
tick_trile_editor();
|
|
||||||
case .Level_Editor;
|
|
||||||
tick_level_editor();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if in_editor_view {
|
||||||
|
if current_editor_view == {
|
||||||
|
case .Trile_Editor;
|
||||||
|
tick_trile_editor();
|
||||||
|
case .Level_Editor;
|
||||||
|
tick_level_editor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tick_console();
|
tick_console();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,8 @@ stbi :: #import "stb_image";
|
|||||||
#load "ray.jai";
|
#load "ray.jai";
|
||||||
#load "world.jai";
|
#load "world.jai";
|
||||||
|
|
||||||
|
#load "../game/game.jai";
|
||||||
|
|
||||||
last_frame_time : float64;
|
last_frame_time : float64;
|
||||||
delta\ _time : float64;
|
delta\ _time : float64;
|
||||||
|
|
||||||
@ -101,10 +103,9 @@ init_after_asset_pack :: () {
|
|||||||
init_ui();
|
init_ui();
|
||||||
set_trile("test", Trile.{});
|
set_trile("test", Trile.{});
|
||||||
init_editor();
|
init_editor();
|
||||||
|
game_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
cam : Camera;
|
|
||||||
|
|
||||||
frame :: () {
|
frame :: () {
|
||||||
delta_time = get_time() - last_frame_time;
|
delta_time = get_time() - last_frame_time;
|
||||||
last_frame_time = get_time();
|
last_frame_time = get_time();
|
||||||
@ -122,6 +123,7 @@ frame :: () {
|
|||||||
dpis := state.dpi_scale;
|
dpis := state.dpi_scale;
|
||||||
|
|
||||||
tick_profiler();
|
tick_profiler();
|
||||||
|
if !in_editor_view then game_tick();
|
||||||
fonsClearState(state.fons);
|
fonsClearState(state.fons);
|
||||||
for event: Input.events_this_frame {
|
for event: Input.events_this_frame {
|
||||||
GR.getrect_handle_event(event);
|
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() }));
|
sg_begin_pass(*(sg_pass.{ action = state.pass_action_clear, swapchain = cast,force(sg_swapchain) sglue_swapchain() }));
|
||||||
tick_ui();
|
tick_ui();
|
||||||
draw_editor();
|
draw_editor();
|
||||||
|
if !in_editor_view then game_draw();
|
||||||
ui_pass();
|
ui_pass();
|
||||||
sg_end_pass();
|
sg_end_pass();
|
||||||
sg_commit();
|
sg_commit();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user