Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / roomUI / RoomUIPanel.cs
@小李xl 小李xl on 13 Mar 2024 2 KB 重构buff中

using UI.BottomTips;

namespace UI.RoomUI;

/// <summary>
/// 地牢房间中的ui
/// </summary>
public partial class RoomUIPanel : RoomUI
{
    private ReloadBarHandler _reloadBar;
    private InteractiveTipBarHandler _interactiveTipBar;
    private WeaponBarHandler _weaponBar;
    private ActivePropBarHandler _activePropBar;
    private LifeBarHandler _lifeBar;
    
    private EventFactory _factory;

    private bool _showMap = false;

    public override void OnCreateUi()
    {
        _reloadBar = new ReloadBarHandler(L_ReloadBar);
        _interactiveTipBar = new InteractiveTipBarHandler(L_InteractiveTipBar);
        _weaponBar = new WeaponBarHandler(L_Control.L_WeaponBar);
        _activePropBar = new ActivePropBarHandler(L_Control.L_ActivePropBar);
        _lifeBar = new LifeBarHandler(L_Control.L_LifeBar);
    }

    public override void OnShowUi()
    {
        _reloadBar.OnShow();
        _interactiveTipBar.OnShow();
        _weaponBar.OnShow();
        _activePropBar.OnShow();
        _lifeBar.OnShow();

        _factory = EventManager.CreateEventFactory();
        _factory.AddEventListener(EventEnum.OnPlayerPickUpProp, OnPlayerPickUpProp);

        //大厅中不显示小地图
        if (World.Current is Hall)
        {
            S_RoomMap.Instance.HideUi();
        }
        else
        {
            S_RoomMap.Instance.ShowUi();
        }
    }

    public override void OnHideUi()
    {
        _reloadBar.OnHide();
        _interactiveTipBar.OnHide();
        _weaponBar.OnHide();
        _activePropBar.OnHide();
        _lifeBar.OnHide();
        
        _factory.RemoveAllEventListener();
        _factory = null;
    }

    public override void Process(float delta)
    {
        _weaponBar.Process(delta);
        _activePropBar.Process(delta);
        _lifeBar.Process(delta);
        
        
    }

    //玩家拾起道具, 弹出提示
    private void OnPlayerPickUpProp(object propObj)
    {
        var prop = (PropActivity)propObj;
        var message = $"{prop.ActivityBase.Name}\n{prop.ActivityBase.Intro}";
        BottomTipsPanel.ShowTips(prop.GetDefaultTexture(), message);
    }
}