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(); _renderer.CreateAndInitialize(new WindowSettings() { Title = "Test Game", Size = new Vector2(1280, 720), }, new RendererSettings() { UseVSync = true, Fullscreen = false }); _audioBackend.Initialize(); _scene = new Scene(_renderer, _inputHandler, _audioBackend, _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.Start(); } protected override void Run() { while (_scene.ShouldRun) { _scene.Update(); double frameTimeMs = _renderer.FrameTime * 1000f; _renderer.SetTransform(Vector2.One * 32f, Vector2.Zero, 0f); if (_font is not null) { _renderer.DrawText(_font, $"{frameTimeMs:0.0} ms", new Color(1f, 1f, 1f, 0.5f)); } } } 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; }