IGMData_CharacterInfo.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Microsoft.Xna.Framework;
  2. namespace OpenVIII
  3. {
  4. public partial class Junction
  5. {
  6. #region Classes
  7. private class IGMData_CharacterInfo : IGMData.Base
  8. {
  9. #region Methods
  10. public static IGMData_CharacterInfo Create() => Create<IGMData_CharacterInfo>(1, 15, new IGMDataItem.Empty { Pos = new Rectangle(20, 153, 395, 255) });
  11. /// <summary>
  12. /// Things that may of changed before screen loads or junction is changed.
  13. /// </summary>
  14. public override void Refresh()
  15. {
  16. if (Memory.State?.Characters != null && Damageable != null && Damageable.GetCharacterData(out var c))
  17. {
  18. base.Refresh();
  19. ((IGMDataItem.Face)ITEM[0, 0]).Data = c.ID.ToFacesID();
  20. ((IGMDataItem.Text)ITEM[0, 2]).Data = Damageable.Name;
  21. ((IGMDataItem.Integer)ITEM[0, 4]).Data = Damageable.Level;
  22. if (Memory.State.Party != null && Memory.State.Party.Contains(c.ID))
  23. ITEM[0, 5].Show();
  24. else
  25. ITEM[0, 5].Hide();
  26. ((IGMDataItem.Integer)ITEM[0, 7]).Data = Damageable.CurrentHP();
  27. ((IGMDataItem.Integer)ITEM[0, 9]).Data = Damageable.MaxHP();
  28. ((IGMDataItem.Integer)ITEM[0, 11]).Data = (int)c.Experience;
  29. ((IGMDataItem.Integer)ITEM[0, 13]).Data = c.ExperienceToNextLevel;
  30. }
  31. }
  32. /// <summary>
  33. /// Things fixed at startup.
  34. /// </summary>
  35. protected override void Init()
  36. {
  37. base.Init();
  38. //Static items
  39. ITEM[0, 1] = new IGMDataItem.Icon { Data = Icons.ID.MenuBorder, Pos = new Rectangle(X + 10, Y - 2, 100, 148), Scale = new Vector2(1f) };
  40. ITEM[0, 3] = new IGMDataItem.Text { Data = Strings.Name.LV, Pos = new Rectangle(X + 117, Y + 54, 0, 0) };
  41. ITEM[0, 5] = new IGMDataItem.Icon { Data = Icons.ID.InParty, Pos = new Rectangle(X + 278, Y + 48, 0, 0), Palette = 6 };
  42. ITEM[0, 6] = new IGMDataItem.Text { Data = Strings.Name.HP, Pos = new Rectangle(X + 117, Y + 108, 0, 0) };
  43. ITEM[0, 8] = new IGMDataItem.Text { Data = Strings.Name.ForwardSlash, Pos = new Rectangle(X + 272, Y + 108, 0, 0) };
  44. ITEM[0, 10] = new IGMDataItem.Text { Data = Strings.Name.CurrentEXP + "\n" + Strings.Name.NextLEVEL, Pos = new Rectangle(X, Y + 192, 0, 0) };
  45. ITEM[0, 12] = new IGMDataItem.Icon { Data = Icons.ID.P, Pos = new Rectangle(X + 372, Y + 198, 0, 0), Palette = 2 };
  46. ITEM[0, 14] = new IGMDataItem.Icon { Data = Icons.ID.P, Pos = new Rectangle(X + 372, Y + 231, 0, 0), Palette = 2 };
  47. //Dynamic items
  48. ITEM[0, 0] = new IGMDataItem.Face { Pos = new Rectangle(X + 12, Y, 96, 144) };
  49. ITEM[0, 2] = new IGMDataItem.Text { Pos = new Rectangle(X + 117, Y + 0, 0, 0) };
  50. ITEM[0, 4] = new IGMDataItem.Integer { Pos = new Rectangle(X + 117 + 35, Y + 54, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6 };
  51. ITEM[0, 7] = new IGMDataItem.Integer { Pos = new Rectangle(X + 152, Y + 108, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 6 };
  52. ITEM[0, 9] = new IGMDataItem.Integer { Pos = new Rectangle(X + 292, Y + 108, 0, 0), Palette = 13, NumType = Icons.NumType.SysFntBig, Padding = 1, Spaces = 5 };
  53. ITEM[0, 11] = new IGMDataItem.Integer { Pos = new Rectangle(X + 192, Y + 198, 0, 0), Palette = 13, NumType = Icons.NumType.Num8X8B, Padding = 1, Spaces = 9 };
  54. ITEM[0, 13] = new IGMDataItem.Integer { Pos = new Rectangle(X + 192, Y + 231, 0, 0), Palette = 13, NumType = Icons.NumType.Num8X8B, Padding = 1, Spaces = 9 };
  55. }
  56. #endregion Methods
  57. }
  58. #endregion Classes
  59. }
  60. }