Files
2025-05-01 07:20:41 +09:00

82 lines
3.3 KiB
C#

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<GameZoneAction>();
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;
}
}
}
}