162 lines
5.9 KiB
C#
162 lines
5.9 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 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);
|
|
foreach (var item in v)
|
|
{
|
|
bossScoreValue += item.Amount;
|
|
}
|
|
StartCoroutine(ShowBigPrize(CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum));
|
|
}
|
|
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);
|
|
foreach (var item in v)
|
|
{
|
|
bossScoreValue += item.Amount;
|
|
}
|
|
GameManager.Instance.StartCoroutine(ShowBigPrize(CreateFishManager.Instance.currGameType.currSitData.consumeGoldNum));
|
|
}
|
|
IEnumerator ShowBigPrize(long turretNum)
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
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();
|
|
tMP_CurrBossScore.transform.parent.DOMove(CreateFishManager.Instance.currGameType.currSitData.tMP_GoldNum.transform.position, 0.5f).OnComplete(() =>
|
|
{
|
|
JiaFen?.Invoke();
|
|
|
|
Destroy(tMP_CurrBossScore.transform.parent.gameObject);
|
|
});
|
|
}
|
|
|
|
}
|