Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / roomUI / WeaponBarHandler.cs
  1. using Godot;
  2.  
  3. namespace UI.RoomUI;
  4.  
  5. public class WeaponBarHandler
  6. {
  7. private RoomUI.WeaponBar _weaponBar;
  8.  
  9. private int _prevAmmo = -1;
  10. private int _prevResidue = -1;
  11. public WeaponBarHandler(RoomUI.WeaponBar weaponBar)
  12. {
  13. _weaponBar = weaponBar;
  14. SetWeaponTexture(null);
  15. }
  16.  
  17. public void OnShow()
  18. {
  19. }
  20.  
  21. public void OnHide()
  22. {
  23. }
  24.  
  25. public void Process(float delta)
  26. {
  27. var weapon = World.Current.Player?.WeaponPack.ActiveItem;
  28. if (weapon != null)
  29. {
  30. SetWeaponTexture(weapon.GetCurrentTexture());
  31. SetWeaponAmmunition(weapon.CurrAmmo, weapon.ResidueAmmo);
  32. }
  33. else
  34. {
  35. SetWeaponTexture(null);
  36. }
  37. }
  38.  
  39. /// <summary>
  40. /// 设置显示在 ui 上武器的纹理
  41. /// </summary>
  42. /// <param name="texture">纹理</param>
  43. public void SetWeaponTexture(Texture2D texture)
  44. {
  45. if (texture != null)
  46. {
  47. _weaponBar.L_WeaponPanel.L_WeaponSprite.Instance.Texture = texture;
  48. _weaponBar.Instance.Visible = true;
  49. }
  50. else
  51. {
  52. _weaponBar.Instance.Visible = false;
  53. }
  54. }
  55. /// <summary>
  56. /// 设置弹药数据
  57. /// </summary>
  58. /// <param name="curr">当前弹夹弹药量</param>
  59. /// <param name="total">剩余弹药总数</param>
  60. public void SetWeaponAmmunition(int curr, int total)
  61. {
  62. if (curr != _prevAmmo || total != _prevResidue)
  63. {
  64. _weaponBar.L_AmmoCount.Instance.Text = curr + " / " + total;
  65. _prevAmmo = curr;
  66. _prevResidue = total;
  67. }
  68. }
  69. }