NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_LevelDetailController.cs

304 lines
10 KiB
C#
Raw Normal View History

2024-01-29 16:30:26 +08:00
using cfg.ActorCfg;
using cfg.LevelCfg;
using Framework;
using Gameplay;
using Gameplay.Common;
using Gameplay.Level;
using PhxhSDK;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
2024-02-22 19:47:38 +08:00
using Object = UnityEngine.Object;
2024-01-29 16:30:26 +08:00
public class RewardForBeforeFightUI : Reward
{
2024-02-22 19:47:38 +08:00
bool isShowNum;
public bool isStableReward;
2024-01-29 16:30:26 +08:00
public RewardForBeforeFightUI(DataRewards data) : base(data)
{
2024-02-22 19:47:38 +08:00
isStableReward = data.RewardType == RewardType.Ensure;
2024-01-29 16:30:26 +08:00
}
}
2024-02-20 15:54:14 +08:00
public class UI_LevelDetailController : UIWindow
2024-01-29 16:30:26 +08:00
{
2024-02-22 19:47:38 +08:00
//UI GameObj
///Auto Gen Start///
public Image Image_BG;
public Button Button_Close;
public TMP_Text Text_LevelNum;
public TMP_Text Text_LevelName;
public Image Image_Shadow;
public Image Image_Misson;
public Image Image_Weather;
public Image Image_DayOrNight;
public TMP_Text Text_DayOrNight;
public Image Image_Seperate;
public Image Image_weather;
public TMP_Text Text_WeatherAndLand01;
public Image Image_environment;
public TMP_Text Text_WeatherAndLand02;
public Image Image_Buff;
public TMP_Text Text_Buff;
public TMP_Text Text_GetReward;
public TMP_Text Text_AlreadyGet;
public TMP_Text Text_Sweep;
public Image Image_SweepNum;
public TMP_Text Text_Num;
public Button Button_Minus;
public Button Button_Plus;
public Button Button_StartSweep;
public Image Image_physicalBG;
public Image Image_Physical;
public TMP_Text Text_PhysicalNum;
public TMP_Text Text_StartSweep;
public Button Button_Cancel;
public TMP_Text Text_Cancel;
public Image Image_StartFight;
public TMP_Text Text_StartFight;
private LevelInfo _currLevelInfo;
2024-01-29 16:30:26 +08:00
PhxhScrollView _mCurrentScrollView = null;
2024-02-22 19:47:38 +08:00
private Button fightBtn;
2024-01-29 16:30:26 +08:00
public List<RewardForBeforeFightUI> allRewards;
2024-02-22 19:47:38 +08:00
2024-02-20 15:54:14 +08:00
//private int _currTeamIndex = -1;
2024-01-29 16:30:26 +08:00
private Team _currTeam;
private int _teamIndexMax;
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
///Auto Gen End///
// deal with input data
public override void PreLoad(object data)
{
2024-02-22 19:47:38 +08:00
CommonUtils.PreLoadOrUnloadEnvironmentWeatherDayNightIcon(true);
2024-01-29 16:30:26 +08:00
}
2024-02-22 19:47:38 +08:00
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UI_LevelDetailBinder.GetComponents(this);
_mCurrentScrollView = GetComponent<PhxhScrollView>("Image_BG/RewardAndSweep/Text_GetReward/PhxhScrollView");
fightBtn = GetComponent<Button>("Image_BG/Image_StartFight");
Text_LevelNum = GetComponent<TMP_Text>("Image_BG/Top/Text_LevelNum");
2024-01-29 16:30:26 +08:00
BindButton(Button_Close, CloseOnClick);
2024-02-22 19:47:38 +08:00
BindButton(Button_Cancel, CloseOnClick);
BindButton(GetComponent<Button>("emptyForAllCloseBtn"), CloseOnClick);
BindButton(fightBtn, FightOnClick);
}
2024-01-29 16:30:26 +08:00
private void FightOnClick()
{
2024-02-20 15:54:14 +08:00
// var team = TeamEditManager.Instance.TeamList[_currTeamIndex];
// if (team.IsMemberEmpty())
// {
// return;
// }
//
// LevelManager.Instance.TryEnterLevel(_currLevelInfo.ID, OnEnterLevelFinished);
2024-02-22 19:47:38 +08:00
UIManager.Instance.OpenWindow(UINameConst.UI_BeforeFight, _currLevelInfo.ID);
2024-01-29 16:30:26 +08:00
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
private void OnEnterLevelFinished()
{
CloseWindow();
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
private void CloseOnClick()
{
2024-02-22 19:47:38 +08:00
CloseWindow();
2024-01-29 16:30:26 +08:00
}
//invoke when open window
protected override void OnShowWindow(object data)
2024-02-22 19:47:38 +08:00
{
2024-02-20 15:54:14 +08:00
_currLevelInfo = data as LevelInfo;
2024-02-22 19:47:38 +08:00
allRewards = new List<RewardForBeforeFightUI>();
2024-01-29 16:30:26 +08:00
2024-02-20 15:54:14 +08:00
//InitTeamInfo();
2024-01-29 16:30:26 +08:00
RefreshUI();
2024-02-22 19:47:38 +08:00
RefreshAllRewardsData();
SetScrollView();
RefreshScrollview();
2024-01-29 16:30:26 +08:00
CommonUtils.SetImageBlur(GetComponent<Image>("blurObj"));
}
2024-02-20 15:54:14 +08:00
// private void InitTeamInfo()
// {
// var teamList = TeamEditManager.Instance.TeamList;
// _teamIndexMax = teamList.Count - 1;
// _currTeam = _currTeamIndex == -1 ? TeamEditManager.Instance.GetSelectTeam() : teamList[_currTeamIndex];
// if (_currTeam == null)
// {
// DebugUtil.LogError("当前没有任何编队!");
// return;
// }
//
// _currTeamIndex = teamList.IndexOf(_currTeam);
// }
2024-01-29 16:30:26 +08:00
private void RefreshScrollview()
2024-02-22 19:47:38 +08:00
{
_mCurrentScrollView.UpdateData(true);
}
2024-01-29 16:30:26 +08:00
private async void RefreshUI()
{
2024-02-22 19:47:38 +08:00
Text_LevelNum.text = _currLevelInfo.ChapterIndex + "-" + _currLevelInfo.LevelIndex;
Text_LevelName.text = _currLevelInfo.Name;
Text_Buff.text = _currLevelInfo.EnvironmentBuffString;
2024-01-29 16:30:26 +08:00
2024-02-22 19:47:38 +08:00
var dayNightConfig = CommonUtils.GetDayNightConfig(_currLevelInfo.DayNightType);
Image_DayOrNight.sprite = AssetManager.Instance.GetPreLoadResult<Sprite>(dayNightConfig.Icon);
Text_DayOrNight.text = CommonUtils.GetLocalizeText(dayNightConfig.NameLocal);
var weatherConfig = CommonUtils.GetWeatherConfig(_currLevelInfo.WeatherType);
Image_weather.sprite = AssetManager.Instance.GetPreLoadResult<Sprite>(weatherConfig.Icon);
Text_WeatherAndLand01.text = CommonUtils.GetLocalizeText(weatherConfig.NameLocal);
var environmentConfig = CommonUtils.GetEnvironmentConfig(_currLevelInfo.EnvironmentType);
Image_environment.sprite = AssetManager.Instance.GetPreLoadResult<Sprite>(environmentConfig.Icon);
Text_WeatherAndLand02.text = CommonUtils.GetLocalizeText(environmentConfig.NameLocal);
var starResult = _currLevelInfo.StarResult;
for (int i = 0; i < 3; i++)
{
GameObject go =
FindObj(string.Format("Image_BG/LevelDetail/Image_Misson/ImageMissionBar{0}", (i).ToString()));
if (i < _currLevelInfo.LevelData.starTarget.Count)
{
go.SetActive(true);
CommonUtils.GetComponent<TMP_Text>(go, "TextDescribe").text =
_currLevelInfo.GetStarTargetLocalizationText(i);
var rewardIDs = i == 0 ? _currLevelInfo.StarRewardID_1 :
i == 1 ? _currLevelInfo.StarRewardID_2 : _currLevelInfo.StarRewardID_3;
bool isFinish = starResult[i];
if (rewardIDs.Length != 1)
{
DebugUtil.LogError($"关卡星级奖励配置id数目不正确!只能有一个ID levelID:{_currLevelInfo.ID} 星级:{i + 1}");
}
else
{
var rewardItemList = RewardManager.Instance.Get(rewardIDs[0]).ItemList.Get();
if (rewardItemList.Count > 0)
{
DebugUtil.LogError($"星级目标的奖励数目大于1!levelID:{_currLevelInfo.ID} 星级:{i + 1}");
}
var rewardItem = rewardItemList[0];
TMP_Text getItemText = CommonUtils.GetComponent<TMP_Text>(go, "TextGetItem");
TMP_Text getItemGrayText = CommonUtils.GetComponent<TMP_Text>(go, "TextGetItem_Grey");
var text = isFinish ? getItemText : getItemGrayText;
text.text = rewardItem.ShowText;
}
2024-01-29 16:30:26 +08:00
2024-02-22 19:47:38 +08:00
var finishedStarImage = CommonUtils.GetComponent<Image>(go, "ImageWinStart");
var notFinishedStarImage = CommonUtils.GetComponent<Image>(go, "ImageFailedStart");
finishedStarImage.gameObject.SetActive(isFinish);
notFinishedStarImage.gameObject.SetActive(!isFinish);
}
else
{
go.SetActive(false);
}
}
2024-01-29 16:30:26 +08:00
}
2024-02-22 19:47:38 +08:00
private void SetScrollView()
{
2024-01-29 16:30:26 +08:00
if (!ShowIfNull())
{
_mCurrentScrollView.SetUpdateFunc(RefreshItem);
_mCurrentScrollView.SetItemCountFunc(GetCountFunc);
_mCurrentScrollView.SetButton(SetScrollviewItemButton);
}
}
private void SetScrollviewItemButton(GameObject @object)
{
}
private int GetCountFunc()
{
2024-02-22 19:47:38 +08:00
return allRewards.Count;
2024-01-29 16:30:26 +08:00
}
private void RefreshItem(int index, RectTransform transform)
{
2024-02-22 19:47:38 +08:00
ItemNode itemNode = CommonUtils.GetComponent<ItemNode>(transform.gameObject, "ItemParent/ItemObjStatic");
itemNode.Refresh(allRewards[index].Cfg.ItemID, ItemObj.UIType.shop);
CommonUtils.GetGameObject(transform.gameObject, "ItemParent/ImageBlue")
.SetActive(allRewards[index].isStableReward);
2024-01-29 16:30:26 +08:00
}
private void RefreshAllRewardsData()
2024-02-22 19:47:38 +08:00
{
DataLevel dataLevel = TableManager.Instance.Tables.Level.Get(_currLevelInfo.ID);
for (int i = 0; i < dataLevel.NormalRewardID.Length; i++)
{
Reward reward = RewardManager.Instance.Get(dataLevel.NormalRewardID[i]);
RewardForBeforeFightUI rewardForBeforeFightUI = new RewardForBeforeFightUI(reward.Cfg);
2024-01-29 16:30:26 +08:00
allRewards.Add(rewardForBeforeFightUI);
}
2024-02-22 19:47:38 +08:00
for (int i = 0; i < dataLevel.FristRewardID.Length; i++)
{
2024-01-29 16:30:26 +08:00
Reward reward = RewardManager.Instance.Get(dataLevel.FristRewardID[i]);
RewardForBeforeFightUI rewardForBeforeFightUI = new RewardForBeforeFightUI(reward.Cfg);
allRewards.Add(rewardForBeforeFightUI);
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
for (int i = 0; i < dataLevel.StarRewardID1.Length; i++)
{
Reward reward = RewardManager.Instance.Get(dataLevel.StarRewardID1[i]);
RewardForBeforeFightUI rewardForBeforeFightUI = new RewardForBeforeFightUI(reward.Cfg);
allRewards.Add(rewardForBeforeFightUI);
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
for (int i = 0; i < dataLevel.StarRewardID2.Length; i++)
{
Reward reward = RewardManager.Instance.Get(dataLevel.StarRewardID2[i]);
RewardForBeforeFightUI rewardForBeforeFightUI = new RewardForBeforeFightUI(reward.Cfg);
allRewards.Add(rewardForBeforeFightUI);
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
for (int i = 0; i < dataLevel.StarRewardID3.Length; i++)
{
Reward reward = RewardManager.Instance.Get(dataLevel.StarRewardID2[i]);
RewardForBeforeFightUI rewardForBeforeFightUI = new RewardForBeforeFightUI(reward.Cfg);
allRewards.Add(rewardForBeforeFightUI);
}
}
2024-02-22 19:47:38 +08:00
2024-01-29 16:30:26 +08:00
private bool ShowIfNull()
{
2024-02-22 19:47:38 +08:00
FindObj("Image_BG/RewardAndSweep/Text_GetReward/NoRewards").SetActive(allRewards.Count == 0);
return allRewards.Count == 0;
2024-01-29 16:30:26 +08:00
}
2024-02-22 19:47:38 +08:00
//invoke when reload window
protected override void OnReloadWindow(object data = null)
{
}
2024-01-29 16:30:26 +08:00
2024-02-22 19:47:38 +08:00
//invoke when close window
2024-01-29 16:30:26 +08:00
2024-02-22 19:47:38 +08:00
//invoke when destroy
public override void OnRelease()
{
base.OnRelease();
CommonUtils.PreLoadOrUnloadEnvironmentWeatherDayNightIcon(false);
2024-01-29 16:30:26 +08:00
}
}