77 lines
2.7 KiB
C#
77 lines
2.7 KiB
C#
using System;
|
|
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
|
|
public class LayeredPool
|
|
{
|
|
// ⭐ 网络发送回调:由游戏侧(CreateFishManager)注入,框架层不再反向依赖 CreateFishManager
|
|
public static Action<int, List<RedPacketRecord>, Vector3, int> OnSendRandomDieFishID;
|
|
public static Action<List<RedPacketRecord>, Vector3, int> OnSendRandomCoinFX;
|
|
|
|
public LayeredPool(int poolNum,int prizeCount)
|
|
{
|
|
game = new CascadeRedPacketInt(poolNum, prizeCount);
|
|
}
|
|
CascadeRedPacketInt game;
|
|
public List<RedPacketRecord> BossGlodCoin(int count,Vector3 v3Point, int killerSitPos = -1)
|
|
{
|
|
if (game.HasNext())
|
|
{
|
|
|
|
int currentSubCount = count;
|
|
|
|
// 传入动态的个数
|
|
List<RedPacketRecord> result = game.GrabFullCycle(currentSubCount);
|
|
OnSendRandomDieFishID?.Invoke(currentSubCount, result, v3Point, killerSitPos);
|
|
return result;
|
|
}
|
|
return null;
|
|
}
|
|
public List<RedPacketRecord> BossGlodCoinNotFish(int count)
|
|
{
|
|
if (game.HasNext())
|
|
{
|
|
|
|
int currentSubCount = count;
|
|
|
|
// 传入动态的个数
|
|
List<RedPacketRecord> result = game.GrabFullCycle(currentSubCount);
|
|
return result;
|
|
}
|
|
return null;
|
|
}
|
|
public List<RedPacketRecord> BossGlodCoinRandrom(Vector3 v3Point, int min=3,int max=8, int killerSitPos = -1)
|
|
{
|
|
if (game.HasNext())
|
|
{
|
|
// --- 模拟动态逻辑 ---
|
|
// 假设:第1个人裂变成3个包,第2个人裂变成10个包...
|
|
// 这里用随机数模拟每次裂变个数不同 (3 到 8 之间)
|
|
int currentSubCount = UnityEngine.Random.Range(min, max + 1);
|
|
|
|
// 传入动态的个数
|
|
List<RedPacketRecord> result = game.GrabFullCycle(currentSubCount);
|
|
OnSendRandomDieFishID?.Invoke(currentSubCount, result, v3Point, killerSitPos);
|
|
return result;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 随机分包 + 随机爆金币但不死鱼:
|
|
/// 发 randomDieFish 帧(guids 为空),所有客户端只播屏幕随机位置的金币特效,场上鱼不死亡。
|
|
/// </summary>
|
|
public List<RedPacketRecord> BossGlodCoinRandromNotFish(Vector3 v3Point, int min=3, int max=8, int killerSitPos = -1)
|
|
{
|
|
if (game.HasNext())
|
|
{
|
|
int currentSubCount = UnityEngine.Random.Range(min, max + 1);
|
|
|
|
List<RedPacketRecord> result = game.GrabFullCycle(currentSubCount);
|
|
OnSendRandomCoinFX?.Invoke(result, v3Point, killerSitPos);
|
|
return result;
|
|
}
|
|
return null;
|
|
}
|
|
}
|