using asap.core; using cfg; 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 duelFishInfos = new List(); 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(); uiService = GContext.container.Resolve(); FDM = GContext.container.Resolve(); 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 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(); 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].w) { myData = fishInfos[i]; } if (i < enemyDataCount && enemyInfos[i].w) { enemyData = enemyInfos[i]; } if (myData != null) { bool isHigh = enemyData == null || myData.p >= enemyData.p; duelFishInfos[i].text_num_score.SetValue(myData.p.ToString(), isHigh); float addMy = (1 + myData.ca) * (1 + myData.ra) - 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.p >= myData.p; duelFishInfos[i].text_num_enermy_score.SetValue(enemyData.p.ToString(), isHigh); float addEnemy = (1 + enemyData.ca) * (1 + enemyData.ra) - 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].w) { myData = fishInfos[i]; } if (i < enemyDataCount && enemyInfos[i].w) { enemyData = enemyInfos[i]; } if (myData != null) { selfCurrentPTS += myData.p; myself.Play(); } if (enemyData != null) { enemyCurrentPTS += enemyData.p; 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); } }