using System.Numerics; using DaggerFramework; using DaggerFramework.Rendering; using DaggerFramework.Audio; using DaggerFramework.Resources; using DaggerFramework.SceneGraph; using DaggerFramework.Utils; 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 = true }); _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) }); _inputHandler.AddInputMapping("toggle_fullscreen", new InputAction[] { new KeyInputAction(KeyboardKey.F11) }); _scene!.AddLayer("World", _worldLayer!); _worldLayer!.AddEntity(new World()); _worldLayer.AddEntity(new TestPlayer()); _scene.AddLayer("UI", _uiLayer!); _scene.Start(); } protected override void Run() { while (_scene!.ShouldRun) { _scene.Update(); if (_inputHandler!.IsActionPressed("toggle_fullscreen")) { _renderer!.Fullscreen = !_renderer.Fullscreen; _logger.Info($"Fullscreen: {_renderer.Fullscreen}"); } _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; private Logger _logger = new(nameof(TestGame)); }