131 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|