using Microsoft.Xna.Framework; using System; namespace OpenVIII { public partial class Junction : Menu { #region Enums public enum Mode { None, TopMenu, TopMenu_Junction, TopMenu_Off, TopMenu_Auto, Abilities, Abilities_Commands, Abilities_Abilities, RemMag, RemAll, TopMenu_GF_Group, Mag_Pool_Stat, Mag_Pool_EL_A, Mag_Pool_EL_D, Mag_Pool_ST_A, Mag_Pool_ST_D, Mag_Stat, Mag_EL_A, Mag_ST_A, Mag_EL_D, Mag_ST_D, ConfirmChanges } public enum SectionName : byte { /// /// Junction OFF Auto Ability /// TopMenu, /// /// Top Right /// Title, /// /// Portrait Name HP EXP Rank? /// CharacterInfo, /// /// Description Help /// Help, /// /// 4 Commands you can use in battle /// Commands, /// /// Character Stats Magic Junctions /// Mag_Group, /// /// Top menu where you select junction GF or Magic /// TopMenu_Junction, /// /// Top Menu where you select unjunction all or magic /// TopMenu_Off, /// /// Top Menu where you select automaticly sort by ATK DEF or MAG /// TopMenu_Auto, /// /// Junction commands/abilities /// TopMenu_Abilities, /// /// Remove all Magic? /// RemMag, /// /// Remove all Junctions? /// RemAll, /// /// GF junction screen /// TopMenu_GF_Group, /// /// Confirm changes screen /// ConfirmChanges, } #endregion Enums #region Methods public static Junction Create() => Create(); public void ChangeHelp(FF8String str) => ((IGMDataItem.HelpBox)Data[SectionName.Help]).Data = str; //public static Dictionary Descriptions { get; private set; } //public static Dictionary Misc { get; private set; } //public static Dictionary Titles { get; private set; } public override bool Inputs() { if (GetMode().Equals(Mode.None)) SetMode(Mode.TopMenu); var ret = false; if (Enabled) { switch (GetMode()) { case Mode.TopMenu: ret = ((TopMenu)Data[SectionName.TopMenu]).Inputs(); break; case Mode.TopMenu_Junction: ret = ((IGMData_TopMenu_Junction)Data[SectionName.TopMenu_Junction]).Inputs(); break; case Mode.TopMenu_Off: ret = ((IGMData.Group.TopMenu)Data[SectionName.TopMenu_Off]).Inputs(); break; case Mode.TopMenu_Auto: ret = ((IGMData.Group.TopMenu)Data[SectionName.TopMenu_Auto]).Inputs(); break; case Mode.Abilities: ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).Inputs(); break; case Mode.Abilities_Commands: ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).ITEM[2, 0].Inputs(); break; case Mode.Abilities_Abilities: ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).ITEM[3, 0].Inputs(); break; case Mode.RemMag: ret = ((IGMData.Dialog.Confirm)Data[SectionName.RemMag]).Inputs(); break; case Mode.RemAll: ret = ((IGMData.Dialog.Confirm)Data[SectionName.RemAll]).Inputs(); break; case Mode.ConfirmChanges: ret = ((IGMData.Dialog.Confirm)Data[SectionName.ConfirmChanges]).Inputs(); break; case Mode.TopMenu_GF_Group: ret = ((IGMData_GF_Group)Data[SectionName.TopMenu_GF_Group]).ITEM[1, 0].Inputs(); break; case Mode.Mag_Pool_Stat: case Mode.Mag_Pool_EL_A: case Mode.Mag_Pool_EL_D: case Mode.Mag_Pool_ST_A: case Mode.Mag_Pool_ST_D: case Mode.Mag_Stat: case Mode.Mag_EL_A: case Mode.Mag_EL_D: case Mode.Mag_ST_A: case Mode.Mag_ST_D: ret = ((IGMData_Mag_Group)Data[SectionName.Mag_Group]).Inputs(); break; default: break; } } return ret; } protected override void Init() { SetMode((Mode)0); Size = new Vector2 { X = 840, Y = 630 }; var tmp = new Menu_Base[9]; var actions = new Action[] { () =>tmp[0] = IgmDataMagStatSlots.Create(), () =>tmp[1] = IGMData_Mag_PageTitle.Create(), () =>tmp[3] = IGMData_Mag_EL_A_D_Slots.Create(), () =>tmp[2] = IGMData.Pool.Magic.Create(), () =>tmp[4] = IGMData_Mag_EL_A_Values.Create(), () =>tmp[5] = IGMData_Mag_EL_D_Values.Create(), () =>tmp[6] = IGMData_Mag_ST_A_D_Slots.Create(), () =>tmp[7] = IGMData_Mag_ST_A_Values.Create(), () =>tmp[8] = IGMData_Mag_ST_D_Values.Create(), () => Data.TryAdd(SectionName.CharacterInfo, IGMData_CharacterInfo.Create()), () => Data.TryAdd(SectionName.Commands, IGMData.Commands.Create(new Rectangle(615, 150, 210, 192))), () => Data.TryAdd(SectionName.Help, new IGMDataItem.HelpBox { Data = Strings.Description.Junction, Pos = new Rectangle(15, 69, 810, 78), Title = Icons.ID.HELP }), () => Data.TryAdd(SectionName.TopMenu, TopMenu.Create()), () => Data.TryAdd(SectionName.Title, new IGMDataItem.Box { Data = Strings.Name.Junction, Pos = new Rectangle(615, 0, 225, 66) }), () => Data.TryAdd(SectionName.TopMenu_Junction, IGMData_TopMenu_Junction.Create()), () => Data.TryAdd(SectionName.TopMenu_Off, IGMData.Group.TopMenu.Create( new IGMDataItem.Box { Data = Strings.Name.Off, Pos = new Rectangle(0, 12, 169, 54), Options = Box_Options.Center | Box_Options.Middle }, IGMData_TopMenu_Off.Create() )), () => Data.TryAdd(SectionName.TopMenu_Auto, IGMData.Group.TopMenu.Create( new IGMDataItem.Box { Data = Strings.Name.Auto, Pos = new Rectangle(0, 12, 169, 54), Options = Box_Options.Center | Box_Options.Middle }, IGMData_TopMenu_Auto.Create())), () => Data.TryAdd(SectionName.TopMenu_Abilities, IGMData_Abilities_Group.Create( IGMData.Slots.Command.Create(), IGMData.Slots.Abilities.Create(), IGMData_Abilities_CommandPool.Create(), IGMData_Abilities_AbilityPool.Create())), () => Data.TryAdd(SectionName.TopMenu_GF_Group, IGMData_GF_Group.Create( IGMData_GF_Junctioned.Create(), IGMData.Pool.GF.Create(), new IGMDataItem.Box { Pos = new Rectangle(440, 345, 385, 66) } )), () => Data.TryAdd(SectionName.RemMag, IGMData_ConfirmRemMag.Create(data: Memory.Strings.Read(Strings.FileID.MenuGroup, 2, 280), title: Icons.ID.NOTICE, opt1: Strings.Name.Yes, opt2: Strings.Name.No, pos: new Rectangle(180, 174, 477, 216))), () => Data.TryAdd(SectionName.RemAll, IGMData_ConfirmRemAll.Create(data: Memory.Strings.Read(Strings.FileID.MenuGroup, 2, 279), title: Icons.ID.NOTICE, opt1: Strings.Name.Yes, opt2: Strings.Name.No, pos: new Rectangle(170, 174, 583, 216))), () => Data.TryAdd(SectionName.ConfirmChanges, IGMData_ConfirmChanges.Create(data: Memory.Strings.Read(Strings.FileID.MenuGroup, 0, 73), title: Icons.ID.NOTICE, opt1: Strings.Name.Yes, opt2: Memory.Strings.Read(Strings.FileID.MenuGroup, 2, 268), pos: new Rectangle(280, 174, 367, 216))), }; Memory.ProcessActions(actions); Data.TryAdd(SectionName.Mag_Group, IGMData_Mag_Group.Create(tmp)); base.Init(); } #endregion Methods } }