1
- pub const std = @import ("std" );
2
- pub const delve = @import ("delve" );
3
- pub const entities = @import ("entities.zig" );
4
- pub const basics = @import ("../entities/basics.zig" );
5
- pub const player = @import ("../entities/player.zig" );
6
- pub const inventory = @import ("../entities/inventory.zig" );
7
- pub const character = @import ("../entities/character.zig" );
8
- pub const box_collision = @import ("../entities/box_collision.zig" );
9
- pub const quakesolids = @import ("../entities/quakesolids.zig" );
10
- pub const mover = @import ("../entities/mover.zig" );
11
- pub const particles = @import ("../entities/particle_emitter.zig" );
12
- pub const options = @import ("options.zig" );
13
- pub const spinner = @import ("../entities/spinner.zig" );
14
- pub const stats = @import ("../entities/actor_stats.zig" );
15
- pub const weapons = @import ("../entities/weapon.zig" );
16
- pub const quakemap = @import ("../entities/quakemap.zig" );
17
- pub const string = @import ("../utils/string.zig" );
18
- pub const imgui = delve .imgui ;
1
+ const std = @import ("std" );
2
+ const delve = @import ("delve" );
3
+ const entities = @import ("entities.zig" );
4
+ const game_states = @import ("game_states.zig" );
5
+ const basics = @import ("../entities/basics.zig" );
6
+ const player = @import ("../entities/player.zig" );
7
+ const inventory = @import ("../entities/inventory.zig" );
8
+ const character = @import ("../entities/character.zig" );
9
+ const box_collision = @import ("../entities/box_collision.zig" );
10
+ const quakesolids = @import ("../entities/quakesolids.zig" );
11
+ const mover = @import ("../entities/mover.zig" );
12
+ const particles = @import ("../entities/particle_emitter.zig" );
13
+ const options = @import ("options.zig" );
14
+ const spinner = @import ("../entities/spinner.zig" );
15
+ const stats = @import ("../entities/actor_stats.zig" );
16
+ const weapons = @import ("../entities/weapon.zig" );
17
+ const quakemap = @import ("../entities/quakemap.zig" );
18
+ const string = @import ("../utils/string.zig" );
19
+ const title_screen = @import ("states/title_screen.zig" );
20
+ const imgui = delve .imgui ;
19
21
20
22
pub const GameInstance = struct {
21
23
allocator : std.mem.Allocator ,
22
24
world : * entities.World ,
25
+ states : game_states.GameStateStack = .{},
23
26
24
27
player_controller : ? * player.PlayerController = null ,
25
28
music : ? delve.platform.audio.Sound = null ,
@@ -41,6 +44,8 @@ pub const GameInstance = struct {
41
44
delve .debug .log ("Game instance tearing down" , .{});
42
45
self .world .deinit ();
43
46
47
+ self .states .deinit ();
48
+
44
49
// some components have globals that need to be cleaned up
45
50
box_collision .deinit ();
46
51
particles .deinit ();
@@ -90,6 +95,9 @@ pub const GameInstance = struct {
90
95
.stream = true ,
91
96
.loop = true ,
92
97
});
98
+
99
+ const title_scr = try title_screen .TitleScreen .init ();
100
+ self .states .setState (title_scr );
93
101
}
94
102
95
103
pub fn stop (self : * GameInstance ) void {
@@ -103,6 +111,9 @@ pub const GameInstance = struct {
103
111
self .world .tick (delta );
104
112
self .time += @floatCast (delta );
105
113
114
+ // TODO: Testing game states
115
+ self .states .tick (delta );
116
+
106
117
if (delve .platform .input .isKeyJustPressed (.K )) {
107
118
self .saveGame ("test_save_game.json" ) catch | e | {
108
119
delve .debug .warning ("Could not write save game to json! {any}" , .{e });
0 commit comments