Files
5.24BuYu/Assets/MyGame/Framework/Tool/RedPacket/LayeredPool.cs
T
2026-10-14 19:39:24 +08:00

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;
}
}