using GameServer.Contents.GameMode.Mode_Battle.Manage; using Google.Protobuf.WellKnownTypes; using Newtonsoft.Json; using ServerCommon; using ServerCore; namespace GameServer; public static class BattleRoomNotifyHelper { public static void send_GS2C_NTF_POD_COMBAT_STATE(GameModeTPSFreeForAll battleInstanceRoom, Player player) { var ntf = makePodCombatStateNotify(battleInstanceRoom); GameServerApp.getServerLogic().onSendPacket(player, ntf); } public static void broadcast_GS2C_NTF_POD_COMBAT_STATE(GameModeTPSFreeForAll battleInstanceRoom) { var ntf = makePodCombatStateNotify(battleInstanceRoom); Log.getLogger().debug($"broadcast_GS2C_NTF_POD_COMBAT_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfPodCombatState)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } private static ClientToGame makePodCombatStateNotify(GameModeTPSFreeForAll battleInstanceRoom) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfPodCombatState = new ClientToGameMessage.Types.GS2C_NTF_POD_COMBAT_STATE(); var attribute = battleInstanceRoom.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"location attribute is null !!"); var pod_combat = attribute.m_combat_pod_mode.m_pod_combat; BattlePodCombatState state = new(); state.PodCombatGuid = pod_combat.m_anchor_guid; state.OwnerPodCombatStandGuid = pod_combat.m_source_storage_anchor_guid; state.PodCombatStateType = pod_combat.m_state; state.StatechangeTime = Timestamp.FromDateTime(pod_combat.m_state_change_time); state.CurrentPos = pod_combat.m_currenct_Pos; state.CurrentOwnerGuid = pod_combat.m_current_occupier_guid; state.CurrentTime = Timestamp.FromDateTime(DateTimeHelper.Current); ntf.Message.NtfPodCombatState.PodCombatState.Add(state); return ntf; } public static void send_GS2C_NTF_BATTLE_INSTANCE_STATE(GameModeTPSFreeForAll battleInstanceRoom, Player player) { var ntf = makeBattleInstanceStateNotify(battleInstanceRoom); Log.getLogger().debug($"send_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); GameServerApp.getServerLogic().onSendPacket(player, ntf); } public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(GameModeTPSFreeForAll battleInstanceRoom) { var ntf = makeBattleInstanceStateNotify(battleInstanceRoom); Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } private static ClientToGame makeBattleInstanceStateNotify(GameModeTPSFreeForAll battleInstanceRoom) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleInstanceState = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_INSTANCE_STATE(); ntf.Message.NtfBattleInstanceState.CreateTime = Timestamp.FromDateTime(battleInstanceRoom.m_battle_instance_event_start_time); var attribute = battleInstanceRoom.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!"); ntf.Message.NtfBattleInstanceState.CurrentRound = attribute.m_combat_pod_mode.m_current_round; ntf.Message.NtfBattleInstanceState.RoundStateStartTime = Timestamp.FromDateTime(attribute.m_combat_pod_mode.m_current_state_start_time); ntf.Message.NtfBattleInstanceState.RoundStateType = attribute.m_combat_pod_mode.m_round_state_type; ntf.Message.NtfBattleInstanceState.RewardedStep = attribute.m_combat_pod_mode.m_rewarded_step; ntf.Message.NtfBattleInstanceState.ChargedStep = attribute.m_combat_pod_mode.m_charged_step; return ntf; } public static void send_GS2C_NTF_PLAYER_DEATH(GameModeTPSFreeForAll battleInstanceRoom, string killerGuid, string deadUserGuid, Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattlePlayerDeath = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_PLAYER_DEATH(); ntf.Message.NtfBattlePlayerDeath.DeadUserGuid = deadUserGuid; ntf.Message.NtfBattlePlayerDeath.KillerUserGuid = killerGuid; Log.getLogger().debug($"send_GS2C_NTF_PLAYER_DEATH ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerDeath)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void send_GS2C_NTF_PLAYER_RESPAWN(GameModeTPSFreeForAll battleInstanceRoom, Pos pos, Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattlePlayerRespawn = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_PLAYER_RESPAWN(); ntf.Message.NtfBattlePlayerRespawn.RespawnUserGuid = player.getUserGuid(); ntf.Message.NtfBattlePlayerRespawn.Pos = pos; Log.getLogger().debug($"send_GS2C_NTF_PLAYER_RESPAWN ntf battleInstanceRoom Id : {battleInstanceRoom.getInstanceRoom().getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerRespawn)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(GameModeTPSFreeForAll battleInstanceRoom, BattleObjectInteractionLogicHandler handler) { BattleObjectInfo info = new(); info.AnchorGuid = handler.m_battle_object.m_anchor_guid; var now = DateTimeHelper.Current; info.IsActive = handler.m_battle_object.m_is_active ? BoolType.True : BoolType.False; List infos = new(); infos.Add(info); broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(battleInstanceRoom, infos); } public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(GameModeTPSFreeForAll battleInstanceRoom, List infos) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleObjectStateInfo = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_OBJECT_STATE_INFO(); ntf.Message.NtfBattleObjectStateInfo.BattleObjectInfos.AddRange(infos); Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data :{JsonConvert.SerializeObject(infos)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void send_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(List infos, Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleObjectStateInfo = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_OBJECT_STATE_INFO(); ntf.Message.NtfBattleObjectStateInfo.BattleObjectInfos.AddRange(infos); Log.getLogger().debug($"send_GS2C_NTF_BATTLE_OBJECT_STATE_INFO ntf : {JsonConvert.SerializeObject(infos)}"); GameServerApp.getServerLogic().onSendPacket(player, ntf); } public static void broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION(GameModeTPSFreeForAll battleInstanceRoom, string userGuid, string anchorGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleObjectInteraction = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_OBJECT_INTERACTION(); ntf.Message.NtfBattleObjectInteraction.AnchorGuid = anchorGuid; ntf.Message.NtfBattleObjectInteraction.UserGuid = userGuid; Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_OBJECT_INTERACTION ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleObjectInteraction)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void broadcast_GS2C_NTF_BATTLE_REWARD(GameModeTPSFreeForAll battleInstanceRoom, string acquireUserGuid, CommonResult commonResult) { if (commonResult.EntityCommonResults.Count == 0) return; if (acquireUserGuid.Equals(string.Empty)) return; ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleInstanceReward = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_INSTANCE_REWARD(); ntf.Message.NtfBattleInstanceReward.AcquireRewards = commonResult; ntf.Message.NtfBattleInstanceReward.AcquireUserGuid = acquireUserGuid; Log.getLogger().debug($"send battle reward ntf acquireUserGuid : {acquireUserGuid}, commonResult : {JsonConvert.SerializeObject(commonResult)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void send_GS2C_NTF_BATTLE_EVENT(Player player) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleEvent = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_EVENT(); ntf.Message.NtfBattleEvent.BattleEvent.AddRange(BattleInstanceManager.It.getAllProtoBattleEvents()); Log.getLogger().debug($"send battle event ntf guid : {player.getUserGuid()}, ntf : {JsonConvert.SerializeObject(ntf.Message.NtfBattleEvent)}"); GameServerApp.getServerLogic().onSendPacket(player, ntf); } public static void broadcast_GS2C_NTF_BATTLE_EVENT(List infos) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfBattleEvent = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_EVENT(); ntf.Message.NtfBattleEvent.BattleEvent.AddRange(infos); foreach (var each in GameServerApp.getServerLogic().getPlayerManager().getUsers()) { var player = each.Value; GameServerApp.getServerLogic().onSendPacket(player, ntf); } } public static void broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(GameModeTPSFreeForAll battleInstanceRoom, string leavingUserGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfPreparationForLeavingBattleInstance = new ClientToGameMessage.Types.GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE(); ntf.Message.NtfPreparationForLeavingBattleInstance.LeavingUserGuid = leavingUserGuid; Log.getLogger().debug($"broadcast_GS2C_NTF_PREPARATION_FOR_LEAVING_BATTLE_INSTANCE ntf battleInstanceRoom Id : {battleInstanceRoom.getRoomId()} data : {JsonConvert.SerializeObject(ntf.Message.NtfPreparationForLeavingBattleInstance)}"); battleInstanceRoom.getInstanceRoom().Broadcast(ntf); } public static void broadcast_GS2C_NTF_P2P_HOST_UPDATE(InstanceRoom instanceRoom, string hostUserGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfP2PHostUpdate = new ClientToGameMessage.Types.GS2C_NTF_P2P_HOST_UPDATE(); ntf.Message.NtfP2PHostUpdate.HostUserGuid = hostUserGuid; Log.getLogger().debug($"broadcast_GS2C_NTF_P2P_HOST_UPDATE ntf battleInstanceRoom Id : {instanceRoom.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfP2PHostUpdate)}"); instanceRoom.Broadcast(ntf); } public static void send_GS2C_NTF_P2P_HOST_UPDATE(Player player, string hostUserGuid) { ClientToGame ntf = new ClientToGame(); ntf.Message = new ClientToGameMessage(); ntf.Message.NtfP2PHostUpdate = new ClientToGameMessage.Types.GS2C_NTF_P2P_HOST_UPDATE(); ntf.Message.NtfP2PHostUpdate.HostUserGuid = hostUserGuid; GameServerApp.getServerLogic().onSendPacket(player, ntf); } }