using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 游戏主界面
///
public class HomeWin : UIBase
{
//头像区
[SerializeField] AvatarCell avatarCell;
[SerializeField] Text playerNameText;
[SerializeField] Text powerText;
[SerializeField] OfficialTitleCell officialRankText;
[SerializeField] Text goldText;
[SerializeField] Text sparText;
//经验区
[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;
///
/// 初始化组件
///
protected override void InitComponent()
{
avatarCell.button.AddListener(() => { });
taskButton.AddListener(OnClickTaskButton);
bossBtn.AddListener(() =>
{
UIManager.Instance.OpenWindow();
});
}
public override void Refresh()
{
UpdatePlayerInfo();
UpdateCurrency();
UpdateTask();
}
protected override void OnPreOpen()
{
PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
TaskManager.Instance.OnTaskUpdate += UpdateTask;
Refresh();
}
protected override void OnPreClose()
{
PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
TaskManager.Instance.OnTaskUpdate -= UpdateTask;
}
void PlayerDataRefresh(PlayerDataType type)
{
switch (type)
{
case PlayerDataType.FightPower:
powerText.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPoint);
break;
case PlayerDataType.RealmLevel:
officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
break;
case PlayerDataType.TotalExp:
case PlayerDataType.ExpPoint:
ShowExp();
break;
case PlayerDataType.Gold:
goldText.text = UIHelper.GetMoneyCntEx(1).ToString();
break;
case PlayerDataType.default33:
sparText.text = UIHelper.GetMoneyCnt(42).ToString();
break;
case PlayerDataType.LV:
playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
break;
case PlayerDataType.Face:
case PlayerDataType.FacePic:
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
break;
}
}
///
/// 更新玩家信息
///
private void UpdatePlayerInfo()
{
// 从玩家数据中获取信息并更新UI
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)PlayerDatas.Instance.baseData.PlayerID,
PlayerDatas.Instance.baseData.face,
PlayerDatas.Instance.baseData.facePic));
playerNameText.text = PlayerDatas.Instance.baseData.PlayerName;
playerLevelText.text = PlayerDatas.Instance.baseData.LV.ToString();
powerText.text = UIHelper.ReplaceLargeArtNum(PlayerDatas.Instance.baseData.FightPoint);
officialRankText.InitUI(PlayerDatas.Instance.baseData.realmLevel, PlayerDatas.Instance.baseData.TitleID);
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;
}
///
/// 更新货币信息
///
private void UpdateCurrency()
{
goldText.text = UIHelper.GetMoneyCntEx(1).ToString();
sparText.text = UIHelper.ReplaceLargeNumEx(UIHelper.GetMoneyCnt(42));
}
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
{
//根据任务类型引导
}
}
}