备份CatanBuilding瘦身独立工程

This commit is contained in:
JSD\13999
2026-05-26 16:15:54 +08:00
commit 2d0e6a61b7
12001 changed files with 2431925 additions and 0 deletions

View File

@@ -0,0 +1,193 @@
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);
}
}