128 lines
5.4 KiB
C#
128 lines
5.4 KiB
C#
using GameServer.Contents.GameMode.Manage.PlayManage;
|
|
using MetaAssets;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
using ServerCore;
|
|
|
|
namespace GameServer;
|
|
|
|
public static class BattleInstancePlayModeHelper
|
|
{
|
|
|
|
public static BattleInstancesObject? getBattleObject(string anchorGuid, BattleInstanceSnapshotAttribute attribute, EBattleObjectType type)
|
|
{
|
|
BattleInstancesObject? battle_instance_object = null;
|
|
if (type.Equals(EBattleObjectType.Weapon))
|
|
{
|
|
battle_instance_object = getBattleObjectWeapon(anchorGuid, attribute);
|
|
}
|
|
else if (type.Equals(EBattleObjectType.Buff))
|
|
{
|
|
battle_instance_object = getBattleObjectBuff(anchorGuid, attribute);
|
|
}
|
|
else if (type.Equals(EBattleObjectType.Pod_Combat))
|
|
{
|
|
battle_instance_object = getBattleObjectPodCombat(anchorGuid, attribute);
|
|
}
|
|
else if (type.Equals(EBattleObjectType.Pod_Box))
|
|
{
|
|
battle_instance_object = getBattleObjectPickupPod(anchorGuid, attribute);
|
|
}
|
|
|
|
return battle_instance_object;
|
|
}
|
|
|
|
private static BattleInstancesObject getBattleObjectWeapon(string anchorGuid, BattleInstanceSnapshotAttribute attribute)
|
|
{
|
|
if (false == attribute.m_combat_pod_mode.m_weapons.TryGetValue(anchorGuid, out var battle_instance_object_weapon))
|
|
{
|
|
battle_instance_object_weapon = new BattleObjectWeapon(anchorGuid);
|
|
attribute.m_combat_pod_mode.m_weapons.TryAdd(anchorGuid, battle_instance_object_weapon);
|
|
}
|
|
return battle_instance_object_weapon;
|
|
}
|
|
|
|
private static BattleInstancesObject getBattleObjectBuff(string anchorGuid, BattleInstanceSnapshotAttribute attribute)
|
|
{
|
|
if (false == attribute.m_combat_pod_mode.m_buffs.TryGetValue(anchorGuid, out var battle_instance_object_buff))
|
|
{
|
|
battle_instance_object_buff = new BattleObjectBuff(anchorGuid);
|
|
attribute.m_combat_pod_mode.m_buffs.TryAdd(anchorGuid, battle_instance_object_buff);
|
|
}
|
|
return battle_instance_object_buff;
|
|
}
|
|
|
|
private static BattleInstancesObject getBattleObjectPodCombat(string anchorGuid, BattleInstanceSnapshotAttribute attribute)
|
|
{
|
|
if (false == attribute.m_combat_pod_mode.m_pod_storages.TryGetValue(anchorGuid, out var storages))
|
|
{
|
|
storages = new BattleObjectPodStorage(anchorGuid);
|
|
attribute.m_combat_pod_mode.m_pod_storages.TryAdd(anchorGuid, storages);
|
|
}
|
|
|
|
return storages;
|
|
}
|
|
|
|
private static BattleInstancesObject getBattleObjectPickupPod(string anchorGuid, BattleInstanceSnapshotAttribute attribute)
|
|
{
|
|
if (false == attribute.m_combat_pod_mode.m_pickup_pods.TryGetValue(anchorGuid, out var pickupPod))
|
|
{
|
|
Log.getLogger().warn($"not exist pickup pod so..create anchorguid : {anchorGuid}");
|
|
pickupPod = new BattleObjectPickupPod(anchorGuid);
|
|
pickupPod.m_is_active = false;
|
|
attribute.m_combat_pod_mode.m_pickup_pods.TryAdd(anchorGuid, pickupPod);
|
|
}
|
|
|
|
return pickupPod;
|
|
}
|
|
|
|
public static bool isPodCombat(BattleInstanceSnapshotAttribute attribute, string anchorGuid)
|
|
{
|
|
return attribute.m_combat_pod_mode.m_pod_combat.m_anchor_guid.Equals(anchorGuid);
|
|
}
|
|
|
|
|
|
public static (Result, BattleObjectMetaData) getBattleObjectMeta(string anchorGuid, GameModeBase battleInstanceRoom)
|
|
{
|
|
var map = battleInstanceRoom.getInstanceRoom().getMap();
|
|
string err_msg = string.Empty;
|
|
var result = new Result();
|
|
if(false == map.m_anchors.TryGetValue(anchorGuid, out var anchorInfo))
|
|
{
|
|
err_msg = $"Anchor Info Not Exist.... room_id : {map.m_room_id} anchor guid : {anchorGuid}";
|
|
result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg);
|
|
return (result, new(new BattleObjectMetaDataMutable()));
|
|
}
|
|
|
|
if (false == MapDataTable.Instance.getAnchor(anchorGuid, out var anchor))
|
|
{
|
|
err_msg = $"Not found Anchor in MapFileType !!! : anchourGuid:{anchorGuid}";
|
|
//Log.getLogger(err_msg);
|
|
result.setFail(ServerErrorCode.BattleInstanceNotExistAnchors, err_msg);
|
|
return (result, new(new BattleObjectMetaDataMutable()));
|
|
}
|
|
|
|
var table_id = anchorInfo.AnchorProp.TableId;
|
|
|
|
if (anchor.Type.Equals(BattleConstant.BATTLE_OBJECT_GROUP_ANCHOR_NAME))
|
|
{
|
|
if (false == MetaData.Instance._BattleObjectSpawnGroupMetaTable.TryGetValue(table_id, out var battle_object_spawn_group_meta))
|
|
{
|
|
err_msg = $"_BattleObjectSpawnGroupMetaTable data Not Exist.... room_id : {map.m_room_id} anchor guid : {anchorGuid}, tableId : {table_id}";
|
|
result.setFail(ServerErrorCode.BattleInstanceObjectMetaNotExist, err_msg);
|
|
return (result, new(new BattleObjectMetaDataMutable()));
|
|
}
|
|
|
|
table_id = battle_object_spawn_group_meta.BattleObjectID;
|
|
}
|
|
|
|
if (false == MetaData.Instance._BattleObjectMetaTable.TryGetValue(table_id, out var battle_object_meta))
|
|
{
|
|
err_msg = $"_BattleObjectMetaTable data Not Exist.... room_id : {map.m_room_id} anchor guid : {anchorGuid}, tableId : {table_id}";
|
|
result.setFail(ServerErrorCode.BattleInstanceObjectMetaNotExist, err_msg);
|
|
return (result, new(new BattleObjectMetaDataMutable()));
|
|
}
|
|
|
|
return (result, battle_object_meta);
|
|
}
|
|
} |