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

194 lines
6.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using asap.core;
using cfg;
using DG.Tweening;
using GameCore;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EventFishingDuelReportRewardPanel : MonoBehaviour
{
protected FishingDuelManager FDM;
public FishStatisticsPlayerInfo playerInfo;
public GameObject fishInfoPrefab;
public Transform fishInfoParent;
protected List<DuelFishInfo> duelFishInfos = new List<DuelFishInfo>();
Tables tables;
IUIService uiService;
public GameObject text_winner;
public GameObject text_loser;
public Animation myself;
public Animation enemy;
public TMP_Text text_info;
public GameObject tap_to_skip;
public Button btn_confrim;
/*
* 第一个对局栏目组件延迟播放时间CardInfoShowDelay = 0.25s
后续对局栏目组件的出现间隔时间CardInfoShowInterval = 0.2s
*/
public float CardInfoShowDelay = 0.25f;
public float CardInfoShowInterval = 0.2f;
private void Awake()
{
tables = GContext.container.Resolve<Tables>();
uiService = GContext.container.Resolve<IUIService>();
FDM = GContext.container.Resolve<FishingDuelManager>();
fishInfoPrefab.SetActive(false);
SetFish();
playerInfo.SetData(FDM);
}
private void Start()
{
bool isWin = FDM.SelfModel.CurrentPTS > FDM.EnemyModel.CurrentPTS;
tap_to_skip.SetActive(false);
text_winner.SetActive(isWin);
text_loser.SetActive(!isWin);
PlayShow();
}
void SetFish()
{
List<int> fishItemIDs = FDM.FishItemIDs;
if (fishItemIDs == null || fishItemIDs.Count == 0)
{
return;
}
Item item = null;
for (int i = 0; i < fishItemIDs.Count; i++)
{
GameObject gameObject = Instantiate(fishInfoPrefab, fishInfoParent);
DuelFishInfo duelFishInfo = gameObject.GetComponent<DuelFishInfo>();
item = tables.TbItem[fishItemIDs[i]];
PlayerFishData.SetFishIcon(duelFishInfo.icon_fish,item);//鱼头像
uiService.SetImageSprite(duelFishInfo.icon_fish_tag, $"icon_fish_rate_tag_{item.Quality}");
duelFishInfos.Add(duelFishInfo);
duelFishInfo.gameObject.SetActive(true);
}
}
void PlayShow()
{
var fishInfos = FDM.SelfModel.GetShowDatas();
int myDataCount = fishInfos.Count;
var enemyInfos = FDM.EnemyModel.GetShowDatas();
int enemyDataCount = enemyInfos.Count;
DuelFishingData myData;
DuelFishingData enemyData;
for (int i = 0; i < duelFishInfos.Count; i++)
{
enemyData = null;
myData = null;
if (i < myDataCount && fishInfos[i].isWin)
{
myData = fishInfos[i];
}
if (i < enemyDataCount && enemyInfos[i].isWin)
{
enemyData = enemyInfos[i];
}
if (myData != null)
{
bool isHigh = enemyData == null || myData.point >= enemyData.point;
duelFishInfos[i].text_num_score.SetValue(myData.point.ToString(), isHigh);
float addMy = (1 + myData.fishCardAdd) * (1 + myData.fishRodAdd) - 1;
duelFishInfos[i].text_num_score.SetAddValue(addMy, isHigh);
}
else
{
duelFishInfos[i].text_num_score.SetValue("0", false);
duelFishInfos[i].text_num_score.SetAddValue(-1, false);
}
if (enemyData != null)
{
bool isHigh = myData == null || enemyData.point >= myData.point;
duelFishInfos[i].text_num_enermy_score.SetValue(enemyData.point.ToString(), isHigh);
float addEnemy = (1 + enemyData.fishCardAdd) * (1 + enemyData.fishRodAdd) - 1;
duelFishInfos[i].text_num_enermy_score.SetAddValue(addEnemy, isHigh);
}
else
{
duelFishInfos[i].text_num_enermy_score.SetValue("0", false);
duelFishInfos[i].text_num_enermy_score.SetAddValue(-1, false);
}
duelFishInfos[i].root.SetActive(false);
duelFishInfos[i].gameObject.SetActive(true);
}
StartCoroutine(ShowFish());
}
IEnumerator ShowFish()
{
playerInfo.SetNumShow(FDM.SelfModel.CurrentPTS >= FDM.EnemyModel.CurrentPTS);
var fishInfos = FDM.SelfModel.GetShowDatas();
int myDataCount = fishInfos.Count;
var enemyInfos = FDM.EnemyModel.GetShowDatas();
int enemyDataCount = enemyInfos.Count;
DuelFishingData myData;
DuelFishingData enemyData;
yield return new WaitForSeconds(CardInfoShowDelay);
int selfCurrentPTS = 0;
int enemyCurrentPTS = 0;
for (int i = 0; i < duelFishInfos.Count; i++)
{
enemyData = null;
myData = null;
if (i < myDataCount && fishInfos[i].isWin)
{
myData = fishInfos[i];
}
if (i < enemyDataCount && enemyInfos[i].isWin)
{
enemyData = enemyInfos[i];
}
if (myData != null)
{
selfCurrentPTS += myData.point;
myself.Play();
}
if (enemyData != null)
{
enemyCurrentPTS += enemyData.point;
enemy.Play();
}
playerInfo.SetNum(selfCurrentPTS, enemyCurrentPTS, CardInfoShowInterval);
duelFishInfos[i].root.SetActive(true);
yield return new WaitForSeconds(CardInfoShowInterval);
}
tap_to_skip.SetActive(true);
StartCoroutine(Close());
btn_confrim.onClick.AddListener(Join);
}
IEnumerator Close()
{
int allTime = 5;
while (allTime > 0)
{
text_info.text = LocalizationMgr.GetFormatTextValue("UI_EventFishingDuelPanel_61", allTime);
yield return new WaitForSeconds(1);
UIManager.Instance.DestroyUI(UITypes.FishingDuelRewardPanel);
allTime--;
}
text_info.text = LocalizationMgr.GetFormatTextValue("UI_EventFishingDuelPanel_61", 0);
Join();
}
async void Join()
{
StopAllCoroutines();
await UIManager.Instance.ShowUI(UITypes.EventFishingDuelRewardPanel);
UIManager.Instance.DestroyUI(UITypes.EventFishingDuelReportRewardPanel);
UIManager.Instance.DestroyUI(UITypes.FishingDuelRewardPanel);
}
}