You've already forked taptap2024_GJ_chidouren
113 lines
3.4 KiB
C#
113 lines
3.4 KiB
C#
using FJson;
|
||
using Framework.Save;
|
||
using UnityEngine;
|
||
|
||
namespace System.RandomPool
|
||
{
|
||
internal class RandomLogController
|
||
{
|
||
internal class RandomLogData : SinglePersistentData<RandomLogData>
|
||
{
|
||
/// <summary>
|
||
/// 随机池抽取记录
|
||
/// </summary>
|
||
public LiteDictionary<int, LiteDictionary<int, int>> LocalPoolLog =
|
||
new LiteDictionary<int, LiteDictionary<int, int>> ();
|
||
|
||
}
|
||
|
||
private static RandomLogData _data;
|
||
|
||
internal static RandomLogData Data
|
||
{
|
||
get
|
||
{
|
||
if (_data == null)
|
||
{
|
||
_data = new RandomLogData();
|
||
if (!_data.Load ())
|
||
{
|
||
_data.LocalPoolLog = new LiteDictionary<int, LiteDictionary<int, int>> ();
|
||
}
|
||
}
|
||
return _data;
|
||
}
|
||
}
|
||
|
||
internal static LiteDictionary<int, LiteDictionary<int, int>> LocalPoolLog => Data.LocalPoolLog;
|
||
|
||
/// <summary>
|
||
/// 从随机池中取出
|
||
/// </summary>
|
||
/// <param name="poolId"></param>
|
||
/// <param name="id"></param>
|
||
/// <returns></returns>
|
||
internal static int PoolPushLog (int poolId, int id)
|
||
{
|
||
if (!LocalPoolLog.ContainsKey (poolId))
|
||
{
|
||
LocalPoolLog[poolId] = new LiteDictionary<int, int> ();
|
||
}
|
||
|
||
if (LocalPoolLog[poolId].ContainsKey (id))
|
||
{
|
||
LocalPoolLog[poolId][id] += 1;
|
||
}
|
||
else
|
||
{
|
||
LocalPoolLog[poolId][id] = 1;
|
||
}
|
||
Data.Save ();
|
||
Debug.Log ($"随机池记录增加 : 池id: {poolId} 物品ID: {id}, 数量: {LocalPoolLog[poolId][id]}");
|
||
return LocalPoolLog[poolId][id];
|
||
}
|
||
|
||
/// <summary>
|
||
/// 回收到随机池中
|
||
/// </summary>
|
||
/// <param name="poolId"></param>
|
||
/// <param name="id"></param>
|
||
internal static void PoolPullLog (int poolId, int id)
|
||
{
|
||
if (LocalPoolLog.ContainsKey (poolId) && LocalPoolLog[poolId].ContainsKey (id))
|
||
{
|
||
LocalPoolLog[poolId][id] -= 1;
|
||
Debug.Log ($"随机池记录减少 : 池id: {poolId} 物品ID: {id} , 数量: {LocalPoolLog[poolId][id]}");
|
||
}
|
||
}
|
||
|
||
internal static int GetPoolLog (int poolId, int id)
|
||
{
|
||
if (!LocalPoolLog.ContainsKey (poolId))
|
||
{
|
||
LocalPoolLog[poolId] = new LiteDictionary<int, int> ();
|
||
}
|
||
|
||
if (!LocalPoolLog[poolId].ContainsKey (id))
|
||
{
|
||
LocalPoolLog[poolId][id] = 0;
|
||
}
|
||
|
||
return LocalPoolLog[poolId][id];
|
||
}
|
||
|
||
/// <summary>
|
||
/// 用于判断是否还可以继续取出指定id
|
||
/// </summary>
|
||
/// <param name="poolId"></param>
|
||
/// <param name="id"></param>
|
||
/// <param name="maskCount"></param>
|
||
/// <returns></returns>
|
||
internal static bool IsPush (int poolId, int id, int maskCount)
|
||
{
|
||
if (maskCount == -1)
|
||
{
|
||
return true;
|
||
}
|
||
|
||
var i = GetPoolLog (poolId, id);
|
||
return i != -1 && i < maskCount;
|
||
}
|
||
|
||
}
|
||
} |