using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 游戏主界面(主战斗场景) /// public class HomeWin : UIBase { //经验区 [SerializeField] Text playerLevelText; [SerializeField] SmoothSlider expSlider; //任务区 [SerializeField] Button taskButton; //引导或者领取任务奖励 [SerializeField] RichText taskText; [SerializeField] Text taskNumText; [SerializeField] Image awardIcon; [SerializeField] Text awardCnt; [SerializeField] UIEffectPlayer taskEffect; //关卡 [SerializeField] Button bossBtn; [SerializeField] Button changeHeroPosBtn; /// /// 初始化组件 /// protected override void InitComponent() { taskButton.AddListener(OnClickTaskButton); bossBtn.AddListener(() => { UIManager.Instance.OpenWindow(); }); changeHeroPosBtn.AddListener(() => { HeroUIManager.Instance.selectTeamType = TeamType.Story; UIManager.Instance.OpenWindow(); }); } public override void Refresh() { UpdatePlayerInfo(); UpdateTask(); } protected override void OnPreOpen() { PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; TaskManager.Instance.OnTaskUpdate += UpdateTask; Refresh(); var battleWin = UIManager.Instance.OpenWindow(); battleWin.SetBattleField(BattleManager.Instance.storyBattleField); } protected override void OnOpen() { base.OnOpen(); } protected override void OnPreClose() { PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh; TaskManager.Instance.OnTaskUpdate -= UpdateTask; UIManager.Instance.CloseWindow(); } void PlayerDataRefresh(PlayerDataType type) { switch (type) { case PlayerDataType.TotalExp: case PlayerDataType.ExpPoint: ShowExp(); break; case PlayerDataType.LV: playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString(); break; } } /// /// 更新玩家信息 /// private void UpdatePlayerInfo() { playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString(); ShowExp(); } void ShowExp() { var lvConfig = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV); expSlider.value = (float)PlayerDatas.Instance.baseData.curExp / lvConfig.EXP; expSlider.Text.text = PlayerDatas.Instance.baseData.curExp + "/" + PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV).EXP; } void UpdateTask() { var task = TaskManager.Instance.mainTask; if (task.TaskID == 0) { taskButton.SetActive(false); } else { taskButton.SetActive(true); var taskConfig = TaskConfig.Get(task.TaskID); taskText.text = taskConfig.TaskDescribe; taskNumText.text = string.Format("({0}/{1})", task.CurValue, taskConfig.NeedValue); taskNumText.color = task.CurValue >= taskConfig.NeedValue ? UIHelper.GetUIColor(TextColType.NavyYellow) : UIHelper.GetUIColor(TextColType.Red); taskEffect.SetActive(TaskManager.Instance.GetMainTaskState() == 2); awardIcon.SetSprite(ItemConfig.Get(taskConfig.AwardItemList[0][0]).IconKey); awardCnt.text = taskConfig.AwardItemList[0][1].ToString(); } } void OnClickTaskButton() { if (TaskManager.Instance.GetMainTaskState() == 2) { //领取任务奖励 CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward(); getReward.RewardType = 66; getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID; GameNetSystem.Instance.SendInfo(getReward); } else { //根据任务类型引导 } } }