using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; namespace GameServer; public class RewardManager : Singleton { //private static readonly RewardManager _instance = new(); //public static RewardManager Instance { get { return _instance; } } //public RewardManager() { } public async Task 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?) 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); } }