초기커밋

This commit is contained in:
2025-05-01 07:20:41 +09:00
commit 98bb2e3c5c
2747 changed files with 646947 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
using Newtonsoft.Json;
using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using ServerCore;
using ServerBase;
using ServerCommon;
using ServerCommon.BusinessLogDomain;
using MetaAssets;
namespace GameServer;
public class RabbitNoticeChatHandler
{
public void MOS2GS_noticeChatSend(ServerMessage.Types.MOS2GS_NTF_NOTICE_CHAT chatMsg)
{
//OperationSystemNoticeChatType
Log.getLogger().debug("MOS2GS_noticeChatSend call start");
// 1. 메시지 체크
if (chatMsg == null)
{
var err_msg = $"chatMsg is null !!! : {nameof(ServerMessage.Types.MOS2GS_NTF_NOTICE_CHAT)}";
Log.getLogger().error(err_msg);
return;
}
//await server_logic.getNoticeChatManager().LoadDB();
var notice_type = chatMsg.NoticeType.ToString();
var chat_msgs = chatMsg.ChatMessage;
var senders = chatMsg.Sender;
Dictionary<int, string> dic_msg_by_lang = new();
Dictionary<int, string> dic_sender_by_lang = new();
foreach(var chat_msg in chat_msgs)
{
var txt = StringRuleHelper.convertStringFromBase64(chat_msg.Text);
dic_msg_by_lang.Add((int)chat_msg.LanguageType, txt);
}
foreach(var sender in senders)
{
var sender_txt = StringRuleHelper.convertStringFromBase64(sender.Text);
dic_sender_by_lang.Add((int)sender.LanguageType, sender_txt);
}
var server_logic = GameServerApp.getServerLogic();
var player_manager = server_logic.getPlayerManager();
// if (notice_type.Equals(OperationSystemNoticeChatType.CHATTING.ToString()))
// {
//일단 채팅이든 토스트든 전부 notice로 전달한다.
var users = player_manager.getUsers();
foreach (var user in users)
{
var player = user.Value;
var account_attribute = player.getEntityAttribute<AccountAttribute>();
if(account_attribute == null) continue;
if(dic_msg_by_lang.TryGetValue((int)account_attribute.LanguageType, out var chat_msg) == false)
{
var err_msg = $"dic_msg_by_lang error accountid : {account_attribute.AccountId}, langtype : {account_attribute.LanguageType}, {JsonConvert.SerializeObject(dic_msg_by_lang)}";
Log.getLogger().error(err_msg);
continue;
}
if (dic_sender_by_lang.TryGetValue((int)account_attribute.LanguageType, out var sender) == false)
{
var err_msg = $"dic_sender_by_lang error accountid : {account_attribute.AccountId}, langtype : {account_attribute.LanguageType}, {JsonConvert.SerializeObject(dic_sender_by_lang)}";
Log.getLogger().error(err_msg);
continue;
}
ChatNotifyHelper.send_S2C_NTF_CHAT(player, ChatType.Notice, sender, player.getUserNickname(), PlayerStateType.None, chat_msg);
}
Log.getLogger().debug($"MOS2GS_noticeChatSend call end userCount = {users.Count}, lang_msg : {JsonConvert.SerializeObject(dic_msg_by_lang)}, sender_msg : {JsonConvert.SerializeObject(dic_sender_by_lang)}");
// }
// else if (notice_type.Equals(OperationSystemNoticeChatType.CHATTING_TOAST.ToString()))
// {
// var err_msg = $"CHATTING_TOAST not implement !!!";
// return;
// }
//메시지에 대한 필터링을 어떻게 해야하지?
// 4. 채팅 처리
// switch (chat_type)
// {
// case ChatType.Normal:
// result = chat_action.NormalChat(request.Message);
// break;
// case ChatType.Channel:
// result = chat_action.ChannelChat(request.Message);
// break;
// case ChatType.Notice:
//result = chat_action.NoticeChat(request.Message);
// break;
// case ChatType.Whisper:
// result = await chat_action.WhisperChat(request.ToNickName, request.Message);
// break;
// case ChatType.Party:
// result = await chat_action.PartyChat(request.Message);
// break;
// if (result.isFail())
// {
// err_msg = $"Failed to trySendMail() !!! : {result.toBasicString()} - {entity_player.toBasicString()}";
// Log.getLogger().error(err_msg);
// return result;
// }
// return result;
}
}