초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,147 @@
using GameServer.Contents.Battle.Reward;
using MetaAssets;
using Newtonsoft.Json;
using ServerCommon;
using ServerCore; using ServerBase;
namespace GameServer;
public class BattleObjectRewardAction : EntityActionBase
{
public BattleObjectRewardAction(EntityBase owner) : base(owner)
{
}
public override Task<Result> onInit()
{
var result = new Result();
return Task.FromResult(result);
}
public override void onClear() { }
public async Task<Result> podStorageReward(Player player, BattleInstanceSnapshotAttribute attribute, BattleObjectInteractionLogicHandler handler)
{
var result = new Result();
if (false == attribute.m_combat_pod_mode.m_pod_storages.TryGetValue(handler.m_interaction_anchor_guid, out var podStorage))
{
Log.getLogger().error($"Not exist pod storage anchor : {handler.m_interaction_anchor_guid}, player : {player.toBasicString()}");
result.setFail(ServerErrorCode.BattleInstanceObjectMetaNotExist, result.toBasicString());
return result;
}
if (1 <= podStorage.m_reward_cnt)
{
return result; //이건 에러는 아니다.
}
podStorage.m_reward_cnt++;
var pod_storage_meta = MetaData.Instance._BattlePodStorageMeta;
var reward_id = pod_storage_meta.TypeID;
var reward_count = pod_storage_meta.ObjectValue;
var battle_instance_room = getOwner() as BattleInstanceRoom;
NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!");
RewardMutable reward_metable = new();
reward_metable.Item = new();
reward_metable.Item.Id = reward_id;
reward_metable.Item.Count = reward_count * battle_instance_room.m_hot_time_reward;
MetaAssets.Reward reward = new MetaAssets.Reward(reward_metable);
List<MetaAssets.Reward> rewards = new(){reward};
IReward reward_proc = new RewardPodStorage(player, player.getUserGuid(), rewards);
result = await RewardManager.It.proceedRewardProcess(reward_proc);
if (result.isFail())
{
return result;
}
handler.m_interaction_log_info.m_rewards.AddRange(rewards);
return result;
}
public async Task<Result> pickupPodReward(Player player, BattleInstanceSnapshotAttribute attribute, BattleObjectInteractionLogicHandler handler)
{
var result = new Result();
string err_msg = string.Empty;
if (false == attribute.m_combat_pod_mode.m_pickup_pods.TryGetValue(handler.m_interaction_anchor_guid, out var pickupPod))
{
err_msg = $"Not exist pickup pod anchor : {handler.m_interaction_anchor_guid}, player : {player.toBasicString()}";
Log.getLogger().error(err_msg);
result.setFail(ServerErrorCode.BattleInstanceObjectMetaNotExist, err_msg);
return result;
}
var battle_instance_room = getOwner() as BattleInstanceRoom;
NullReferenceCheckHelper.throwIfNull(battle_instance_room, () => $"battle_instance_room is null !!!");
Int32 idx = Int32.MinValue;
Int32 group_id = 0;
string rewarded_anchor_guid = String.Empty;
foreach (var generated_info in attribute.m_combat_pod_mode.m_pickup_pod_generated_info)
{
var generated_info_tuple = generated_info.Value;
if (false == handler.m_interaction_anchor_guid.Equals(generated_info_tuple.m_anchor_guid))
{
Log.getLogger().info($"m_pickup_pod_generated_info data interaction anchor_guid : {handler.m_interaction_anchor_guid}, reward setted anchor_guid : {generated_info_tuple.m_anchor_guid} ");
continue;
}
(group_id, idx) = generated_info.Key;
rewarded_anchor_guid = generated_info_tuple.m_anchor_guid;
Log.getLogger().info($"rewarded_anchor_guid rewarded_anchor_guid : {rewarded_anchor_guid}, groupId : {group_id}, idx : {idx}");
break;
}
if (idx == Int32.MinValue) return result; //보상줄게 없다는 얘기이므로 그량 리턴
if(false == battle_instance_room.m_instance_room.getMap().getAnchors().TryGetValue(handler.m_interaction_anchor_guid, out var anchorInfo))
{
err_msg = $"not exist anchor anchor_guid : {handler.m_interaction_anchor_guid}";
Log.getLogger().error(err_msg);
result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg);
return result;
}
var table_id = anchorInfo.AnchorProp.TableId;
if (false == MetaData.Instance._BattleObjectSpawnGroupMetaTable.TryGetValue(table_id, out var battle_object_spawn_group))
{
err_msg = $"not exist _BattleObjectSpawnGroupMetaTable anchor_guid : {handler.m_interaction_anchor_guid}, tableid : {table_id}";
Log.getLogger().error(err_msg);
result.setFail(ServerErrorCode.BattleInstanceObjectMetaNotExist, err_msg);
return result;
}
var now = DateTimeHelper.Current;
var next_gen_time = now.AddSeconds(battle_object_spawn_group.RespawnTime);
PickupPodGeneratedInfo assigned_generated_info = new(group_id, idx, string.Empty, rewarded_anchor_guid, next_gen_time);
attribute.m_combat_pod_mode.m_pickup_pod_generated_info.AddOrUpdate((group_id, idx), assigned_generated_info, (key, existingValue) => assigned_generated_info);
var pickup_pod_meta = MetaData.Instance._BattlePickupPodMeta;
RewardMutable reward_metable = new();
reward_metable.Item = new();
reward_metable.Item.Id = pickup_pod_meta.TypeID;
reward_metable.Item.Count = pickup_pod_meta.ObjectValue * battle_instance_room.m_hot_time_reward;
MetaAssets.Reward reward = new MetaAssets.Reward(reward_metable);
List<MetaAssets.Reward> rewards = new(){reward};
Log.getLogger().info($"pickup pods reward : {JsonConvert.SerializeObject(rewards)}");
IReward reward_proc = new RewardPickupPod(player, player.getUserGuid(), rewards);
result = await RewardManager.It.proceedRewardProcess(reward_proc);
if (result.isFail())
{
return result;
}
handler.m_interaction_log_info.m_rewards.AddRange(rewards);
return result;
}
}