internal PostBattleState(Seven seven, int exp, int ap, int gil, List<IInventoryItem> items)
            : base(seven)
        {
            Exp = exp;
            AP = ap;
            Gil = gil;
            Items = new List<Inventory.Record>();

            LevelUp = new LevelUp[Party.PARTY_SIZE];
            MateriaLevelUp = new MateriaLevelUp[Party.PARTY_SIZE];

            Exp_multiplier = new int[] { 100, 100, 100 };
            Gil_multiplier = 100;

            for (int i = 0; i < 3; i++)
            {
                if (Party[i] != null)
                {
                    foreach (MateriaOrb m in Party[i].Materia)
                    {
                        if (m != null)
                        {
                            if (m.Name == "gilplus")
                            {
                                switch (m.Level)
                                {
                                    case 0:
                                        Gil_multiplier += 50;
                                        break;
                                    case 1:
                                        Gil_multiplier += 100;
                                        break;
                                    case 2:
                                        Gil_multiplier += 200;
                                        break;
                                }
                            }
                            if (m.Name == "expplus")
                            {
                                switch (m.Level)
                                {
                                    case 0:
                                        Exp_multiplier[i] += 50;
                                        break;
                                    case 1:
                                        Exp_multiplier[i] += 75;
                                        break;
                                    case 2:
                                        Exp_multiplier[i] += 100;
                                        break;
                                }
                            }
                        }
                    }
                }
            }

            CollectItems(items);

            _state = State.BeforeGainExp;
        }
        protected override void InternalInit()
        {
            ScreenState state = new ScreenState
            {
                Width = Seven.Configuration.WindowWidth,
                Height = Seven.Configuration.WindowHeight
            };

            Screens.Victory.VictoryLabel victoryLabel = new Screens.Victory.VictoryLabel(state);

            List<GameMenu> victoryMenus = new List<GameMenu>();
            victoryMenus.Add(victoryLabel);
            victoryMenus.Add(new Screens.Victory.VictoryEXP(this, state));
            victoryMenus.Add(new Screens.Victory.VictoryAP(this, state));
            victoryMenus.Add(new Screens.Victory.Top(this, state));
            victoryMenus.Add(new Screens.Victory.Middle(this, state));
            victoryMenus.Add(new Screens.Victory.Bottom(this, state));

            Mastered = new Mastered(state);
            Mastered.Visible = false;
            victoryMenus.Add(Mastered);

            for (int i = 0; i < LevelUp.Length; i++)
            {
                LevelUp[i] = new LevelUp(state, i);
                LevelUp[i].Visible = false;
                victoryMenus.Add(LevelUp[i]);
            }

            for (int i = 0; i < MateriaLevelUp.Length; i++)
            {
                MateriaLevelUp[i] = new MateriaLevelUp(state, i);
                MateriaLevelUp[i].Visible = false;
                victoryMenus.Add(MateriaLevelUp[i]);
            }

            VictoryScreen = new MenuScreen(victoryMenus, victoryLabel);

            Screens.Hoard.Label hoardLabel = new Screens.Hoard.Label(state);
            HoardItemLeft = new Screens.Hoard.ItemLeft(this, state, Gil);

            List<GameMenu> hoardMenus = new List<GameMenu>();
            hoardMenus.Add(hoardLabel);
            hoardMenus.Add(new Screens.Hoard.GilLeft(this, state));
            hoardMenus.Add(new Screens.Hoard.HoardGilRight(this, state));
            hoardMenus.Add(HoardItemLeft);
            hoardMenus.Add(new Screens.Hoard.ItemRight(this, state));

            HoardScreen = new MenuScreen(hoardMenus, hoardLabel);

            _screen = VictoryScreen;
        }