using ServerCore; using ServerBase; using static ServerMessage.Types; namespace GameServer { public class ChatNotifyHelper { public static ClientToGame makeChatMessage(ChatType chat_type, string sender_nickname, string receiver_nickname, PlayerStateType receiver_state, string message) { var noti_packet = new ClientToGame(); noti_packet.Message = new(); noti_packet.Message.Chat = new(); noti_packet.Message.Chat.Type = chat_type; noti_packet.Message.Chat.Sender = sender_nickname; noti_packet.Message.Chat.Receiver = receiver_nickname; noti_packet.Message.Chat.Receiverstate = receiver_state; noti_packet.Message.Chat.Message = message; return noti_packet; } public static bool send_S2C_NTF_CHAT(Player player, ChatType chat_type, string sender_nickname, string receiver_nickname, PlayerStateType receiver_state, string message) { var noti_packet = makeChatMessage(chat_type, sender_nickname, receiver_nickname, receiver_state, message); if (false == GameServerApp.getServerLogic().onSendPacket(player, noti_packet)) { return false; } return true; } public static bool send_S2C_NTF_CHAT_BROADCAST(Player player, ChatType chat_type, string sender_nickname, string receiver_nickname, PlayerStateType receiver_state, string message) { var noti_packet = makeChatMessage(chat_type, sender_nickname, receiver_nickname, receiver_state, message); var game_zone_action = player.getEntityAction(); NullReferenceCheckHelper.throwIfNull(game_zone_action, () => $"game_zone_action is null !!!"); game_zone_action.broadcast(player, noti_packet); return true; } public static void send_S2C_NTF_MQ_CHAT(Chat chat) { var server_logic = GameServerApp.getServerLogic(); var player_manager = server_logic.getPlayerManager(); switch (chat.Type) { case ChatType.Notice: { var players = player_manager.getUsers(); foreach (var player in players) { ChatNotifyHelper.send_S2C_NTF_CHAT(player.Value, chat.Type, chat.SenderNickName, "", PlayerStateType.None, chat.Message); } break; } case ChatType.Whisper: { if (player_manager.tryGetUserByPrimaryKey(chat.ReceiverGuid, out var found_user) == false) return; if (found_user == null) return; ChatNotifyHelper.send_S2C_NTF_CHAT(found_user, chat.Type, chat.SenderNickName, found_user.getUserNickname(), PlayerStateType.None, chat.Message); break; } case ChatType.Party: { //await PartyManager.Instance.ChatBroadcast(chat.Receiver, clientToGame); break; } default: break; } } } }