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] EffectPlayer taskEffect; 
 | 
  
 | 
  
 | 
    //关卡 
 | 
    [SerializeField] Button bossBtn; 
 | 
  
 | 
    /// <summary> 
 | 
    /// 初始化组件 
 | 
    /// </summary> 
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        taskButton.AddListener(OnClickTaskButton); 
 | 
        bossBtn.AddListener(() => 
 | 
        { 
 | 
            UIManager.Instance.OpenWindow<MainBossEnterWin>(); 
 | 
        }); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    public override void Refresh() 
 | 
    { 
 | 
        UpdatePlayerInfo(); 
 | 
        UpdateTask(); 
 | 
    } 
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh; 
 | 
        TaskManager.Instance.OnTaskUpdate += UpdateTask; 
 | 
        Refresh(); 
 | 
        UIManager.Instance.OpenWindow<BattleWin>(); 
 | 
    } 
 | 
    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); 
 | 
            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 
 | 
        { 
 | 
            //根据任务类型引导 
 | 
        } 
 | 
    } 
 | 
} 
 |