IGM_Junction.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. using Microsoft.Xna.Framework;
  2. using System;
  3. namespace OpenVIII
  4. {
  5. public partial class Junction : Menu
  6. {
  7. #region Enums
  8. public enum Mode
  9. {
  10. None,
  11. TopMenu,
  12. TopMenu_Junction,
  13. TopMenu_Off,
  14. TopMenu_Auto,
  15. Abilities,
  16. Abilities_Commands,
  17. Abilities_Abilities,
  18. RemMag,
  19. RemAll,
  20. TopMenu_GF_Group,
  21. Mag_Pool_Stat,
  22. Mag_Pool_EL_A,
  23. Mag_Pool_EL_D,
  24. Mag_Pool_ST_A,
  25. Mag_Pool_ST_D,
  26. Mag_Stat,
  27. Mag_EL_A,
  28. Mag_ST_A,
  29. Mag_EL_D,
  30. Mag_ST_D,
  31. ConfirmChanges
  32. }
  33. public enum SectionName : byte
  34. {
  35. /// <summary>
  36. /// Junction OFF Auto Ability
  37. /// </summary>
  38. TopMenu,
  39. /// <summary>
  40. /// Top Right
  41. /// </summary>
  42. Title,
  43. /// <summary>
  44. /// Portrait Name HP EXP Rank?
  45. /// </summary>
  46. CharacterInfo,
  47. /// <summary>
  48. /// Description Help
  49. /// </summary>
  50. Help,
  51. /// <summary>
  52. /// 4 Commands you can use in battle
  53. /// </summary>
  54. Commands,
  55. /// <summary>
  56. /// Character Stats Magic Junctions
  57. /// </summary>
  58. Mag_Group,
  59. /// <summary>
  60. /// Top menu where you select junction GF or Magic
  61. /// </summary>
  62. TopMenu_Junction,
  63. /// <summary>
  64. /// Top Menu where you select unjunction all or magic
  65. /// </summary>
  66. TopMenu_Off,
  67. /// <summary>
  68. /// Top Menu where you select automaticly sort by ATK DEF or MAG
  69. /// </summary>
  70. TopMenu_Auto,
  71. /// <summary>
  72. /// Junction commands/abilities
  73. /// </summary>
  74. TopMenu_Abilities,
  75. /// <summary>
  76. /// Remove all Magic?
  77. /// </summary>
  78. RemMag,
  79. /// <summary>
  80. /// Remove all Junctions?
  81. /// </summary>
  82. RemAll,
  83. /// <summary>
  84. /// GF junction screen
  85. /// </summary>
  86. TopMenu_GF_Group,
  87. /// <summary>
  88. /// Confirm changes screen
  89. /// </summary>
  90. ConfirmChanges,
  91. }
  92. #endregion Enums
  93. #region Methods
  94. public static Junction Create() => Create<Junction>();
  95. public void ChangeHelp(FF8String str) => ((IGMDataItem.HelpBox)Data[SectionName.Help]).Data = str;
  96. //public static Dictionary<Items, FF8String> Descriptions { get; private set; }
  97. //public static Dictionary<Items, FF8String> Misc { get; private set; }
  98. //public static Dictionary<Items, FF8String> Titles { get; private set; }
  99. public override bool Inputs()
  100. {
  101. if (GetMode().Equals(Mode.None)) SetMode(Mode.TopMenu);
  102. var ret = false;
  103. if (Enabled)
  104. {
  105. switch (GetMode())
  106. {
  107. case Mode.TopMenu:
  108. ret = ((TopMenu)Data[SectionName.TopMenu]).Inputs();
  109. break;
  110. case Mode.TopMenu_Junction:
  111. ret = ((IGMData_TopMenu_Junction)Data[SectionName.TopMenu_Junction]).Inputs();
  112. break;
  113. case Mode.TopMenu_Off:
  114. ret = ((IGMData.Group.TopMenu)Data[SectionName.TopMenu_Off]).Inputs();
  115. break;
  116. case Mode.TopMenu_Auto:
  117. ret = ((IGMData.Group.TopMenu)Data[SectionName.TopMenu_Auto]).Inputs();
  118. break;
  119. case Mode.Abilities:
  120. ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).Inputs();
  121. break;
  122. case Mode.Abilities_Commands:
  123. ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).ITEM[2, 0].Inputs();
  124. break;
  125. case Mode.Abilities_Abilities:
  126. ret = ((IGMData_Abilities_Group)Data[SectionName.TopMenu_Abilities]).ITEM[3, 0].Inputs();
  127. break;
  128. case Mode.RemMag:
  129. ret = ((IGMData.Dialog.Confirm)Data[SectionName.RemMag]).Inputs();
  130. break;
  131. case Mode.RemAll:
  132. ret = ((IGMData.Dialog.Confirm)Data[SectionName.RemAll]).Inputs();
  133. break;
  134. case Mode.ConfirmChanges:
  135. ret = ((IGMData.Dialog.Confirm)Data[SectionName.ConfirmChanges]).Inputs();
  136. break;
  137. case Mode.TopMenu_GF_Group:
  138. ret = ((IGMData_GF_Group)Data[SectionName.TopMenu_GF_Group]).ITEM[1, 0].Inputs();
  139. break;
  140. case Mode.Mag_Pool_Stat:
  141. case Mode.Mag_Pool_EL_A:
  142. case Mode.Mag_Pool_EL_D:
  143. case Mode.Mag_Pool_ST_A:
  144. case Mode.Mag_Pool_ST_D:
  145. case Mode.Mag_Stat:
  146. case Mode.Mag_EL_A:
  147. case Mode.Mag_EL_D:
  148. case Mode.Mag_ST_A:
  149. case Mode.Mag_ST_D:
  150. ret = ((IGMData_Mag_Group)Data[SectionName.Mag_Group]).Inputs();
  151. break;
  152. default:
  153. break;
  154. }
  155. }
  156. return ret;
  157. }
  158. protected override void Init()
  159. {
  160. SetMode((Mode)0);
  161. Size = new Vector2 { X = 840, Y = 630 };
  162. var tmp = new Menu_Base[9];
  163. var actions = new Action[]
  164. {
  165. () =>tmp[0] = IgmDataMagStatSlots.Create(),
  166. () =>tmp[1] = IGMData_Mag_PageTitle.Create(),
  167. () =>tmp[3] = IGMData_Mag_EL_A_D_Slots.Create(),
  168. () =>tmp[2] = IGMData.Pool.Magic.Create(),
  169. () =>tmp[4] = IGMData_Mag_EL_A_Values.Create(),
  170. () =>tmp[5] = IGMData_Mag_EL_D_Values.Create(),
  171. () =>tmp[6] = IGMData_Mag_ST_A_D_Slots.Create(),
  172. () =>tmp[7] = IGMData_Mag_ST_A_Values.Create(),
  173. () =>tmp[8] = IGMData_Mag_ST_D_Values.Create(),
  174. () => Data.TryAdd(SectionName.CharacterInfo, IGMData_CharacterInfo.Create()),
  175. () => Data.TryAdd(SectionName.Commands, IGMData.Commands.Create(new Rectangle(615, 150, 210, 192))),
  176. () => Data.TryAdd(SectionName.Help, new IGMDataItem.HelpBox { Data = Strings.Description.Junction, Pos = new Rectangle(15, 69, 810, 78), Title = Icons.ID.HELP }),
  177. () => Data.TryAdd(SectionName.TopMenu, TopMenu.Create()),
  178. () => Data.TryAdd(SectionName.Title, new IGMDataItem.Box { Data = Strings.Name.Junction, Pos = new Rectangle(615, 0, 225, 66) }),
  179. () => Data.TryAdd(SectionName.TopMenu_Junction, IGMData_TopMenu_Junction.Create()),
  180. () => Data.TryAdd(SectionName.TopMenu_Off, IGMData.Group.TopMenu.Create(
  181. new IGMDataItem.Box { Data = Strings.Name.Off, Pos = new Rectangle(0, 12, 169, 54), Options = Box_Options.Center | Box_Options.Middle },
  182. IGMData_TopMenu_Off.Create()
  183. )),
  184. () => Data.TryAdd(SectionName.TopMenu_Auto, IGMData.Group.TopMenu.Create(
  185. new IGMDataItem.Box { Data = Strings.Name.Auto, Pos = new Rectangle(0, 12, 169, 54), Options = Box_Options.Center | Box_Options.Middle },
  186. IGMData_TopMenu_Auto.Create())),
  187. () => Data.TryAdd(SectionName.TopMenu_Abilities, IGMData_Abilities_Group.Create(
  188. IGMData.Slots.Command.Create(),
  189. IGMData.Slots.Abilities.Create(),
  190. IGMData_Abilities_CommandPool.Create(),
  191. IGMData_Abilities_AbilityPool.Create())),
  192. () => Data.TryAdd(SectionName.TopMenu_GF_Group, IGMData_GF_Group.Create(
  193. IGMData_GF_Junctioned.Create(),
  194. IGMData.Pool.GF.Create(),
  195. new IGMDataItem.Box { Pos = new Rectangle(440, 345, 385, 66) }
  196. )),
  197. () => 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))),
  198. () => 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))),
  199. () => 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))),
  200. };
  201. Memory.ProcessActions(actions);
  202. Data.TryAdd(SectionName.Mag_Group, IGMData_Mag_Group.Create(tmp));
  203. base.Init();
  204. }
  205. #endregion Methods
  206. }
  207. }