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 Camera ZhuCam; public override void Awake() { base.Awake(); isRotate = false; ZhuCam = GameManager.Instance.ZhuCam; action_effect_DieAward = (obj) => { tMP_CurrBossScore = obj .transform.GetChild(0).GetComponent(); }; } public override void OnEnable() { base.OnEnable(); layeredPool = null; FishResourcesData fishResourcesData; fishResourcesData = FishResourcesData.fishResourcesDatasDic[fishTypeID]; if (fishResourcesData.showAudio != null && fishResourcesData.showAudio.Count > 0) { var v = fishResourcesData.showAudio; int index = Random.Range(0, v.Count); AudioManager.Instance.PlayerFX(v[index]); } } public void BigPrizeNotFish(int num) { 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.BossGlodCoinNotFish(num); 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()); } 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,min,max); 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()); AudioManager.Instance.PlayerFX(61009); } } public bool isDieFish=false; public override void DieFish(RoomKillNotice obj = null) { isDieFish = true; //CreateFishManager.Instance.Id_DieFish_NotFX(guid); GameManager.Instance.cameraShake.ShakePresets.Explosion2D(3f, 4f, 1f); if (obj != null) { poolNum = obj.gold; } FishResourcesData fishResourcesData; fishResourcesData = FishResourcesData.fishResourcesDatasDic[fishTypeID]; if (fishResourcesData.dieAudio!=null&& fishResourcesData.dieAudio.Count>0) { var v = fishResourcesData.dieAudio; int index = Random.Range(0, v.Count); AudioManager.Instance.PlayerFX(v[index]); } } 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 OnDisable() { base.OnDisable(); if (isDieFish) { GameManager.Instance.StartCoroutine(yanchidie()); } } public float dieTime = 3f; public Vector3 v3; IEnumerator yanchidie() { yield return new WaitForSeconds(dieTime); tMP_CurrBossScore.transform.parent.DOMove(v3, 0.5f).OnComplete(() => { JiaFen?.Invoke(0); Destroy(tMP_CurrBossScore.transform.parent.gameObject); }); } }