| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using UnityEngine.UI; | 
|   | 
| /// <summary> | 
| /// 游戏主界面(主战斗场景) | 
| /// </summary> | 
| 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; | 
|   | 
|     [SerializeField] Button autoBtn; | 
|   | 
|     /// <summary> | 
|     /// 初始化组件 | 
|     /// </summary> | 
|     protected override void InitComponent() | 
|     { | 
|         taskButton.AddListener(OnClickTaskButton); | 
|         bossBtn.AddListener(() => | 
|         { | 
|             UIManager.Instance.OpenWindow<MainBossEnterWin>(); | 
|         }); | 
|   | 
|         changeHeroPosBtn.AddListener(() => | 
|         { | 
|             HeroUIManager.Instance.selectTeamType = TeamType.Story; | 
|             UIManager.Instance.OpenWindow<HeroPosWin>(); | 
|         }); | 
|   | 
|         autoBtn.AddListener(()=> | 
|         { | 
|             //测试拾取所有物品 | 
|             var items = PackManager.Instance.GetItems(PackType.DropItem); | 
|             List<int> dropindexs = new List<int>(); | 
|             for (int i = 0; i < items.Count; i++) | 
|             { | 
|                 var item = items[i]; | 
|                 if (dropindexs.Count > 5) | 
|                 { | 
|                     EquipModel.Instance.NotifyItemDrop(dropindexs, BattleManager.Instance.storyBattleField.battleRootNode.blueTeamNodeList[Random.Range(0, 5)].GetComponent<RectTransform>()); | 
|                     dropindexs.Clear(); | 
|                 } | 
|   | 
|                 dropindexs.Add(item.gridIndex); | 
|             } | 
|             if (dropindexs.Count > 0) | 
|             { | 
|                 EquipModel.Instance.NotifyItemDrop(dropindexs, BattleManager.Instance.storyBattleField.battleRootNode.blueTeamNodeList[Random.Range(0,5)].GetComponent<RectTransform>()); | 
|                 dropindexs.Clear(); | 
|             } | 
|         }); | 
|     } | 
|   | 
|   | 
|   | 
|   | 
|     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>(); | 
|         // 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<BattleWin>(); | 
|     } | 
|   | 
|     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; | 
|         } | 
|   | 
|   | 
|     } | 
|   | 
|     /// <summary> | 
|     /// 更新玩家信息 | 
|     /// </summary> | 
|     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); | 
|             if (TaskManager.Instance.GetMainTaskState() == 2) | 
|             {  | 
|                 taskEffect.Play(); | 
|             } | 
|             else | 
|             { | 
|                 taskEffect.Stop(); | 
|             } | 
|             awardIcon.SetOrgSprite(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 | 
|         { | 
|             //根据任务类型引导 | 
|         } | 
|     } | 
| } |