public void AddEXP(int EXPToAdd)
 {
     this.EXPToAdd = EXPToAdd;
     state = PlayerCharacterStatusBoxState.AddingEXP;
 }
        public override void Update(GameTime gameTime)
        {
            controls.Update(gameTime);
            debugControls.Update(gameTime);

            switch (fadeState)
            {
                case FadeState.FadingIn:
                    if (alpha < 1.0f)
                    {
                        alpha += 0.1f;
                    }
                    else
                    {
                        alpha = 1.0f;
                        fadeState = FadeState.IdleOpaque;
                    }
                    break;

                case FadeState.FadingOut:
                    if (alpha > 0.0f)
                    {
                        alpha -= 0.1f;
                    }
                    else
                    {
                        alpha = 0.0f;
                        fadeState = FadeState.IdleFaded;
                    }
                    break;
            }

            switch (mode)
            {
                case PlayerCharacterStatusBoxMode.EndOfBattle:

                    switch (state)
                    {
                        case PlayerCharacterStatusBoxState.AddingEXP:
                            if (EXPToAdd > 0)
                            {
                                if (!(linkedCharacter.Level == GlobalGameInfo.LevelLimit))
                                {

                                    addEXPTimer += GameClass.Elapsed;

                                    if (addEXPTimer > 0.1f)
                                    {
                                        addEXPTimer = 0.0f;
                                        GameClass.SoundManager.PlaySoundEffect("Audio/expAddSound");
                                        EXPToAdd -= 1;
                                        linkedCharacter.ExpToNext -= 1;
                                        if (linkedCharacter.ExpToNext == 0)
                                        {
                                            int previousLevel = linkedCharacter.Level;
                                            bool playTechniqueLevelUpSound = false;
                                            linkedCharacter.LevelUp();
                                            foreach (BattleTechniqueLevelData techniqueLevelData in linkedCharacter.TechniqueLevelData)
                                            {
                                                if (previousLevel < techniqueLevelData.levelLearnt && !(linkedCharacter.Level < techniqueLevelData.levelLearnt))
                                                {
                                                    newTechniqueLearned = true;
                                                    playTechniqueLevelUpSound = true;
                                                }
                                            }

                                            if (playTechniqueLevelUpSound == true)
                                            {
                                                GameClass.SoundManager.PlaySoundEffect("Audio/newTechniqueSound");
                                            }
                                            else
                                            {
                                                GameClass.SoundManager.PlaySoundEffect("Audio/levelUpSound");
                                            }
                                            levelUpOccurred = true;
                                        }
                                    }
                                }
                                else
                                {
                                    EXPToAdd = 0;
                                    linkedCharacter.ExpToNext = 0;
                                    state = PlayerCharacterStatusBoxState.AwaitingInput;
                                }
                            }
                            else
                            {
                                addEXPTimer = 0.0f;
                                EXPToAdd = 0;
                                state = PlayerCharacterStatusBoxState.AwaitingInput;
                            }

                            break;
                    }
                    break;
                case PlayerCharacterStatusBoxMode.MapStatus:
                    if (spendPointsMenu != null && spendPointsInfoBar != null)
                    {
                        spendPointsMenu.Update(gameTime);
                        spendPointsInfoBar.Update(gameTime);

                        switch (spendPointsMenu.MenuState)
                        {
                            case MenuState.IdleFaded:
                                spendPointsInfoBar.InfoText = spendPointsMenu.GetSelectionDescription();
                                break;

                            case MenuState.IdleAwaitingInput:
                                spendPointsInfoBar.InfoText = spendPointsMenu.GetSelectionDescription();
                                break;

                            case MenuState.IdleValueSelected:
                                if (linkedCharacter.PointsToSpend > 0)
                                {
                                    switch (spendPointsMenu.GetSelection())
                                    {
                                        case "AddPointsHP":
                                            linkedCharacter.HP += 2;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsMP":
                                            linkedCharacter.MP += 2;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsATK":
                                            linkedCharacter.ATK += 1;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsDEF":
                                            linkedCharacter.DEF += 1;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsMAG_ATK":
                                            linkedCharacter.MAG_ATK += 1;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsMAG_DEF":
                                            linkedCharacter.MAG_DEF += 1;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;

                                        case "AddPointsSPD":
                                            linkedCharacter.SPD += 1;
                                            linkedCharacter.PointsToSpend -= 1;
                                            break;
                                    }
                                }
                                spendPointsMenu.ListenForNewSelection();

                                break;
                        }
                    }

                    break;
            }

            base.Update(gameTime);
        }