Files
caliverse_server/GameServer/Contents/GameMode/Mode-Battle/Helper/BattleRoomNotifyHelper.cs
2025-05-01 07:20:41 +09:00

250 lines
13 KiB
C#

using Google.Protobuf.WellKnownTypes;
using Newtonsoft.Json;
using ServerCore; using ServerBase;
namespace GameServer;
public static class BattleRoomNotifyHelper
{
public static void send_GS2C_NTF_POD_COMBAT_STATE(BattleInstanceRoom battleInstanceRoom, Player player)
{
var ntf = makePodCombatStateNotify(battleInstanceRoom);
GameServerApp.getServerLogic().onSendPacket(player, ntf);
}
public static void broadcast_GS2C_NTF_POD_COMBAT_STATE(BattleInstanceRoom battleInstanceRoom)
{
var ntf = makePodCombatStateNotify(battleInstanceRoom);
Log.getLogger().debug($"broadcast_GS2C_NTF_POD_COMBAT_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfPodCombatState)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
private static ClientToGame makePodCombatStateNotify(BattleInstanceRoom battleInstanceRoom)
{
ClientToGame ntf = new ClientToGame();
ntf.Message = new ClientToGameMessage();
ntf.Message.NtfPodCombatState = new ClientToGameMessage.Types.GS2C_NTF_POD_COMBAT_STATE();
var attribute = battleInstanceRoom.getEntityAttribute<BattleInstanceSnapshotAttribute>();
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(BattleInstanceRoom battleInstanceRoom, Player player)
{
var ntf = makeBattleInstanceStateNotify(battleInstanceRoom);
Log.getLogger().debug($"send_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}");
GameServerApp.getServerLogic().onSendPacket(player, ntf);
}
public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(BattleInstanceRoom battleInstanceRoom)
{
var ntf = makeBattleInstanceStateNotify(battleInstanceRoom);
Log.getLogger().debug($"broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE ntf battleInstanceRoom Id : {battleInstanceRoom.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleInstanceState)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
private static ClientToGame makeBattleInstanceStateNotify(BattleInstanceRoom 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<BattleInstanceSnapshotAttribute>();
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(BattleInstanceRoom 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.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerDeath)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
public static void send_GS2C_NTF_PLAYER_RESPAWN(BattleInstanceRoom 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.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattlePlayerRespawn)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(BattleInstanceRoom 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<BattleObjectInfo> infos = new();
infos.Add(info);
broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(battleInstanceRoom, infos);
}
public static void broadcast_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(BattleInstanceRoom battleInstanceRoom, List<BattleObjectInfo> 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.m_instance_room.getMap().m_room_id} data :{JsonConvert.SerializeObject(infos)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
public static void send_GS2C_NTF_BATTLE_OBJECT_STATE_INFO(List<BattleObjectInfo> 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(BattleInstanceRoom 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.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfBattleObjectInteraction)}");
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
public static void broadcast_GS2C_NTF_BATTLE_REWARD(BattleInstanceRoom 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.m_instance_room.Broadcast(ntf);
}
public static void broadcast_GS2C_NTF_BATTLE_INSTANCE_DESTROYED(BattleInstanceRoom battleInstanceRoom)
{
ClientToGame ntf = new ClientToGame();
ntf.Message = new ClientToGameMessage();
ntf.Message.NtfBattleInstanceDestroyed = new ClientToGameMessage.Types.GS2C_NTF_BATTLE_INSTANCE_DESTROYED();
battleInstanceRoom.m_instance_room.Broadcast(ntf);
}
public static void send_GS2C_NTF_BATTLE_EVENT(Player player)
{
if (false == BattleRoomHelper.checkBattleActive()) return;
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<BattleEventInfo> infos)
{
if (false == BattleRoomHelper.checkBattleActive()) return;
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(BattleInstanceRoom 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.m_instance_room.getMap().m_room_id} data : {JsonConvert.SerializeObject(ntf.Message.NtfPreparationForLeavingBattleInstance)}");
battleInstanceRoom.m_instance_room.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);
}
}