diff --git a/Robust.Client/GameController.cs b/Robust.Client/GameController.cs index 03f2de8dee..29294d8318 100644 --- a/Robust.Client/GameController.cs +++ b/Robust.Client/GameController.cs @@ -48,14 +48,6 @@ namespace Robust.Client { internal sealed partial class GameController : IGameControllerInternal { - public enum DisplayMode - { - Headless, - Clyde - } - - internal static DisplayMode Mode { get; private set; } = DisplayMode.Headless; - [Dependency] private readonly IConfigurationManager _configurationManager; [Dependency] private readonly IResourceCacheInternal _resourceCache; [Dependency] private readonly IResourceManager _resourceManager; @@ -80,9 +72,8 @@ namespace Robust.Client [Dependency] private readonly ITaskManager _taskManager; [Dependency] private readonly IViewVariablesManagerInternal _viewVariablesManager; [Dependency] private readonly IDiscordRichPresence _discord; - private IClyde _clyde; - private IFontManagerInternal _fontManager; - + [Dependency] private readonly IClyde _clyde; + [Dependency] private readonly IFontManagerInternal _fontManager; private void Startup() { @@ -109,11 +100,6 @@ namespace Robust.Client _configurationManager.SetSaveFile(configFile); } - if (Mode == DisplayMode.Clyde) - { - _clyde = IoCManager.Resolve(); - } - _resourceCache.Initialize(userDataDir); _resourceCache.LoadBaseResources(); @@ -121,11 +107,7 @@ namespace Robust.Client _displayManager.Initialize(); _displayManager.SetWindowTitle("Space Station 14"); - if (Mode == DisplayMode.Clyde) - { - _fontManager = IoCManager.Resolve(); - _fontManager.Initialize(); - } + _fontManager.Initialize(); //identical code for server in baseserver if (!AssemblyLoader.TryLoadAssembly(_resourceManager, $"Content.Shared")) @@ -279,5 +261,11 @@ namespace Robust.Client return Path.Combine(appDataDir, "Space Station 14"); } + + private enum DisplayMode + { + Headless, + Clyde, + } } } diff --git a/Robust.Client/GameController/GameController.IoC.cs b/Robust.Client/GameController/GameController.IoC.cs index 2bf4f4e565..7f450124b3 100644 --- a/Robust.Client/GameController/GameController.IoC.cs +++ b/Robust.Client/GameController/GameController.IoC.cs @@ -66,14 +66,14 @@ namespace Robust.Client // Partial of GameController to initialize IoC and some other low-level systems like it. internal sealed partial class GameController { - private static void InitIoC() + private static void InitIoC(DisplayMode mode) { - RegisterIoC(); + RegisterIoC(mode); IoCManager.BuildGraph(); RegisterReflection(); } - private static void RegisterIoC() + private static void RegisterIoC(DisplayMode mode) { // Shared stuff. IoCManager.Register(); @@ -115,20 +115,19 @@ namespace Robust.Client IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); - switch (Mode) + IoCManager.Register(); + IoCManager.Register(); + switch (mode) { case DisplayMode.Headless: - IoCManager.Register(); + IoCManager.Register(); + IoCManager.Register(); IoCManager.Register(); - IoCManager.Register(); - IoCManager.Register(); break; case DisplayMode.Clyde: IoCManager.Register(); IoCManager.Register(); - IoCManager.Register(); - IoCManager.Register(); - IoCManager.Register(); + IoCManager.Register(); break; default: throw new ArgumentOutOfRangeException(); diff --git a/Robust.Client/GameController/GameController.Standalone.cs b/Robust.Client/GameController/GameController.Standalone.cs index f86104715d..a3f1e4e2af 100644 --- a/Robust.Client/GameController/GameController.Standalone.cs +++ b/Robust.Client/GameController/GameController.Standalone.cs @@ -15,7 +15,7 @@ namespace Robust.Client { private GameLoop _mainLoop; - [Dependency] private IGameTiming _gameTimingHeadless; + [Dependency] private IGameTiming _gameTiming; public static void Main() { @@ -25,31 +25,32 @@ namespace Robust.Client IoCManager.InitThread(); + DisplayMode mode; if (Environment.GetCommandLineArgs().Contains("--headless")) { - Mode = DisplayMode.Headless; + mode = DisplayMode.Headless; } else { - Mode = DisplayMode.Clyde; + mode = DisplayMode.Clyde; } ThreadUtility.MainThread = Thread.CurrentThread; - InitIoC(); + InitIoC(mode); var gc = (GameController) IoCManager.Resolve(); gc.Startup(); - gc.MainLoop(); + gc.MainLoop(mode); Logger.Debug("Goodbye"); IoCManager.Clear(); } - private void MainLoop() + private void MainLoop(DisplayMode mode) { - _mainLoop = new GameLoop(_gameTimingHeadless) + _mainLoop = new GameLoop(_gameTiming) { - SleepMode = Mode == DisplayMode.Headless ? SleepMode.Delay : SleepMode.None + SleepMode = mode == DisplayMode.Headless ? SleepMode.Delay : SleepMode.None }; _mainLoop.Tick += (sender, args) => @@ -60,24 +61,21 @@ namespace Robust.Client } }; - if (Mode == DisplayMode.Clyde) + _mainLoop.Render += (sender, args) => { - _mainLoop.Render += (sender, args) => + if (_mainLoop.Running) { - if (_mainLoop.Running) - { - _gameTimingHeadless.CurFrame++; - _clyde.Render(new FrameEventArgs(args.DeltaSeconds)); - } - }; - _mainLoop.Input += (sender, args) => + _gameTiming.CurFrame++; + _clyde.Render(new FrameEventArgs(args.DeltaSeconds)); + } + }; + _mainLoop.Input += (sender, args) => + { + if (_mainLoop.Running) { - if (_mainLoop.Running) - { - _clyde.ProcessInput(new FrameEventArgs(args.DeltaSeconds)); - } - }; - } + _clyde.ProcessInput(new FrameEventArgs(args.DeltaSeconds)); + } + }; _mainLoop.Update += (sender, args) => { diff --git a/Robust.Client/GameObjects/EntitySystems/AudioSystem.cs b/Robust.Client/GameObjects/EntitySystems/AudioSystem.cs index c5a8ce8c1c..97d5108af3 100644 --- a/Robust.Client/GameObjects/EntitySystems/AudioSystem.cs +++ b/Robust.Client/GameObjects/EntitySystems/AudioSystem.cs @@ -1,5 +1,4 @@ using Robust.Client.Audio; -using Robust.Client.Interfaces; using Robust.Client.Interfaces.ResourceManagement; using Robust.Client.ResourceManagement; using Robust.Shared.Audio; @@ -22,19 +21,9 @@ namespace Robust.Client.GameObjects.EntitySystems { [Dependency] private readonly IResourceCache resourceCache; [Dependency] private readonly IMapManager _mapManager; + [Dependency] private readonly IClyde _clyde; - private IClyde _clyde; - - private readonly List PlayingClydeStreams = new List(); - - public override void Initialize() - { - base.Initialize(); - if (GameController.Mode == GameController.DisplayMode.Clyde) - { - _clyde = IoCManager.Resolve(); - } - } + private readonly List PlayingClydeStreams = new List(); public override void RegisterMessageTypes() { @@ -47,11 +36,6 @@ namespace Robust.Client.GameObjects.EntitySystems public override void FrameUpdate(float frameTime) { - if (GameController.Mode != GameController.DisplayMode.Clyde) - { - return; - } - // Update positions of streams every frame. foreach (var stream in PlayingClydeStreams) { @@ -92,23 +76,20 @@ namespace Robust.Client.GameObjects.EntitySystems /// public void Play(AudioStream stream, AudioParams? audioParams = null) { - if (GameController.Mode == GameController.DisplayMode.Clyde) + var source = _clyde.CreateAudioSource(stream); + if (audioParams.HasValue) { - var source = _clyde.CreateAudioSource(stream); - if (audioParams.HasValue) - { - source.SetPitch(audioParams.Value.PitchScale); - source.SetVolume(audioParams.Value.Volume); - } - - source.SetGlobal(); - source.StartPlaying(); - var playing = new PlayingClydeStream - { - Source = source, - }; - PlayingClydeStreams.Add(playing); + source.SetPitch(audioParams.Value.PitchScale); + source.SetVolume(audioParams.Value.Volume); } + + source.SetGlobal(); + source.StartPlaying(); + var playing = new PlayingStream + { + Source = source, + }; + PlayingClydeStreams.Add(playing); } /// @@ -130,24 +111,21 @@ namespace Robust.Client.GameObjects.EntitySystems /// public void Play(AudioStream stream, IEntity entity, AudioParams? audioParams = null) { - if (GameController.Mode == GameController.DisplayMode.Clyde) + var source = _clyde.CreateAudioSource(stream); + source.SetPosition(entity.Transform.WorldPosition); + if (audioParams.HasValue) { - var source = _clyde.CreateAudioSource(stream); - source.SetPosition(entity.Transform.WorldPosition); - if (audioParams.HasValue) - { - source.SetPitch(audioParams.Value.PitchScale); - source.SetVolume(audioParams.Value.Volume); - } - - source.StartPlaying(); - var playing = new PlayingClydeStream - { - Source = source, - TrackingEntity = entity, - }; - PlayingClydeStreams.Add(playing); + source.SetPitch(audioParams.Value.PitchScale); + source.SetVolume(audioParams.Value.Volume); } + + source.StartPlaying(); + var playing = new PlayingStream + { + Source = source, + TrackingEntity = entity, + }; + PlayingClydeStreams.Add(playing); } /// @@ -169,24 +147,21 @@ namespace Robust.Client.GameObjects.EntitySystems /// public void Play(AudioStream stream, GridCoordinates coordinates, AudioParams? audioParams = null) { - if (GameController.Mode == GameController.DisplayMode.Clyde) + var source = _clyde.CreateAudioSource(stream); + source.SetPosition(coordinates.ToWorld(_mapManager).Position); + if (audioParams.HasValue) { - var source = _clyde.CreateAudioSource(stream); - source.SetPosition(coordinates.ToWorld(_mapManager).Position); - if (audioParams.HasValue) - { - source.SetPitch(audioParams.Value.PitchScale); - source.SetVolume(audioParams.Value.Volume); - } - - source.StartPlaying(); - var playing = new PlayingClydeStream - { - Source = source, - TrackingCoordinates = coordinates - }; - PlayingClydeStreams.Add(playing); + source.SetPitch(audioParams.Value.PitchScale); + source.SetVolume(audioParams.Value.Volume); } + + source.StartPlaying(); + var playing = new PlayingStream + { + Source = source, + TrackingCoordinates = coordinates + }; + PlayingClydeStreams.Add(playing); } public override void HandleNetMessage(INetChannel channel, EntitySystemMessage message) @@ -228,7 +203,7 @@ namespace Robust.Client.GameObjects.EntitySystems } } - private class PlayingClydeStream + private class PlayingStream { public IClydeAudioSource Source; public IEntity TrackingEntity; diff --git a/Robust.Client/Graphics/Clyde/Clyde.Rendering.cs b/Robust.Client/Graphics/Clyde/Clyde.Rendering.cs index 22f066fa23..165bc3e309 100644 --- a/Robust.Client/Graphics/Clyde/Clyde.Rendering.cs +++ b/Robust.Client/Graphics/Clyde/Clyde.Rendering.cs @@ -97,11 +97,6 @@ namespace Robust.Client.Graphics.Clyde public void Render(FrameEventArgs args) { - if (GameController.Mode != GameController.DisplayMode.Clyde) - { - return; - } - GL.ClearColor(0, 0, 0, 1); GL.Clear(ClearBufferMask.ColorBufferBit); @@ -174,7 +169,7 @@ namespace Robust.Client.Graphics.Clyde .Where(o => o.Space == OverlaySpace.ScreenSpaceBelowWorld) .OrderBy(o => o.ZIndex)) { - overlay.OpenGLRender(_renderHandle); + overlay.ClydeRender(_renderHandle); } _flushRenderHandle(_renderHandle); @@ -243,7 +238,7 @@ namespace Robust.Client.Graphics.Clyde .Where(o => o.Space == OverlaySpace.WorldSpace) .OrderBy(o => o.ZIndex)) { - overlay.OpenGLRender(_renderHandle); + overlay.ClydeRender(_renderHandle); } _flushRenderHandle(_renderHandle); @@ -262,7 +257,7 @@ namespace Robust.Client.Graphics.Clyde .Where(o => o.Space == OverlaySpace.ScreenSpace) .OrderBy(o => o.ZIndex)) { - overlay.OpenGLRender(_renderHandle); + overlay.ClydeRender(_renderHandle); } _flushRenderHandle(_renderHandle); diff --git a/Robust.Client/Graphics/Clyde/ClydeHeadless.cs b/Robust.Client/Graphics/Clyde/ClydeHeadless.cs new file mode 100644 index 0000000000..4b8caa7f54 --- /dev/null +++ b/Robust.Client/Graphics/Clyde/ClydeHeadless.cs @@ -0,0 +1,133 @@ +using System; +using System.IO; +using Robust.Client.Audio; +using Robust.Client.Graphics.Shaders; +using Robust.Client.Interfaces.Graphics; +using Robust.Shared.Maths; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; + +namespace Robust.Client.Graphics.Clyde +{ + /// + /// Hey look, it's Clyde's evil twin brother! + /// + internal sealed class ClydeHeadless : DisplayManager, IClyde + { + // Would it make sense to report a fake resolution like 720p here so code doesn't break? idk. + public override Vector2i ScreenSize => (1280, 720); + public Vector2 MouseScreenPosition => ScreenSize / 2; + + public override void SetWindowTitle(string title) + { + // Nada. + } + + public override void Initialize() + { + // Nada. + } + +#pragma warning disable CS0067 + public override event Action OnWindowResized; +#pragma warning restore CS0067 + + public void Render(FrameEventArgs args) + { + // Nada. + } + + public void FrameProcess(RenderFrameEventArgs eventArgs) + { + // Nada. + } + + public void ProcessInput(FrameEventArgs frameEventArgs) + { + // Nada. + } + + public Texture LoadTextureFromPNGStream(Stream stream, string name = null, + TextureLoadParameters? loadParams = null) + { + using (var image = Image.Load(stream)) + { + return LoadTextureFromImage(image, name, loadParams); + } + } + + public Texture LoadTextureFromImage(Image image, string name = null, + TextureLoadParameters? loadParams = null) where T : unmanaged, IPixel + { + return new DummyTexture(image.Width, image.Height); + } + + public int LoadShader(ParsedShader shader, string name = null) + { + return default; + } + + public void Ready() + { + // Nada. + } + + public AudioStream LoadAudioOggVorbis(Stream stream) + { + // TODO: Might wanna actually load this so the length gets reported correctly. + return new AudioStream(default, default); + } + + public AudioStream LoadAudioWav(Stream stream) + { + // TODO: Might wanna actually load this so the length gets reported correctly. + return new AudioStream(default, default); + } + + public IClydeAudioSource CreateAudioSource(AudioStream stream) + { + return DummyAudioSource.Instance; + } + + public IntPtr GetNativeWindowHandle() + { + return default; + } + + private sealed class DummyAudioSource : IClydeAudioSource + { + public static DummyAudioSource Instance { get; } = new DummyAudioSource(); + public bool IsPlaying => default; + + public void Dispose() + { + // Nada. + } + + public void StartPlaying() + { + // Nada. + } + + public void SetPosition(Vector2 position) + { + // Nada. + } + + public void SetPitch(float pitch) + { + // Nada. + } + + public void SetGlobal() + { + // Nada. + } + + public void SetVolume(float decibels) + { + // Nada. + } + } + } +} diff --git a/Robust.Client/Graphics/DisplayManagerHeadless.cs b/Robust.Client/Graphics/DisplayManagerHeadless.cs deleted file mode 100644 index 6c8be64e52..0000000000 --- a/Robust.Client/Graphics/DisplayManagerHeadless.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using Robust.Client.Interfaces.Graphics; -using Robust.Shared.Maths; - -namespace Robust.Client.Graphics -{ - internal class DisplayManagerHeadless : DisplayManager - { - // Would it make sense to report a fake resolution like 720p here so code doesn't break? idk. - public override Vector2i ScreenSize => Vector2i.Zero; - - public override void SetWindowTitle(string title) - { - // Nada. - } - - public override void Initialize() - { - // Nada. - } - - #pragma warning disable CS0067 - public override event Action OnWindowResized; - #pragma warning restore CS0067 - } -} diff --git a/Robust.Client/Graphics/Drawing/DrawingHandle.cs b/Robust.Client/Graphics/Drawing/DrawingHandle.cs index 7400c3022f..3406e1f7bb 100644 --- a/Robust.Client/Graphics/Drawing/DrawingHandle.cs +++ b/Robust.Client/Graphics/Drawing/DrawingHandle.cs @@ -21,7 +21,6 @@ namespace Robust.Client.Graphics.Drawing internal DrawingHandle() { - DebugTools.Assert(GameController.Mode == GameController.DisplayMode.Headless); } internal DrawingHandle(IRenderHandle handle, int handleId) diff --git a/Robust.Client/Graphics/Overlays/Overlay.cs b/Robust.Client/Graphics/Overlays/Overlay.cs index 674c0e7b5d..b614e10067 100644 --- a/Robust.Client/Graphics/Overlays/Overlay.cs +++ b/Robust.Client/Graphics/Overlays/Overlay.cs @@ -79,53 +79,26 @@ namespace Robust.Client.Graphics.Overlays throw new InvalidOperationException("Can only allocate new handles while drawing."); } - switch (GameController.Mode) + DrawingHandle handle; + switch (Space) { - case GameController.DisplayMode.Headless: - { - DrawingHandle handle; - switch (Space) - { - case OverlaySpace.ScreenSpaceBelowWorld: - case OverlaySpace.ScreenSpace: - handle = new DrawingHandleScreen(); - break; - case OverlaySpace.WorldSpace: - handle = new DrawingHandleWorld(); - break; - default: - throw new ArgumentOutOfRangeException(); - } - - TempHandles.Add(handle); - return handle; - } - case GameController.DisplayMode.Clyde: - { - DrawingHandle handle; - switch (Space) - { - case OverlaySpace.ScreenSpaceBelowWorld: - case OverlaySpace.ScreenSpace: - handle = _renderHandle.CreateHandleScreen(); - break; - case OverlaySpace.WorldSpace: - handle = _renderHandle.CreateHandleWorld(); - break; - default: - throw new ArgumentOutOfRangeException(); - } - - if (shader != null) - { - handle.UseShader(shader); - } - - return handle; - } + case OverlaySpace.ScreenSpaceBelowWorld: + case OverlaySpace.ScreenSpace: + handle = _renderHandle.CreateHandleScreen(); + break; + case OverlaySpace.WorldSpace: + handle = _renderHandle.CreateHandleWorld(); + break; default: throw new ArgumentOutOfRangeException(); } + + if (shader != null) + { + handle.UseShader(shader); + } + + return handle; } public void Dirty() @@ -137,10 +110,8 @@ namespace Robust.Client.Graphics.Overlays { } - internal void OpenGLRender(IRenderHandle renderHandle) + internal void ClydeRender(IRenderHandle renderHandle) { - DebugTools.Assert(GameController.Mode == GameController.DisplayMode.Clyde); - try { _renderHandle = renderHandle; diff --git a/Robust.Client/Graphics/Shaders/ShaderPrototype.cs b/Robust.Client/Graphics/Shaders/ShaderPrototype.cs index 803078df54..d1961e381d 100644 --- a/Robust.Client/Graphics/Shaders/ShaderPrototype.cs +++ b/Robust.Client/Graphics/Shaders/ShaderPrototype.cs @@ -38,48 +38,26 @@ namespace Robust.Client.Graphics.Shaders /// public Shader Instance() { - switch (GameController.Mode) + if (_canvasKindInstance != null) { - case GameController.DisplayMode.Headless: - return new Shader(); - case GameController.DisplayMode.Clyde: - return _instanceOpenGL(); - default: - throw new ArgumentOutOfRangeException(); + return _canvasKindInstance; } - } - private Shader _instanceOpenGL() - { - switch (Kind) + string source; + if (LightMode == LightModeEnum.Unshaded) { - case ShaderKind.Source: - return new Shader(Source.ClydeHandle); - case ShaderKind.Canvas: - if (_canvasKindInstance != null) - { - return _canvasKindInstance; - } - - string source; - if (LightMode == LightModeEnum.Unshaded) - { - source = SourceUnshaded; - } - else - { - source = SourceShaded; - } - - var parsed = ShaderParser.Parse(source); - var clyde = IoCManager.Resolve(); - var instance = new Shader(clyde.LoadShader(parsed)); - _canvasKindInstance = instance; - return instance; - - default: - throw new ArgumentOutOfRangeException(); + source = SourceUnshaded; } + else + { + source = SourceShaded; + } + + var parsed = ShaderParser.Parse(source); + var clyde = IoCManager.Resolve(); + var instance = new Shader(clyde.LoadShader(parsed)); + _canvasKindInstance = instance; + return instance; } public void LoadFrom(YamlMappingNode mapping) diff --git a/Robust.Client/Graphics/Texture.cs b/Robust.Client/Graphics/Texture.cs index 776cb99f6d..a8c8a6992a 100644 --- a/Robust.Client/Graphics/Texture.cs +++ b/Robust.Client/Graphics/Texture.cs @@ -45,18 +45,8 @@ namespace Robust.Client.Graphics public static Texture LoadFromImage(Image image, string name = null, TextureLoadParameters? loadParameters = null) where T : unmanaged, IPixel { - switch (GameController.Mode) - { - case GameController.DisplayMode.Headless: - return new DummyTexture(image.Width, image.Height); - case GameController.DisplayMode.Clyde: - { - var manager = IoCManager.Resolve(); - return manager.LoadTextureFromImage(image, name, loadParameters); - } - default: - throw new ArgumentOutOfRangeException(); - } + var manager = IoCManager.Resolve(); + return manager.LoadTextureFromImage(image, name, loadParameters); } /// @@ -71,18 +61,8 @@ namespace Robust.Client.Graphics public static Texture LoadFromPNGStream(Stream stream, string name = null, TextureLoadParameters? loadParameters = null) { - switch (GameController.Mode) - { - case GameController.DisplayMode.Headless: - return new DummyTexture(); - case GameController.DisplayMode.Clyde: - { - var manager = IoCManager.Resolve(); - return manager.LoadTextureFromPNGStream(stream, name, loadParameters); - } - default: - throw new ArgumentOutOfRangeException(); - } + var manager = IoCManager.Resolve(); + return manager.LoadTextureFromPNGStream(stream, name, loadParameters); } Texture IDirectionalTextureProvider.Default => this; @@ -103,11 +83,6 @@ namespace Robust.Client.Graphics Width = width; Height = height; } - - public DummyTexture() - { - DebugTools.Assert(GameController.Mode == GameController.DisplayMode.Headless); - } } /// diff --git a/Robust.Client/Input/OpenGLInputManager.cs b/Robust.Client/Input/ClydeInputManager.cs similarity index 82% rename from Robust.Client/Input/OpenGLInputManager.cs rename to Robust.Client/Input/ClydeInputManager.cs index de4276cc1b..1264ea7434 100644 --- a/Robust.Client/Input/OpenGLInputManager.cs +++ b/Robust.Client/Input/ClydeInputManager.cs @@ -4,7 +4,7 @@ using Robust.Shared.Maths; namespace Robust.Client.Input { - internal class OpenGLInputManager : InputManager + internal sealed class ClydeInputManager : InputManager { [Dependency] private readonly IClyde _clyde; diff --git a/Robust.Client/ResourceManagement/ResourceTypes/AudioResource.cs b/Robust.Client/ResourceManagement/ResourceTypes/AudioResource.cs index 2e36ae415d..ca56d3a450 100644 --- a/Robust.Client/ResourceManagement/ResourceTypes/AudioResource.cs +++ b/Robust.Client/ResourceManagement/ResourceTypes/AudioResource.cs @@ -1,5 +1,4 @@ -using System; -using Robust.Client.Audio; +using Robust.Client.Audio; using Robust.Client.Interfaces.ResourceManagement; using Robust.Shared.Utility; using System.IO; @@ -19,19 +18,9 @@ namespace Robust.Client.ResourceManagement throw new FileNotFoundException("Content file does not exist for audio sample."); } - switch (GameController.Mode) + using (var fileStream = cache.ContentFileRead(path)) { - case GameController.DisplayMode.Headless: - AudioStream = new AudioStream(); - break; - case GameController.DisplayMode.Clyde: - using (var fileStream = cache.ContentFileRead(path)) - { - AudioStream = IoCManager.Resolve().LoadAudioOggVorbis(fileStream); - } - break; - default: - throw new ArgumentOutOfRangeException(); + AudioStream = IoCManager.Resolve().LoadAudioOggVorbis(fileStream); } } diff --git a/Robust.Client/ResourceManagement/ResourceTypes/FontResource.cs b/Robust.Client/ResourceManagement/ResourceTypes/FontResource.cs index 9dee32308d..a174cf9fae 100644 --- a/Robust.Client/ResourceManagement/ResourceTypes/FontResource.cs +++ b/Robust.Client/ResourceManagement/ResourceTypes/FontResource.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Robust.Client.Interfaces.ResourceManagement; +using Robust.Client.Interfaces.ResourceManagement; using System.IO; using Robust.Shared.Utility; using Robust.Client.Graphics; @@ -23,16 +18,7 @@ namespace Robust.Client.ResourceManagement throw new FileNotFoundException("Content file does not exist for font"); } - switch (GameController.Mode) - { - case GameController.DisplayMode.Headless: - case GameController.DisplayMode.Clyde: - FontFaceHandle = IoCManager.Resolve().Load(cache.ContentFileRead(path).ToArray()); - break; - default: - throw new ArgumentOutOfRangeException(); - } - + FontFaceHandle = IoCManager.Resolve().Load(cache.ContentFileRead(path).ToArray()); } public VectorFont MakeDefault() diff --git a/Robust.Client/ResourceManagement/ResourceTypes/ShaderSourceResource.cs b/Robust.Client/ResourceManagement/ResourceTypes/ShaderSourceResource.cs index aa4ae1c59d..96fc333eaf 100644 --- a/Robust.Client/ResourceManagement/ResourceTypes/ShaderSourceResource.cs +++ b/Robust.Client/ResourceManagement/ResourceTypes/ShaderSourceResource.cs @@ -27,17 +27,6 @@ namespace Robust.Client.ResourceManagement.ResourceTypes ParsedShader = ShaderParser.Parse(reader); } - switch (GameController.Mode) - { - case GameController.DisplayMode.Headless: - return; - case GameController.DisplayMode.Clyde: - ClydeHandle = IoCManager.Resolve().LoadShader(ParsedShader); - break; - default: - throw new ArgumentOutOfRangeException(); - } - var clyde = IoCManager.Resolve(); // TODO: vertex shaders. ClydeHandle = clyde.LoadShader(ParsedShader, path.ToString()); diff --git a/Robust.Client/ResourceManagement/ResourceTypes/TextureResource.cs b/Robust.Client/ResourceManagement/ResourceTypes/TextureResource.cs index 7f5a2f2527..8b467b0f2f 100644 --- a/Robust.Client/ResourceManagement/ResourceTypes/TextureResource.cs +++ b/Robust.Client/ResourceManagement/ResourceTypes/TextureResource.cs @@ -1,13 +1,10 @@ -using System; -using Robust.Client.Graphics; +using Robust.Client.Graphics; using Robust.Client.Interfaces.ResourceManagement; using Robust.Shared.Log; using Robust.Shared.Utility; using System.IO; -using System.Text; using Robust.Client.Interfaces.Graphics; using Robust.Shared.IoC; -using SixLabors.ImageSharp; using YamlDotNet.RepresentationModel; namespace Robust.Client.ResourceManagement @@ -29,18 +26,7 @@ namespace Robust.Client.ResourceManagement var loadParameters = _tryLoadTextureParameters(cache, path) ?? TextureLoadParameters.Default; - switch (GameController.Mode) - { - case GameController.DisplayMode.Headless: - var image = Image.Load(cache.ContentFileRead(path).ToArray()); - Texture = new DummyTexture(image.Width, image.Height); - break; - case GameController.DisplayMode.Clyde: - _loadOpenGL(cache, path, loadParameters); - break; - default: - throw new ArgumentOutOfRangeException(); - } + _loadOpenGL(cache, path, loadParameters); } private static TextureLoadParameters? _tryLoadTextureParameters(IResourceCache cache, ResourcePath path) @@ -68,8 +54,6 @@ namespace Robust.Client.ResourceManagement private void _loadOpenGL(IResourceCache cache, ResourcePath path, TextureLoadParameters? parameters) { - DebugTools.Assert(GameController.Mode == GameController.DisplayMode.Clyde); - var manager = IoCManager.Resolve(); Texture = manager.LoadTextureFromPNGStream(cache.ContentFileRead(path), path.ToString(), parameters); diff --git a/Robust.Client/Robust.Client.csproj b/Robust.Client/Robust.Client.csproj index b4cf369705..54b7bb5b68 100644 --- a/Robust.Client/Robust.Client.csproj +++ b/Robust.Client/Robust.Client.csproj @@ -148,7 +148,7 @@ - + @@ -163,7 +163,7 @@ - + diff --git a/Robust.Shared.Maths/Vector2i.cs b/Robust.Shared.Maths/Vector2i.cs index c256cdacaf..8ecabc8eaa 100644 --- a/Robust.Shared.Maths/Vector2i.cs +++ b/Robust.Shared.Maths/Vector2i.cs @@ -139,6 +139,12 @@ namespace Robust.Shared.Maths return new Vector2i((int) vector.X, (int) vector.Y); } + public static implicit operator Vector2i((int x, int y) tuple) + { + var (x, y) = tuple; + return new Vector2i(x, y); + } + /// /// Returns a string that represents the current Vector2i. /// diff --git a/Robust.UnitTesting/RobustUnitTest.cs b/Robust.UnitTesting/RobustUnitTest.cs index 230d9726bf..836ae85de0 100644 --- a/Robust.UnitTesting/RobustUnitTest.cs +++ b/Robust.UnitTesting/RobustUnitTest.cs @@ -10,6 +10,7 @@ using Robust.Client.GameObjects; using Robust.Client.GameStates; using Robust.Client.Graphics; using Robust.Client.Graphics.ClientEye; +using Robust.Client.Graphics.Clyde; using Robust.Client.Graphics.Overlays; using Robust.Client.Input; using Robust.Client.Interfaces; @@ -227,7 +228,8 @@ namespace Robust.UnitTesting IoCManager.Register(); IoCManager.Register(); //IoCManager.Register(); - IoCManager.Register(); + IoCManager.Register(); + IoCManager.Register(); //IoCManager.Register(); IoCManager.Register(); IoCManager.Register();