using ET; using FairyGUI; using Hutool; using System.Collections.Generic; using UI.League; using UnityEngine; namespace GFGGame { public class LeagueTeaPartyRewardView : BaseWindow { private UI_LeagueTeaPartyRewardUI _ui; private List componentsPerson = new List(); private List componentsLeague = new List(); public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void OnInit() { base.OnInit(); packageName = UI_LeagueTeaPartyRewardUI.PACKAGE_NAME; _ui = UI_LeagueTeaPartyRewardUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.TEA_PARTY_REWARD,UpTeaPartyRewardData); } protected override void OnShown() { base.OnShown(); UpTeaPartyRewardData(); } void UpTeaPartyRewardData() { SetPersonScoreList(); SetLeagueScoreList(); _ui.m_txtRoleScore.text = LeagueDataManager.Instance.RoleTeapartyInfo.PerScore.ToString(); _ui.m_txtLeagueScore.text = LeagueDataManager.Instance.RoleTeapartyInfo.LeagueScore.ToString(); } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.TEA_PARTY_REWARD, UpTeaPartyRewardData); } //角色评选奖励 private void SetPersonScoreList() { var teapartyRewardRoleCfg = TeapartyRewardRoleCfgArray.Instance.dataArray; var maxCfg = teapartyRewardRoleCfg[teapartyRewardRoleCfg.Length - 1]; var maxCfgID = maxCfg.id; var maxScore = maxCfg.targetScore; var pos = _ui.m_StartIndex.position; var endX = _ui.m_EndIndex.position.x; _ui.m_barPerson.max = maxScore; _ui.m_barPerson.value = LeagueDataManager.Instance.RoleTeapartyInfo.PerScore; //循环设置UI foreach (var cfg in teapartyRewardRoleCfg) { var cfgScore = cfg.targetScore; var item = UI_LinessRewardProcessItemBt.Create(); var target = item.target; componentsPerson.Add(target); _ui.target.AddChild(target); //根据 maxScore cfgScore pos.y endY 设置target 位置 x,z不变,y根据比例设置 var x = pos.x + (endX - pos.x) * cfgScore / maxScore; target.SetPosition(x, pos.y, pos.z); item.m_Score.text = cfgScore.ToString(); var cfgBonusArr = cfg.stageRewardArr; var itemCfg = ItemCfgArray.Instance.GetCfg(cfgBonusArr[0][0]); item.m_loaIcon.url = string.IsNullOrEmpty(itemCfg.res) ? "" : ResPathUtil.GetIconPath(itemCfg); item.m_Num.text = cfgBonusArr[0][1].ToString(); item.m_c1.selectedIndex = cfg.id < maxCfgID ? 1 : 0; item.target.data = cfg; item.target.onClick.Add(OnClickReward); } FreshGetStatus(); } private void FreshGetStatus() { componentsPerson.ForEach(com => { var item = UI_LinessRewardProcessItemBt.Proxy(com); TeapartyRewardRoleCfg cfg = (TeapartyRewardRoleCfg)item.target.data; var state = LeagueDataManager.Instance.CheckTeaPartyPersonRewardStatu(cfg.targetScore); item.m_c1.selectedIndex = state; RedDotController.Instance.SetComRedDot(item.target,LeagueDataManager.Instance.CheckTeaPartyPersonRewardCanGet(cfg.targetScore), "", -90); UI_LinessRewardProcessItemBt.ProxyEnd(); }); } private async void OnClickReward(EventContext context) { if (!(context.sender is GObject btnGet)) return; TeapartyRewardRoleCfg cfg = (TeapartyRewardRoleCfg)btnGet.data; int id = cfg.stageRewardArr[0][0]; if (!LeagueDataManager.Instance.CheckTeaPartyPersonRewardCanGet(cfg.targetScore)) { GoodsItemTipsController.ShowItemTips(id); return; } var result = await LeagueSproxy.GetPerRatingAward(cfg.targetScore); if (!result) return; FreshGetStatus(); } //雅集评选奖励 private void SetLeagueScoreList() { var teapartyRewardLeagueCfgs = TeapartyRewardLeagueCfgArray.Instance.GetCfgsByid(LeagueDataManager.Instance.TeaPartyId); var maxCfg = teapartyRewardLeagueCfgs[teapartyRewardLeagueCfgs.Count - 1]; var maxCfgID = maxCfg.id; var maxScore = maxCfg.targetScore; var pos = _ui.m_StartLeagueIndex.position; var endX = _ui.m_EndLeagueIndex.position.x; _ui.m_barGroups.max = maxScore; _ui.m_barGroups.value = LeagueDataManager.Instance.RoleTeapartyInfo.LeagueScore; //循环设置UI foreach (var cfg in teapartyRewardLeagueCfgs) { var cfgScore = cfg.targetScore; var item = UI_LinessRewardProcessItemBt.Create(); var target = item.target; componentsLeague.Add(target); _ui.target.AddChild(target); //根据 maxScore cfgScore pos.y endY 设置target 位置 x,z不变,y根据比例设置 var x = pos.x + (endX - pos.x) * cfgScore / maxScore; target.SetPosition(x, pos.y, pos.z); item.m_Score.text = cfgScore.ToString(); var cfgBonusArr = cfg.stageRewardArr; var itemCfg = ItemCfgArray.Instance.GetCfg(cfgBonusArr[0][0]); item.m_loaIcon.url = string.IsNullOrEmpty(itemCfg.res) ? "" : ResPathUtil.GetIconPath(itemCfg); item.m_Num.text = cfgBonusArr[0][1].ToString(); item.m_c1.selectedIndex = cfg.id == maxCfgID ? 1 : 0; item.target.data = cfg; item.target.onClick.Add(OnClickLeagueReward); } FreshGetLeagueStatus(); } private void FreshGetLeagueStatus() { componentsLeague.ForEach(com => { var item = UI_LinessRewardProcessItemBt.Proxy(com); TeapartyRewardLeagueCfg cfg = (TeapartyRewardLeagueCfg)item.target.data; var state = LeagueDataManager.Instance.CheckTeaPartyLeagueRewardStatu(cfg.targetScore); item.m_c1.selectedIndex = state; RedDotController.Instance.SetComRedDot(item.target, LeagueDataManager.Instance.CheckTeaPartyLeagueRewardCanGet(cfg.targetScore), "", -90); UI_LinessRewardProcessItemBt.ProxyEnd(); }); } private async void OnClickLeagueReward(EventContext context) { if (!(context.sender is GObject btnGet)) return; TeapartyRewardLeagueCfg cfg = (TeapartyRewardLeagueCfg)btnGet.data; int id = cfg.stageRewardArr[0][0]; if (!LeagueDataManager.Instance.CheckTeaPartyLeagueRewardCanGet(cfg.targetScore)) { GoodsItemTipsController.ShowItemTips(id); return; } var result = await LeagueSproxy.GetLeagueRatingAward(cfg.targetScore); if (!result) return; FreshGetLeagueStatus(); } } }