2
0

IGM_Junction.cs 9.6 KB

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