using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; namespace GameServer; public class BattleSnapShotBusinessLog : ILogInvokerEx { private BattleSnapshotLogInfo m_info; public BattleSnapShotBusinessLog(BattleInstanceRoom battleInstanceRoom, string loadType): base(LogDomainType.BattleSnapshot) { m_info = createBattleSnapshotLogInfo(this, battleInstanceRoom, loadType); } public override bool hasLog() { return true; } protected override void fillup(ref BusinessLog.LogBody body) { body.append(m_info); } public BattleSnapshotLogInfo createBattleSnapshotLogInfo(ILogInvokerEx parent, BattleInstanceRoom battleInstanceRoom, string loadType) { var room_id = battleInstanceRoom.m_instance_room.getMap().m_room_id; BattleSnapshotLogInfo info = new(parent, room_id, loadType); var attribute = battleInstanceRoom.getEntityAttribute(); if (attribute is null) { ServerCore.Log.getLogger().warn($"attribute is null so return empty battleInstanceRoom.roomId() : {room_id}"); return info; } info.m_play_mode = battleInstanceRoom.m_play_mode; info.m_battle_instance_event_start_time = battleInstanceRoom.m_battle_instance_event_start_time; info.m_pod_combat_reward_group_id = battleInstanceRoom.m_pod_combat_reward_group_id; info.m_pod_combat_ffa_id = battleInstanceRoom.m_pod_combat_ffa_id; info.m_hot_time_reward = battleInstanceRoom.m_hot_time_reward; info.m_round_count = battleInstanceRoom.m_round_count; info.m_respawns = attribute.m_combat_pod_mode.m_respawns; info.m_pod_storages = attribute.m_combat_pod_mode.m_pod_storages; info.m_pod_combat = attribute.m_combat_pod_mode.m_pod_combat; info.m_pickup_pods = attribute.m_combat_pod_mode.m_pickup_pods; info.m_pickup_pod_generated_info.AddRange(attribute.m_combat_pod_mode.m_pickup_pod_generated_info.Values); info.m_weapons = attribute.m_combat_pod_mode.m_weapons; info.m_buffs = attribute.m_combat_pod_mode.m_buffs; info.m_round_state_type = attribute.m_combat_pod_mode.m_round_state_type; info.m_current_round = attribute.m_combat_pod_mode.m_current_round; info.m_current_state_start_time = attribute.m_combat_pod_mode.m_current_state_start_time; info.m_charged_step = attribute.m_combat_pod_mode.m_charged_step; info.m_rewarded_step = attribute.m_combat_pod_mode.m_rewarded_step; info.m_tactical_board = attribute.m_combat_pod_mode.m_tactical_board; return info; } }