Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / mapEditorCreateMark / attribute / ObjectAttribute.cs
@小李xl 小李xl on 22 Aug 2023 3 KB 完成保存与未保存状态
  1. using Config;
  2.  
  3. namespace UI.MapEditorCreateMark;
  4.  
  5. public partial class ObjectAttribute : AttributeBase
  6. {
  7. /// <summary>
  8. /// 可选择的物体类型
  9. /// </summary>
  10. public ActivityType ActivityType { get; set; }
  11. private MapEditorCreateMark.ObjectBar _objectBar;
  12. //选择的武器数据
  13. private ExcelConfig.Weapon _selectWeapon;
  14. //关联属性
  15. private MapEditorCreateMark.NumberBar _currAmmonAttr;
  16. private MapEditorCreateMark.NumberBar _residueAmmoAttr;
  17.  
  18. public override void SetUiNode(IUiNode uiNode)
  19. {
  20. _objectBar = (MapEditorCreateMark.ObjectBar)uiNode;
  21. _objectBar.L_HBoxContainer.L_SelectButton.Instance.Pressed += OnClickEdit;
  22. _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Pressed += OnClickDelete;
  23. }
  24.  
  25. public override void OnDestroy()
  26. {
  27. }
  28.  
  29. public override string GetAttributeValue()
  30. {
  31. if (_selectWeapon == null)
  32. {
  33. return null;
  34. }
  35. return _selectWeapon.WeaponId;
  36. }
  37.  
  38. //点击编辑按钮
  39. private void OnClickEdit()
  40. {
  41. EditorWindowManager.ShowSelectObject(ActivityType.Weapon, OnSelectObject, _objectBar.UiPanel);
  42. }
  43.  
  44. //点击删除按钮
  45. private void OnClickDelete()
  46. {
  47. SelectWeapon(null);
  48. }
  49.  
  50. private void OnSelectObject(ExcelConfig.ActivityObject activityObject)
  51. {
  52. var weapon = ExcelConfig.Weapon_List.Find(weapon => weapon.WeaponId == activityObject.Id);
  53. if (weapon != null)
  54. {
  55. SelectWeapon(weapon);
  56. }
  57. }
  58.  
  59. /// <summary>
  60. /// 设置选择的武器物体
  61. /// </summary>
  62. public void SelectWeapon(ExcelConfig.Weapon weapon)
  63. {
  64. if (weapon == null)
  65. {
  66. _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Visible = false;
  67. _selectWeapon = null;
  68. //隐藏关联属性
  69. _currAmmonAttr.Instance.Visible = false;
  70. _residueAmmoAttr.Instance.Visible = false;
  71. _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Visible = false;
  72. _objectBar.L_HBoxContainer.L_ObjectName.Instance.Text = "<未选择>";
  73. }
  74. else
  75. {
  76. _objectBar.L_HBoxContainer.L_DeleteButton.Instance.Visible = true;
  77. _selectWeapon = weapon;
  78. var o = ExcelConfig.ActivityObject_Map[weapon.WeaponId];
  79. //显示关联属性
  80. _currAmmonAttr.Instance.Visible = true;
  81. _residueAmmoAttr.Instance.Visible = true;
  82. //显示数据
  83. _objectBar.L_HBoxContainer.L_ObjectName.Instance.Text = o.Name;
  84. _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Visible = true;
  85. _objectBar.L_HBoxContainer.L_ObjectIcon.Instance.Texture = ResourceManager.LoadTexture2D(o.Icon);
  86. //弹药
  87. _currAmmonAttr.L_NumInput.Instance.MaxValue = weapon.AmmoCapacity;
  88. _currAmmonAttr.L_NumInput.Instance.Value = weapon.AmmoCapacity;
  89. _residueAmmoAttr.L_NumInput.Instance.MaxValue = weapon.MaxAmmoCapacity;
  90. _residueAmmoAttr.L_NumInput.Instance.Value = weapon.AmmoCapacity;
  91. }
  92. }
  93.  
  94. /// <summary>
  95. /// 设置关联的属性
  96. /// </summary>
  97. public void SetRelevancyAttr(MapEditorCreateMark.NumberBar currAmmonAttr, MapEditorCreateMark.NumberBar residueAmmoAttr)
  98. {
  99. _currAmmonAttr = currAmmonAttr;
  100. _residueAmmoAttr = residueAmmoAttr;
  101. currAmmonAttr.Instance.Visible = false;
  102. residueAmmoAttr.Instance.Visible = false;
  103. }
  104. }