using System.Numerics; using DaggerFramework; using DaggerFramework.Rendering; using DaggerFramework.Audio; using DaggerFramework.Resources; using DaggerFramework.SceneGraph; public class TestGame : Game { public override string ResourceRoot => "Resources/"; public override void Initialize() { _renderer = new RaylibRenderer(); _audioBackend = new FmodAudioBackend(); _inputHandler = new RaylibInputHandler(); _resourceManager.AddResourceSaverAssociation(new SerializedSceneSaver()); _renderer.CreateAndInitialize(new WindowSettings() { Title = "Test Game", Size = new Vector2(1280, 720), }, new RendererSettings() { UseVSync = true, Fullscreen = false }); _audioBackend.Initialize(); _scene = new Scene(new SceneSettings() { Renderer = _renderer, AudioBackend = _audioBackend, InputHandler = _inputHandler, ResourceManager = _resourceManager }); _uiLayer = new UiLayer(); _worldLayer = new EntityLayer(); } public override void Shutdown() { _renderer!.Shutdown(); _audioBackend?.Shutdown(); } protected override void LoadResources() { if (_resourceManager.TryLoad("my_sound", "sounds/test_sound.ogg")) { _resourceManager.TryGetResource("my_sound", out _testSound); } if (_resourceManager.TryLoad("inter_regular", "fonts/Inter-Regular.ttf")) { _resourceManager.TryGetResource("inter_regular", out _font); if (_font is not null) { _font.Size = 20; } } } protected override void Ready() { _inputHandler!.AddInputMapping("play", new InputAction[] { new KeyInputAction(KeyboardKey.Spacebar) }); _inputHandler.AddInputMapping("sprint", new InputAction[] { new KeyInputAction(KeyboardKey.LeftShift) }); _scene!.AddLayer("World", _worldLayer!); _worldLayer!.AddEntity(new World()); _worldLayer.AddEntity(new TestPlayer()); _scene.AddLayer("UI", _uiLayer!); SerializedScene serializedScene; if (_scene!.TrySerialize(out serializedScene)) { _resourceManager.TrySave(Path.Combine(_resourceManager.ResourceRoot, "main.scene"), in serializedScene); } _scene.Start(); } protected override void Run() { while (_scene!.ShouldRun) { _scene.Update(); _scene.BeginDraw(); _scene.EndDraw(); } } private Renderer? _renderer; private ResourceManager _resourceManager = new(); private Sound? _testSound; private Font? _font; private FmodAudioBackend? _audioBackend; private InputHandler? _inputHandler; private Scene? _scene; private UiLayer? _uiLayer; private EntityLayer? _worldLayer; }