Files
back_cantanBuilding/Assets/Scripts/Duel/UI/EventFishingDuelSettlementPanel.cs
2026-05-26 16:15:54 +08:00

145 lines
4.8 KiB
C#

using asap.core;
using cfg;
using game;
using GameCore;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EventFishingDuelSettlementPanel : MonoBehaviour
{
FishingEventData fishingEventData;
Tables table;
Button btn_receive;
private EventSolomain solomain;
List<RewardItemNew> rewardItems;
TMP_Text text_rank;
Image icon_rank;
List<ItemData> rewardItemData;
private void Awake()
{
fishingEventData = GContext.container.Resolve<FishingEventData>();
table = GContext.container.Resolve<Tables>();
btn_receive = transform.Find("root/reward/btn_receive/btn_green").GetComponent<Button>();
text_rank = transform.Find("root/text_rank").GetComponent<TMP_Text>();
icon_rank = transform.Find("root/icon_rank").GetComponent<Image>();
Transform layout_reward = transform.Find($"root/layout_reward");
int count = layout_reward.childCount;
rewardItems = new List<RewardItemNew>();
for (int i = 1; i <= count; i++)
{
rewardItems.Add(transform.Find($"root/layout_reward/reward{i}").GetComponent<RewardItemNew>());
}
}
private void Start()
{
SetReward();
btn_receive.onClick.AddListener(OnReveive);
}
void SetReward()
{
var data = table.TbEventSolomain.DataList;
if (fishingEventData.duelData.preProgress > 0)
{
for (int i = data.Count - 1; i >= 0; i--)
{
if (fishingEventData.duelData.preProgress >= data[i].TrophyRange[0])
{
solomain = data[i];
break;
}
}
}
if (solomain == null)
{
solomain = data[0];
}
GContext.container.Resolve<IUIService>().SetImageSprite(icon_rank, solomain.RankIcon);
text_rank.text = LocalizationMgr.GetText(solomain.RankText_l10n_key);
rewardItemData = GContext.container.Resolve<PlayerItemData>()
.GetItemDataByDropId(solomain.SeasonReward);
if (rewardItemData != null)
{
int dataCount = rewardItemData.Count;
int rewardCount = rewardItems.Count;
for (int j = 0; j < rewardCount; j++)
{
if (j < dataCount)
{
rewardItems[j].SetData(rewardItemData[j]);
}
else
{
rewardItems[j].gameObject.SetActive(false);
}
}
}
}
void OnReveive()
{
int preProgress = fishingEventData.duelData.preProgress;
int reset = preProgress - table.TbEventSoloConfig.MinTrophy;
var data = table.TbEventSolomain.DataList;
if (reset > 0)
{
//preProgress = table.TbEventSoloConfig.SettlementTrophy +
// (int)(reset * table.TbEventSoloConfig.SettlementTrophyMultiplier);
var solomain = data[0];
if (preProgress > 0)
{
for (int i = data.Count - 1; i >= 0; i--)
{
if (preProgress >= data[i].TrophyRange[0])
{
solomain = data[i];
break;
}
}
}
preProgress -= solomain.SettleDeducTrophy;
}
//preProgress /= table.TbEventSoloConfig.TrophyMutiple;
//preProgress *= table.TbEventSoloConfig.TrophyMutiple;
if (preProgress < table.TbEventSoloConfig.MinTrophy)
{
preProgress = table.TbEventSoloConfig.MinTrophy;
}
EventSolomain preSolomain = solomain;
for (int i = data.Count - 1; i >= 0; i--)
{
if (preProgress >= data[i].TrophyRange[0])
{
preSolomain = data[i];
break;
}
}
#if AGG
using (var e = GEvent.GameEvent("single_battle_settlement"))
{
e.AddContent("trophy", fishingEventData.duelData.preProgress)
.AddContent("charge_count", GContext.container.Resolve<PlayerShopData>().GetBuyPaymentAmount())
.AddContent("trophy_after", preProgress);
if (solomain != null)
{
e.AddContent("tire", solomain.RankTier)
.AddContent("reward_list", solomain.SeasonReward);
}
if (preSolomain != null)
{
e.AddContent("tier_after", preSolomain.RankTier);
}
}
#endif
GContext.container.Resolve<PlayerItemData>().AddItem(rewardItemData);
fishingEventData.ClaimReward();
UIManager.Instance.DestroyUI(UITypes.EventFishingDuelSettlementPanel);
GContext.Publish(new ShowData());
}
}