备份CatanBuilding瘦身独立工程
This commit is contained in:
193
Assets/Scripts/Duel/UI/EventFishingDuelReportRewardPanel.cs
Normal file
193
Assets/Scripts/Duel/UI/EventFishingDuelReportRewardPanel.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user