public SfmlDoom(CommandLineArgs args) { config = SfmlConfigUtilities.GetConfig(); try { config.video_screenwidth = Math.Clamp(config.video_screenwidth, 320, 3200); config.video_screenheight = Math.Clamp(config.video_screenheight, 200, 2000); var videoMode = new VideoMode((uint)config.video_screenwidth, (uint)config.video_screenheight); var style = Styles.Close | Styles.Titlebar; if (config.video_fullscreen) { style = Styles.Fullscreen; } window = new RenderWindow(videoMode, ApplicationInfo.Title, style); window.Clear(new Color(64, 64, 64)); window.Display(); content = new GameContent(ConfigUtilities.GetWadPaths(args)); video = new SfmlVideo(config, content, window); if (!args.nosound.Present && !args.nosfx.Present) { sound = new SfmlSound(config, content.Wad); } if (!args.nosound.Present && !args.nomusic.Present) { music = SfmlConfigUtilities.GetMusicInstance(config, content.Wad); } userInput = new SfmlUserInput(config, window, !args.nomouse.Present); window.Closed += (sender, e) => window.Close(); window.KeyPressed += KeyPressed; window.KeyReleased += KeyReleased; if (!args.timedemo.Present) { window.SetFramerateLimit(35); } doom = new Doom(args, config, content, video, sound, music, userInput); } catch (Exception e) { Dispose(); ExceptionDispatchInfo.Throw(e); } }
public void Dispose() { if (userInput != null) { userInput.Dispose(); userInput = null; } if (music != null) { music.Dispose(); music = null; } if (sound != null) { sound.Dispose(); sound = null; } if (video != null) { video.Dispose(); video = null; } if (content != null) { content.Dispose(); content = null; } if (window != null) { window.Dispose(); window = null; } }