private void ShowDiskSelect() { if (m_diskSelector == null) { m_diskSelector = new DiskSelector(Game.Screen, (m_activeDisk != null) ? m_activeDisk.Path : null, m_activeDiskMod, Game.User.Progress); m_diskSelector.OnSelect += delegate(object o, DiskSelectEventArgs args) { // Reboot computer with new disk m_computer.TurnOff(); SelectDisk(args.Disk, args.Mod); m_computer.TurnOn(); UpdateDisplay(); }; m_diskSelector.OnBrowseWorkshop += delegate(object o, EventArgs args) { Game.Network.OpenWorkshopHub(new string[] { "Arcade Games" }); }; m_diskSelector.OnClose += delegate(object o, EventArgs args) { if (m_diskSelector == o) { Game.Screen.Elements.Remove(m_diskSelector); m_diskSelector.Dispose(); m_diskSelector = null; } }; Game.Screen.Elements.Add(m_diskSelector); } }
protected override void OnShutdown() { base.OnShutdown(); // Steam controller if (Game.ActiveSteamController != null) { Game.ActiveSteamController.ActionSet = SteamControllerActionSet.Menu.GetID(); } // Shutdown the computer m_computer.Dispose(); m_computer = null; // Stop audio if (m_speakerOutput != null) { m_speakerOutput.Stop(); } // Dispose elements m_displayTexture.Dispose(); m_displayBitmap.Dispose(); Game.Screen.Elements.Remove(m_backPrompt); m_backPrompt.Dispose(); Game.Screen.Elements.Remove(m_diskSelectPrompt); m_diskSelectPrompt.Dispose(); Game.Screen.Elements.Remove(m_aPrompt); m_aPrompt.Dispose(); Game.Screen.Elements.Remove(m_bPrompt); m_bPrompt.Dispose(); // Remove disk selector if (m_diskSelector != null) { Game.Screen.Elements.Remove(m_diskSelector); m_diskSelector.Dispose(); m_diskSelector = null; } }
public ArcadeState(Game.Game game) : base(game, "levels/startscreen.level", LevelOptions.Menu) { // Create computer m_computer = new Computer(GetComputerID()); m_computer.Memory.TotalMemory = RAM; m_computer.Host = App.Info.Title + " " + App.Info.Version; m_computer.Output = new LogWriter(LogLevel.User); m_computer.ErrorOutput = new LogWriter(LogLevel.Error); m_computer.SetPowerStatus(PowerStatus.Charged, 1.0); m_devices = new RobotDevices(); m_computer.Ports.Add(m_devices); // Create some textures m_displayBitmap = new Bitmap(m_devices.Display.Width, m_devices.Display.Height); m_displayTexture = new BitmapTexture(m_displayBitmap); UpdateDisplay(); // Create camera m_animatedCamera = new AnimatedCameraController(Level.TimeMachine); // Create prompts { m_zKey = Key.Z.RemapToLocal(); m_xKey = Key.X.RemapToLocal(); m_wKey = Key.W.RemapToLocal(); m_sKey = Key.S.RemapToLocal(); m_aKey = Key.A.RemapToLocal(); m_dKey = Key.D.RemapToLocal(); m_backPrompt = new InputPrompt(UIFonts.Smaller, Game.Language.Translate("menus.back"), TextAlignment.Right); m_backPrompt.MouseButton = MouseButton.Left; m_backPrompt.Key = Key.Escape; m_backPrompt.GamepadButton = GamepadButton.Back; m_backPrompt.SteamControllerButton = SteamControllerButton.ArcadeBack; m_backPrompt.Anchor = Anchor.BottomRight; m_backPrompt.LocalPosition = new Vector2(-16.0f, -16.0f - m_backPrompt.Font.Height); m_backPrompt.OnClick += delegate { GoBack(); }; m_diskSelectPrompt = new InputPrompt(UIFonts.Smaller, Game.Language.Translate("menus.arcade.swap_disk"), TextAlignment.Right); m_diskSelectPrompt.Key = Key.Tab; m_diskSelectPrompt.GamepadButton = GamepadButton.Start; m_diskSelectPrompt.SteamControllerButton = SteamControllerButton.ArcadeSwapDisk; m_diskSelectPrompt.Anchor = Anchor.BottomRight; m_diskSelectPrompt.LocalPosition = new Vector2(-16.0f, -16.0f - m_backPrompt.Font.Height - m_diskSelectPrompt.Height); m_bPrompt = new InputPrompt(UIFonts.Smaller, Game.Language.Translate("menus.arcade.b"), TextAlignment.Left); m_bPrompt.Key = m_xKey; m_bPrompt.GamepadButton = GamepadButton.B; m_bPrompt.SteamControllerButton = SteamControllerButton.ArcadeB; m_bPrompt.Anchor = Anchor.BottomLeft; m_bPrompt.LocalPosition = new Vector2(16.0f, -16.0f - m_bPrompt.Height); m_aPrompt = new InputPrompt(UIFonts.Smaller, Game.Language.Translate("menus.arcade.a"), TextAlignment.Left); m_aPrompt.Key = m_zKey; m_aPrompt.GamepadButton = GamepadButton.A; m_aPrompt.SteamControllerButton = SteamControllerButton.ArcadeA; m_aPrompt.Anchor = Anchor.BottomLeft; m_aPrompt.LocalPosition = new Vector2(16.0f, -16.0f - 2.0f * m_bPrompt.Height); } // Create disk selector m_diskSelector = null; m_activeDisk = null; m_activeDiskMod = null; m_cachedScore = 0; }