using BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay; using BrewMonster.Scripts.Skills; using BrewMonster.UI; using System; using UnityEngine; using UnityEngine.UI; namespace BrewMonster { public class CDlgSkillAction : AUIDialog { [SerializeField] private Button uiSkillButton; [SerializeField] private Button uiAssignSkillButton; [SerializeField] private SkillUI skillUI; [SerializeField] private AssignSkill assignSkill; bool m_bOpenAction; bool m_bReceivedNCPGreeting; // �Ƿ��յ���NPC��Greeting public override void Awake() { base.Awake(); if(uiSkillButton == null) { BMLogger.LogError($"[CDlgSkillAction] uiSkillButton is null"); return; } if(uiAssignSkillButton == null) { BMLogger.LogError($"[CDlgSkillAction] uiAssignSkillButton is null"); return; } uiSkillButton.onClick.RemoveAllListeners(); uiAssignSkillButton.onClick.RemoveAllListeners(); EventBus.Subscribe(OnOpenSkillUIEvent); EventBus.Subscribe(OnOpenAssignSkillUIEvent); uiSkillButton.onClick.AddListener(OnSkillButtonClicked); uiAssignSkillButton.onClick.AddListener(OnAssignSkillButtonClicked); } public void OnDestroy() { EventBus.Unsubscribe(OnOpenSkillUIEvent); EventBus.Unsubscribe(OnOpenAssignSkillUIEvent); } private void OnOpenAssignSkillUIEvent(OpenAssignSkillUIEvent @event) { TryOpenAssignSkillDialog(false); } private void OnOpenSkillUIEvent(OpenSkillUIEvent @event) { TryOpenSkillDialog(false); } private void OnSkillButtonClicked() { TryOpenSkillDialog(false); } private void OnAssignSkillButtonClicked() { TryOpenAssignSkillDialog(false); } public void TryOpenSkillDialog(bool bAction) { if(skillUI == null) { return; } var boolll = skillUI.gameObject.activeInHierarchy; if (boolll) { skillUI.gameObject.SetActive(!boolll); return; } skillUI.gameObject.SetActive(!boolll); if (skillUI.gameObject.activeInHierarchy) if (!GetHostPlayer().IsTalkingWithNPC()) { m_bOpenAction = bAction; CECHostSkillModel.Instance.SendHelloToSkillLearnNPC(); SetReceivedNPCGreeting(false); } } public void TryOpenAssignSkillDialog(bool bAction) { if(assignSkill == null) { return; } var boolll = assignSkill.gameObject.activeInHierarchy; if (boolll) { assignSkill.gameObject.SetActive(!boolll); return; } assignSkill.gameObject.SetActive(!boolll); if (assignSkill.gameObject.activeInHierarchy) if (!GetHostPlayer().IsTalkingWithNPC()) { m_bOpenAction = bAction; CECHostSkillModel.Instance.SendHelloToSkillLearnNPC(); SetReceivedNPCGreeting(false); } } public void SetReceivedNPCGreeting(bool bReceived) { m_bReceivedNCPGreeting = bReceived; } public bool IsReceivedNPCGreeting() { return m_bReceivedNCPGreeting; } } }