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 { //根据任务类型引导 } } }