Files
2025-05-01 07:20:41 +09:00

131 lines
4.1 KiB
C#

using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer;
public class RewardManager : Singleton<RewardManager>
{
//private static readonly RewardManager _instance = new();
//public static RewardManager Instance { get { return _instance; } }
//public RewardManager() { }
public async Task<Result> proceedRewardProcess(IReward rewardBase)
{
var result = await rewardBase.prepareReward();
if (result.isFail()) return result;
result = await rewardBase.addReward();
if (result.isFail()) return result;
result = await rewardBase.finalizeReward();
if (result.isFail()) return result;
return result;
}
public void postRewardProcess(IReward rewardBase)
{
rewardBase.postRewardProcess();
}
public (Result, MetaAssets.Reward?) makeRewardFromItemStr(string itemIdStr, string countStr)
{
var result = new Result();
string err_msg = string.Empty;
result = convertStrToItemId(itemIdStr, out int itemId);
if(result.isFail()) return (result, null);
result = convertStrToItemCount(countStr, out int count);
if (result.isFail()) return (result, null);
if (false == MetaData.Instance._ItemTable.TryGetValue(itemId, out ItemMetaData? itemData))
{
err_msg = $"Not found meta of Item !!! : ItemMetaId:{itemId}";
result.setFail(ServerErrorCode.CartMetaDataNotFound, err_msg);
Log.getLogger().error(err_msg);
return (result, null);
}
MetaAssets.Reward reward = ItemMetaHelper.convertFromItemIdToReward(itemData.ItemId, count);
return (result, reward);
}
public Result makeItemIdFromStr(string itemIdStr, string countStr, out int itemId, out int count)
{
var result = new Result();
itemId = 0;
count = 0;
result = convertStrToItemId(itemIdStr, out itemId);
if (result.isFail()) return result;
result = convertStrToItemCount(countStr, out count);
if (result.isFail()) return result;
return result;
}
private Result convertStrToItemId(string itemIdStr, out int itemId)
{
var result = new Result();
if (int.TryParse(itemIdStr, out itemId) == false)
{
var err_msg = $"convertStrToItemId {itemIdStr} is not number";
result.setFail(ServerErrorCode.ItemParsingFromStringToIntErorr, err_msg);
Log.getLogger().error(result.toBasicString());
return result;
}
return result;
}
private Result convertStrToItemCount(string countStr, out int itemCount)
{
var result = new Result();
if (int.TryParse(countStr, out itemCount) == false)
{
var err_msg = $"convertStrToItemCount {countStr} is not number";
result.setFail(ServerErrorCode.ItemValueParsingFromStringToIntErorr, err_msg);
Log.getLogger().error(err_msg);
return result;
}
return result;
}
public (Result, List<MetaAssets.RewardMetaData>?) makeRewardsInfo(string rewardGroupIdStr)
{
var result = new Result();
string err_msg = string.Empty;
if (int.TryParse(rewardGroupIdStr, out int rewardGroupId) == false)
{
err_msg = $"makeRewardInfo {rewardGroupIdStr} is not number";
result.setFail(ServerErrorCode.RewardGroupIdParsingFromStringToIntErorr, err_msg);
Log.getLogger().error(result.toBasicString());
return (result, null);
}
if (false == MetaData.Instance._RewardMetaTable.TryGetValue(rewardGroupId, out var rewardDatas))
{
err_msg = $"_RewardDataTable not exist info rewardGroupId = {rewardGroupId}";
result.setFail(ServerErrorCode.RewardInfoNotExist, err_msg);
Log.getLogger().error(result.toBasicString());
return (result, null);
}
return (result, rewardDatas);
}
}