Esempio n. 1
0
        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;
                    }
                }
            }
        }
Esempio n. 2
0
        private static void WriteErrorReport(object sender, UnhandledExceptionEventArgs e)
        {
            AudioManager.Instance.StopAllSounds(AudioStopOptions.Immediate);

            string value = e.ExceptionObject.ToString();

            ErrorReport.GenerateReport(value, e);
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        /// <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;
            }
        }