public void Load(Game game) { this._game = game; while (_engine == null) { try { _engine = new AudioEngine("Content\\Assets\\Audio\\Audio.XGS"); _waveBank = new WaveBank(_engine, "Content\\Assets\\Audio\\Wave Bank.XWB"); _soundBank = new SoundBank(_engine, "Content\\Assets\\Audio\\Sound Bank.XSB"); } catch (InvalidOperationException e) { DialogResult result = MessageBox.Show("Couldn't find a sound device.", "Error loading audio engine", MessageBoxButtons.AbortRetryIgnore); if (result == DialogResult.Abort) { ErrorReport.GenerateReport("Couldn't find an active sound device.\n" + e.ToString(), null); } else if (result == DialogResult.Retry) { Process.GetCurrentProcess().Kill(); return; } else if (result == DialogResult.Ignore) { return; } } } }
private static void WriteErrorReport(object sender, UnhandledExceptionEventArgs e) { AudioManager.Instance.StopAllSounds(AudioStopOptions.Immediate); string value = e.ExceptionObject.ToString(); ErrorReport.GenerateReport(value, e); }
private void LoadLevel() { int levelID = GameSettings.Instance.CurrentLevel; if (this._level != null) { this._level.Content.Unload(); } this._level = new Level(); this._world = new World(Vector2.Zero); //Camera.Instance.SetUpIs(UpIs.Up); EventManager.Instance.Load(this); SpriteManager.Instance.Clear(); HUD.Instance.RefreshHUD(); AudioManager.Instance.StopAllSounds(AudioStopOptions.AsAuthored); this.PlayRandomAmbience(); try { using (XmlReader reader = XmlReader.Create(Defines.Level(levelID))) { this._level = IntermediateSerializer.Deserialize <Level>(reader, null); } } catch (FileNotFoundException e) { MessageBox.Show("Something went wrong when trying to load level: '" + levelID + "'\nThe level wasn't found."); ErrorReport.GenerateReport("The level " + levelID + " could not be found.\n" + e.ToString(), null); ScreenManager.Game.Exit(); } try { this._level.Load(this); } catch (ContentLoadException e) { string error = e.InnerException.ToString(); MessageBox.Show("Something went wrong loading level " + levelID + ".\n" + error); ErrorReport.GenerateReport(error, null); } // Now the level has been set up, if we have development // mode on, turn on the display. if (GameSettings.Instance.DevelopmentMode) { DevDisplay.Load(this.ScreenManager, World); } }
/// <summary> /// Handles the actual event /// </summary> /// <param name="objEvent">The event to fire</param> private void FireEvent(Event objEvent) { switch (objEvent.EventType) { case EventType.AUDIO_PAUSE_SONGS: { AudioManager.Instance.PauseSounds(); break; } case EventType.AUDIO_RESUME_SONGS: { AudioManager.Instance.ResumeSounds(); break; } case EventType.AUDIO_STOP_SOUNDS: { AudioManager.Instance.StopAllCues(AudioStopOptions.AsAuthored); break; } #region ChangeLevel case EventType.ENGINE_CHANGE_LEVEL: { try { this.gameScreen.CurrentLevelID = Convert.ToInt32(objEvent.Argument); } catch { ErrorReport.GenerateReport("Tried loading a level with an invalid target level definition in\nlevel " + this.gameScreen.CurrentLevelID, null); } } break; #endregion #region TriggerDeath case EventType.TRIGGER_DEATH: { Player.Instance.Kill(); } break; #endregion #region TriggerStop case EventType.TRIGGER_STOP: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Stop(); } break; } #endregion #region TriggerStart case EventType.TRIGGER_START: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Start(); } break; } #endregion #region TriggerToggle case EventType.TRIGGER_TOGGLE: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Toggle(); } break; } #endregion #region TriggerEnable case EventType.TRIGGER_ENABLE: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Enable(); } break; } #endregion #region TriggerDisable case EventType.TRIGGER_DISABLE: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Disable(); } break; } #endregion #region TriggerChangeSpeed case EventType.TRIGGER_CHANGE_SPEED: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Change(objEvent.Argument); } } break; #endregion #region TriggerChangeSpeed case EventType.TRIGGER_CHANGE: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.Change(objEvent.Argument); } } break; #endregion #region TriggerRemove case EventType.TRIGGER_REMOVE: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { this.gameScreen.RemoveObject(output); } break; } #endregion #region TriggerToggleShadow case EventType.TRIGGER_TOGGLE_SHADOW: { NodeObject output; if (this.objects.TryGetValue(objEvent.TargetName, out output)) { output.ToggleShadows(); } } break; #endregion #region WorldRotateCCW90 case EventType.WORLD_ROTATE_CCW90: { Camera.Instance.ForceRotateLeft(); } break; #endregion #region WorldRotateCW90 case EventType.WORLD_ROTATE_CW90: { Camera.Instance.ForceRotateRight(); } break; #endregion #region WorldRotate180 case EventType.WORLD_ROTATE_180: { Camera.Instance.ForceRotateHalf(); } break; #endregion #region WorldRotateEnable case EventType.WORLD_ROTATE_ENABLE: { Camera.Instance.ChangeLevelRotateAbility(true); } break; #endregion #region WorldRotateToggle case EventType.WORLD_ROTATE_TOGGLE: { Camera.Instance.ChangeLevelRotateAbility(!Camera.Instance.LevelRotates); } break; #endregion #region WorldRotateDisable case EventType.WORLD_ROTATE_DISABLE: { Camera.Instance.ChangeLevelRotateAbility(false); } break; #endregion #region Play Song case EventType.AUDIO_PLAY_SONG: { string songName = objEvent.TargetName; AudioManager.Instance.LoadSong(songName, songName + "1"); break; } #endregion case EventType.UNLOCK_ITEM_STEAMBOOTS: { GameSettings.Instance.DoubleJumpEnabled = true; break; } case EventType.ENGINE_ROLL_CREDITS: { CreditRollScreen.Load(gameScreen.ScreenManager, gameScreen.ControllingPlayer); break; } case EventType.ENGINE_FORCE_MAIN_MENU: { LoadingScreen.Load(gameScreen.ScreenManager, false, null, new BackgroundScreen(), new MainMenuScreen()); break; } case EventType.ENGINE_HUD_MESSAGE: { int num = 0; if (objEvent.Argument != null) { num = (int)objEvent.Argument; } HUD.Instance.CreateTemporaryPopup(objEvent.TargetName, num); break; } default: break; } }