145 lines
4.8 KiB
C#
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());
|
|
}
|
|
}
|