184 lines
6.5 KiB
C#
184 lines
6.5 KiB
C#
using Assets.MyGame.Scripts.Net.APIResponses.Enum;
|
|
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<List<RedPacketRecord>> redPacketRecords = new List<List<RedPacketRecord>>();
|
|
public override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
}
|
|
public void BigPrize()
|
|
{
|
|
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<TextMeshProUGUI>();
|
|
}
|
|
|
|
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());
|
|
}
|
|
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<TextMeshProUGUI>();
|
|
}
|
|
var v = layeredPool.BossGlodCoin(sss, tMP_CurrBossScore.transform.position);
|
|
redPacketRecords.Add(v);
|
|
foreach (var item in v)
|
|
{
|
|
bossScoreValue += item.Amount;
|
|
}
|
|
GameManager.Instance.StartCoroutine(ShowBigPrize());
|
|
turretNum = CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum;
|
|
}
|
|
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 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<Sprite> handle = Addressables.LoadAssetAsync<Sprite>("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<Sprite> handle = Addressables.LoadAssetAsync<Sprite>("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<Sprite> handle = Addressables.LoadAssetAsync<Sprite>("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<Sprite> handle = Addressables.LoadAssetAsync<Sprite>("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(5f);
|
|
tMP_CurrBossScore.transform.parent.DOMove(CreateFishManager.Instance.currGameType.currSitData.tMP_GoldNum.transform.position, 0.5f).OnComplete(() =>
|
|
{
|
|
|
|
|
|
JiaFen?.Invoke();
|
|
|
|
Destroy(tMP_CurrBossScore.transform.parent.gameObject);
|
|
});
|
|
|
|
|
|
}
|
|
|
|
}
|