82 lines
3.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|