Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / roomUI / RoomUIPanel.cs
  1.  
  2. using Godot;
  3. using UI.BottomTips;
  4.  
  5. namespace UI.RoomUI;
  6.  
  7. /// <summary>
  8. /// 地牢房间中的ui
  9. /// </summary>
  10. public partial class RoomUIPanel : RoomUI
  11. {
  12. private ReloadBar _reloadBar;
  13. private InteractiveTipBar _interactiveTipBar;
  14. private WeaponBar _weaponBar;
  15. private ActivePropBar _activePropBar;
  16. private LifeBar _lifeBar;
  17. private EventFactory _factory;
  18.  
  19. public override void OnCreateUi()
  20. {
  21. _reloadBar = new ReloadBar(L_ReloadBar);
  22. _interactiveTipBar = new InteractiveTipBar(L_InteractiveTipBar);
  23. _weaponBar = new WeaponBar(L_Control.L_WeaponBar);
  24. _activePropBar = new ActivePropBar(L_Control.L_ActivePropBar);
  25. _lifeBar = new LifeBar(L_Control.L_LifeBar);
  26. }
  27.  
  28. public override void OnShowUi()
  29. {
  30. _reloadBar.OnShow();
  31. _interactiveTipBar.OnShow();
  32. _weaponBar.OnShow();
  33. _activePropBar.OnShow();
  34. _lifeBar.OnShow();
  35.  
  36. _factory = EventManager.CreateEventFactory();
  37. _factory.AddEventListener(EventEnum.OnPlayerPickUpProp, OnPlayerPickUpProp);
  38. }
  39.  
  40. public override void OnHideUi()
  41. {
  42. _reloadBar.OnHide();
  43. _interactiveTipBar.OnHide();
  44. _weaponBar.OnHide();
  45. _activePropBar.OnHide();
  46. _lifeBar.OnHide();
  47. _factory.RemoveAllEventListener();
  48. _factory = null;
  49. }
  50.  
  51. public override void Process(float delta)
  52. {
  53. _weaponBar.Process(delta);
  54. _activePropBar.Process(delta);
  55. _lifeBar.Process(delta);
  56. QueueRedraw();
  57. }
  58.  
  59. //玩家拾起道具, 弹出提示
  60. private void OnPlayerPickUpProp(object propObj)
  61. {
  62. var prop = (Prop)propObj;
  63. var message = $"{prop.ActivityBase.Name}\n{prop.ActivityBase.Intro}";
  64. BottomTipsPanel.ShowTips(prop.GetDefaultTexture(), message);
  65. }
  66.  
  67. public override void _Draw()
  68. {
  69. foreach (var role in World.Current.Enemy_InstanceList)
  70. {
  71. if (!role.IsDestroyed)
  72. {
  73. var position = GameApplication.Instance.ViewToGlobalPosition(role.Position);
  74. DrawString(ResourceManager.DefaultFont16Px, position, role.StateController.CurrState.ToString());
  75. }
  76. }
  77. }
  78. }