using Assets.MyGame.Scripts.Net.APIResponses.Enum; using Assets.MyGame.Scripts.Net.WebResponses; using DG.Tweening; using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using static MonsterMoveLine; using Random = UnityEngine.Random; public class MonsterControl_BossBase : MonsterContral { public string bossName; [Header("爆奖")] public LayeredPool layeredPool; public TextMeshProUGUI tMP_CurrBossScore;//boss分数 public long currBossScoreValue=0;//boss分数 public long bossScoreValue=0;//boss分数 public int poolNum;//奖池 public int prizeCount;//奖励数量 public Action JiaFen; public List> redPacketRecords = new List>(); public override void Awake() { base.Awake(); } public void BigPrize(int min = 2, int max = 4) { if (layeredPool==null) { layeredPool = new LayeredPool(poolNum, prizeCount); // 初始化LayeredPool,假设5个人,10000分 } if (tMP_CurrBossScore == null) { tMP_CurrBossScore = Instantiate(CreateFishManager.Instance.dieFXPrefabAwardTmp, CreateFishManager.Instance.currGameType.subPanelParent).transform.GetChild(0).GetComponent(); } var v = layeredPool.BossGlodCoinRandrom(tMP_CurrBossScore.transform.position); redPacketRecords.Add(v); foreach (var item in v) { bossScoreValue += item.Amount; } turretNum = CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum; GameManager.Instance. StartCoroutine(ShowBigPrize()); GameManager.Instance.StartCoroutine(jiafen()); } bool isJia = false; public void BigPrizeAll() { int sss = CreateFishManager.Instance.fishDatas_hashCodekey_Small.Count; prizeCount = 1; if (layeredPool == null) { layeredPool = new LayeredPool(poolNum, prizeCount); // 初始化LayeredPool,假设5个人,10000分 } if (tMP_CurrBossScore == null) { tMP_CurrBossScore = Instantiate(CreateFishManager.Instance.dieFXPrefabAwardTmp, CreateFishManager.Instance.currGameType.subPanelParent).transform.GetChild(0).GetComponent(); } var v = layeredPool.BossGlodCoin(sss, tMP_CurrBossScore.transform.position); redPacketRecords.Add(v); foreach (var item in v) { bossScoreValue += item.Amount; } turretNum = CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum; GameManager.Instance.StartCoroutine(ShowBigPrize()); GameManager.Instance.StartCoroutine(jiafen()); } long turretNum; IEnumerator ShowBigPrize() { if (!isJia) { isJia=true; yield return new WaitForSeconds(1); turretNum = Random.Range((int)(turretNum / 2), (int)turretNum + 1); while (currBossScoreValue < bossScoreValue) { currBossScoreValue += 1 * turretNum; // 每次增加1000分 if (currBossScoreValue > bossScoreValue) { currBossScoreValue = bossScoreValue; // 确保不超过总分数 } tMP_CurrBossScore.text = currBossScoreValue.ToString(); // 更新UI显示 //yield return new WaitForSeconds(0.05f); // 每0.1秒更新一次 yield return null; } isJia = false; } } public IEnumerator jiafen() { yield return new WaitForSeconds(1.5f); Transform tra = tMP_CurrBossScore.transform.parent; GameObject obj = CreateFishManager.Instance.dieFXPrefabAwardTmp_AddScore; List redRecords = new List(); redRecords = redPacketRecords[0]; redPacketRecords.RemoveAt(0); foreach (var item in redRecords) { yield return new WaitForSeconds(0.15f); Instantiate(obj, tra.position, Quaternion.identity, tra).transform.GetChild(0).GetComponent().text = CoinScript.NumAdd(item.Amount.ToString()); } } public override void DieFish(RoomKillNotice obj = null) { GameManager.Instance.cameraShake.ShakePresets.Explosion2D(3f, 4f, 1f); if (obj != null) { poolNum = obj.gold; } } public void EndBigPrize() { } public async override void Init(string pathId, float Time, bool isyuzhen = false, string yzID = "") { isyz = isyuzhen; this.yzID = yzID; //播报 switch (GameManager.Instance.gameData.currGameType) { case GameType.JQQD: break; case GameType.defaultPanel: break; case GameType.FLZY: { AsyncOperationHandle handle = Addressables.LoadAssetAsync("Assets/Art/XJMH/pw/pw_sprite/handbook/" + bossName + ".png"); await handle.Task; Sprite sprite = handle.Result; CreateFishManager.Instance. currGameType.subUIManager.ShowBoardBoss(sprite, bossName); } break; case GameType.TGXX: //还没有写呢 { AsyncOperationHandle handle = Addressables.LoadAssetAsync("Assets/Art/XJMH/pw/pw_sprite/handbook/" + bossName + ".png"); await handle.Task; Sprite sprite = handle.Result; CreateFishManager.Instance.currGameType.subUIManager.ShowBoardBoss(sprite, bossName); } break; case GameType.ZGXQ: break; case GameType.XJMH: { AsyncOperationHandle handle = Addressables.LoadAssetAsync("Assets/Art/XJMH/pw/pw_sprite/handbook/" + bossName + ".png"); await handle.Task; Sprite sprite = handle.Result; CreateFishManager.Instance.currGameType.subUIManager.ShowBoardBoss(sprite, bossName); } break; case GameType.HHWK: { AsyncOperationHandle handle = Addressables.LoadAssetAsync("Assets/Art/XJMH/pw/pw_sprite/handbook/" + bossName + ".png"); await handle.Task; Sprite sprite = handle.Result; CreateFishManager.Instance.currGameType.subUIManager.ShowBoardBoss(sprite, bossName); } break; default: break; } BezierCurveData bezierCurveData = MonsterMoveLine.dic_BezierCurveDatas[bossName + pathId]; monsterData.moveLine.Init(bezierCurveData, Time); } public override void OnDestroy() { base.OnDestroy(); GameManager.Instance.StartCoroutine(yanchidie()); } IEnumerator yanchidie() { yield return new WaitForSeconds(3f); tMP_CurrBossScore.transform.parent.DOMove(CreateFishManager.Instance.currGameType.currSitData.tMP_GoldNum.transform.position, 0.5f).OnComplete(() => { JiaFen?.Invoke(); Destroy(tMP_CurrBossScore.transform.parent.gameObject); }); } }