Files
caliverse_server/GameServer/z.Backup/RabbitMQ4Game.cs
2025-05-01 07:20:41 +09:00

1204 lines
53 KiB
C#

//using GameServer.BusinessLogInvoker;
//using Google.Protobuf;
//using Nettention.Proud;
//using Newtonsoft.Json;
//using RabbitMQ.Client;
//using RabbitMQ.Client.Events;
//using ServerCommon;
//using ServerCore; using ServerBase;
//using System.Numerics;
//using System.Text;
//namespace GameServer
//{
// using static ServerMessage.Types;
// using pb = global::Google.Protobuf;
// using TimeStamp = global::Google.Protobuf.WellKnownTypes.Timestamp;
// internal class RabbitMQ4Game : RabbitMQ4Server
// {
// public const string EXCHANGE_GAMECHANNELSERVER_NAME = "allgamechannelserver";
// private IModel? _exchange_game_channelserver_channel = null;
// public const string EXCHANGE_GAMEINDUNSERVER_NAME = "allgameindunserver";
// private IModel? _exchange_game_indunserver_channel = null;
// public const string EXCHANGE_NAME = "allgameserver";
// private IModel? _exchange_channel = null;
// public const string AllEXCHANGE_NAME = "allserver";
// private IModel? _allexchange_channel = null;
// public RabbitMQ4Game(string serverName, string address, int port, string username, string password, bool useSSL)
// : base(serverName, address, port, username, password, useSSL)
// {
// }
// public bool StartConsumer4Game()
// {
// _exchange_channel = base.createExchangeChannel(EXCHANGE_NAME, ExchangeType.Fanout);
// _allexchange_channel = base.createExchangeChannel(AllEXCHANGE_NAME, ExchangeType.Fanout);
// if(GameServerApp.Instance.Config.GameServerType == EGameServerType.Indun)
// {
// _exchange_game_indunserver_channel = base.createExchangeChannel(EXCHANGE_GAMEINDUNSERVER_NAME, ExchangeType.Fanout);
// }
// else
// {
// _exchange_game_channelserver_channel = base.createExchangeChannel(EXCHANGE_GAMECHANNELSERVER_NAME, ExchangeType.Fanout);
// }
// return base.StartConsumer4Server(this.OnProcessMessage);
// }
// private async Task OnProcessMessage(ServerMessage message, BasicDeliverEventArgs ea)
// {
// Log.getLogger().debug($"consume {message}");
// // EXCHANGE_CHANNEL 메시지인 경우
// if (true == ea.Exchange.Equals(EXCHANGE_NAME, StringComparison.OrdinalIgnoreCase))
// {
// // 10초 전에 생성된 메시지는 드랍
// if (message.MessageTime.ToDateTime() < DateTime.UtcNow.AddSeconds(-10))
// {
// return;
// }
// switch (message.MsgCase)
// {
// case ServerMessage.MsgOneofCase.CallPlayersFromGroupReq:
// await HandleCallPlayersFromGroupReq(message.MessageSender, message.CallPlayersFromGroupReq);
// break;
// case ServerMessage.MsgOneofCase.ExchangeMannequinDisplayItemNoti:
// await HandleExchangeMannequinDisplayItemNoti(message.ExchangeMannequinDisplayItemNoti);
// break;
// }
// }
// else
// {
// switch (message.MsgCase)
// {
// case ServerMessage.MsgOneofCase.KickReq:
// await HandleKickReq(message.MessageSender, message.KickReq);
// break;
// case ServerMessage.MsgOneofCase.InvitePartyNoti:
// await HandleInvitePartyNoti(message.MessageSender, message.InvitePartyNoti);
// break;
// case ServerMessage.MsgOneofCase.ReplyInvitePartyNoti:
// await HandleReplyInvitePartyNoti(message.MessageSender, message.ReplyInvitePartyNoti);
// break;
// case ServerMessage.MsgOneofCase.CreatePartyNoti:
// await HandleCreatePartyNoti(message.MessageSender, message.CreatePartyNoti);
// break;
// case ServerMessage.MsgOneofCase.JoinPartyMemberNoti:
// HandleJoinPartyMemberNoti(message.JoinPartyMemberNoti);
// break;
// case ServerMessage.MsgOneofCase.LeavePartyMemberNoti:
// await HandleLeavePartyMemberNoti(message.LeavePartyMemberNoti);
// break;
// case ServerMessage.MsgOneofCase.AddPartyServerNameNoti:
// HandleAddPartyServerNameNoti(message.AddPartyServerNameNoti);
// break;
// case ServerMessage.MsgOneofCase.RemovePartyServerNameNoti:
// HandleRemovePartyServerNameNoti(message.RemovePartyServerNameNoti);
// break;
// case ServerMessage.MsgOneofCase.ChangePartyLeaderNoti:
// HandleChangePartyLeaderNoti(message.ChangePartyLeaderNoti);
// break;
// case ServerMessage.MsgOneofCase.ExchangePartyNameNoti:
// HandleExchangePartyNameNoti(message.ExchangePartyNameNoti);
// break;
// case ServerMessage.MsgOneofCase.JoiningPartyFlagResetNoti:
// await HandleJoiningPartyFlagResetNoti(message.JoiningPartyFlagResetNoti);
// break;
// case ServerMessage.MsgOneofCase.ExchangePartyMemberMarkNoti:
// HandleExchangePartyMemberMarkNoti(message.ExchangePartyMemberMarkNoti);
// break;
// case ServerMessage.MsgOneofCase.BanPartyNoti:
// await HandleBanPartyNoti(message.BanPartyNoti);
// break;
// case ServerMessage.MsgOneofCase.SummonPartyMemberNoti:
// await HandleSummonPartyMemberNoti(message.SummonPartyMemberNoti);
// break;
// case ServerMessage.MsgOneofCase.ReplySummonPartyMemberNoti:
// await HandleReplySummonPartyMemberNoti(message.ReplySummonPartyMemberNoti);
// break;
// case ServerMessage.MsgOneofCase.PartyVoteNoti:
// HandlePartyVoteNoti(message.PartyVoteNoti);
// break;
// case ServerMessage.MsgOneofCase.ReplyPartyVoteNoti:
// HandleReplyPartyVoteNoti(message.ReplyPartyVoteNoti);
// break;
// case ServerMessage.MsgOneofCase.PartyVoteResultNoti:
// HandlePartyVoteResultNoti(message.PartyVoteResultNoti);
// break;
// case ServerMessage.MsgOneofCase.PartyInstanceInfoNoti:
// HandlePartyInstanceInfoNoti(message.PartyInstanceInfoNoti);
// break;
// case ServerMessage.MsgOneofCase.PartyMemberInfoNoti:
// HandlePartyMemberInfoNoti(message.PartyMemberInfoNoti);
// break;
// case ServerMessage.MsgOneofCase.CancelSummonPartyMemberNoti:
// await HandleCancelSummonPartyMemberNoti(message.CancelSummonPartyMemberNoti);
// break;
// case ServerMessage.MsgOneofCase.PartyMemberLocationNoti:
// HandlePartyMemberLocationNoti(message.PartyMemberLocationNoti);
// break;
// }
// }
// switch (message.MsgCase)
// {
// case ServerMessage.MsgOneofCase.Chat:
// await HandleChat(message.Chat);
// break;
// case ServerMessage.MsgOneofCase.WhiteListUpdateNoti:
// await HandleWhiteListUpdateNoti();
// break;
// case ServerMessage.MsgOneofCase.BlackListUpdateNoti:
// await HandleBlackListUpdateNoti();
// break;
// case ServerMessage.MsgOneofCase.InspectionReq:
// await HandleInspectionReq(message.InspectionReq);
// break;
// case ServerMessage.MsgOneofCase.ReadyForDistroyReq:
// await HandleReadyForDistroyReq(message.ReadyForDistroyReq);
// break;
// case ServerMessage.MsgOneofCase.ChangeServerConfigReq:
// await HandleChangeServerConfigReq(message.ChangeServerConfigReq);
// break;
// case ServerMessage.MsgOneofCase.AllKickNormalUserNoti:
// await HandleAllKickNormalUserNoti(message.AllKickNormalUserNoti);
// break;
// case ServerMessage.MsgOneofCase.ReceiveMailNoti:
// await HandleReceiveMailNoti(message.ReceiveMailNoti);
// break;
// case ServerMessage.MsgOneofCase.NtfFriendLeavingHome:
// handleNtfFriendLeavingHome(message.NtfFriendLeavingHome);
// break;
// case ServerMessage.MsgOneofCase.NoticeChatNoti:
// await HandleNoticeChatNoti(message.NoticeChatNoti);
// break;
// case ServerMessage.MsgOneofCase.SystemMailNoti:
// await HandleSystemMailNoti(message.SystemMailNoti);
// break;
// default:
// break;
// }
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleChat(ServerMessage.Types.Chat chat)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// ClientToGame clientToGame = new ClientToGame();
// clientToGame.Message = new ClientToGameMessage();
// clientToGame.Message.Chat = new ClientToGameMessage.Types.Chat();
// clientToGame.Message.Chat.Type = chat.Type;
// clientToGame.Message.Chat.Sender = chat.Sender;
// clientToGame.Message.Chat.Receiver = chat.Receiver;
// clientToGame.Message.Chat.Receiverstate = chat.Receiverstate;
// clientToGame.Message.Chat.Message = chat.Message;
// if (chat.Receiver == string.Empty && chat.Type == (int)EChatType.NOTICE)
// {
// ClientSessionManager.Instance.Broadcast(clientToGame);
// }
// else if (chat.Type == (int)EChatType.WHISPER)
// {
// ClientSession? session = ClientSessionManager.Instance.GetSessionByName(chat.Receiverid);
// if (session == null)
// {
// return;
// }
// session.Send(RmiContext.ReliableSend, clientToGame);
// }
// else if (chat.Type == (int)EChatType.PARTY)
// {
// await PartyManager.Instance.ChatBroadcast(chat.Receiver, clientToGame);
// }
// else
// {
// Log.getLogger().error($"invalid Chat Type:{chat.Type}");
// }
// }
// async Task HandleKickReq(string sender, ServerMessage.Types.KickReq kick)
// {
// Log.getLogger().info($"HandleKick {sender}, {kick.Name}");
// ServerMessage message = new ServerMessage();
// message.KickRes = new ServerMessage.Types.KickRes();
// message.KickRes.ReqId = kick.ReqId;
// if (await ClientSessionManager.Instance.Kick(kick.Name) == true)
// {
// message.KickRes.ErrCode = ServerErrorCode.Success;
// }
// else
// {
// message.KickRes.ErrCode = ServerErrorCode.KickFail;
// }
// SendMessage(sender, message);
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleCallPlayersFromGroupReq(string sender, ServerMessage.Types.CallPlayersFromGroupReq callPlayer)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// Log.getLogger().info($"HandleCallplayersFromGroup {sender}, {callPlayer.UserGroup}");
// List<ClientSession> clientSessionList = new(2000);
// ClientSessionManager.Instance.ForEach((ClientSession session) =>
// {
// if (callPlayer.UserGroup == session._selectedChar?._charEntity.CharInfo.Usergroup)
// {
// clientSessionList.Add(session);
// }
// return true;
// }, CancellationToken.None);
// Pos pos = new Pos() { X = callPlayer.PosX, Y = callPlayer.PosY, Z = callPlayer.PosZ, Angle = 0 };
// DateTime expireTime = DateTime.UtcNow;
// expireTime = expireTime.AddMinutes(5);
// GameServerApp.ForcedMoveConnectInfo forcedMoveConnectInfo = new GameServerApp.ForcedMoveConnectInfo
// {
// ServerName = callPlayer.ServerName,
// RoomId = callPlayer.RoomId,
// Pos = pos,
// ExpireDate = expireTime,
// };
// GameServerApp.Instance.SetForecedMoveInfoFromGM(callPlayer.GMName, forcedMoveConnectInfo);
// ClientToGame clientToGameNoti = new ClientToGame();
// clientToGameNoti.Message = new ClientToGameMessage();
// clientToGameNoti.Message.CallPlayersFromGroupNoti = new ClientToGameMessage.Types.CallPlayersFromGroupNoti();
// clientToGameNoti.Message.CallPlayersFromGroupNoti.GMName = callPlayer.GMName;
// var array = clientSessionList.Where(x => (x._selectedChar != null && x._selectedChar.accountId != callPlayer.GMName && x._selectedChar._charEntity.CharInfo.Operator != 1)).Select(x => x.HostId).ToArray();
// GameServer.Instance.Send(array, clientToGameNoti);
// }
// async Task HandleWhiteListUpdateNoti()
// {
// Log.getLogger().info($"HandleWhiteListUpdateNoti");
// await AccountAuthorityManager.Instance.UpdateWhiteList();
// }
// async Task HandleBlackListUpdateNoti()
// {
// Log.getLogger().info($"HandleBlackListUpdateNoti");
// await AccountAuthorityManager.Instance.UpdateBlackList();
// //_ = Task.Run(async () =>
// {
// await ClientSessionManager.Instance.ForEach(async (ClientSession session) =>
// {
// if (session != null)
// {
// if (AccountAuthorityManager.Instance.IsBlackListUser(session.Id) == true)
// {
// await session.Close();
// }
// }
// return true;
// });
// Log.getLogger().info($"KickBlackListUser");
// }//);
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleInspectionReq(ServerMessage.Types.InspectionReq message)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// Log.getLogger().info($"HandleInspectionReq");
// AccountAuthorityManager.Instance.isInspection = Convert.ToBoolean(message.IsInspection);
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleReadyForDistroyReq(ServerMessage.Types.ReadyForDistroyReq message)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// Log.getLogger().info($"HandleReadyForDistroyReq");
// AccountAuthorityManager.Instance.isReadyForDistroy = Convert.ToBoolean(message.IsReadyForDistroy);
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleChangeServerConfigReq(ServerMessage.Types.ChangeServerConfigReq message)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// Log.getLogger().info($"HandleChangeServerConfigReq");
// Constant.g_MaxUser = message.MaxUser;
// }
// async Task HandleAllKickNormalUserNoti(ServerMessage.Types.AllKickNormalUserNoti message)
// {
// Log.getLogger().info($"HandleAllKickNormalUserNoti");
// if(AccountAuthorityManager.Instance.isInspection == true)
// {
// await ClientSessionManager.Instance.ForEach(async (ClientSession session) =>
// {
// if (session != null &&
// session._selectedChar != null &&
// session._selectedChar._charEntity.CharInfo.Operator != 1)
// {
// await session.Close();
// }
// return true;
// });
// Log.getLogger().info($"kick NormalUser");
// }
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleReceiveMailNoti(ServerMessage.Types.ReceiveMailNoti message)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// ClientSession? session = ClientSessionManager.Instance.GetSessionByName(message.AccountId);
// if (session == null)
// {
// return;
// }
// ClientToGame clientToGameNoti = new();
// clientToGameNoti.Message = new();
// clientToGameNoti.Message.NewMailNoti = new();
// clientToGameNoti.Message.NewMailNoti.IsLoginNoti = 0;
// session.ownedMail.newMailNoti();
// session.Send(RmiContext.ReliableSend, clientToGameNoti);
// if (session._selectedChar is not null)
// {
// }
// }
// public void handleNtfFriendLeavingHome(ServerMessage.Types.GS2C_NTF_FRIEND_LEAVING_HOME message)
// {
// ClientSession? session = ClientSessionManager.Instance.GetSessionByName(message.ReceiverId);
// if (session == null)
// {
// return;
// }
// ClientToGame clientToGame = new();
// clientToGame.Message = new();
// clientToGame.Message.NtfFriendLeavingHome = new();
// clientToGame.Message.NtfFriendLeavingHome.Guid = message.Guid;
// clientToGame.Message.NtfFriendLeavingHome.NickName = message.NickName;
// session.Send(RmiContext.ReliableSend, clientToGame);
// }
// public async Task HandleNoticeChatNoti(ServerMessage.Types.NoticeChatNoti message)
// {
// await NoticeChatManager.Instance.LoadNoticeChat();
// }
// public async Task HandleSystemMailNoti(ServerMessage.Types.SystemMailNoti message)
// {
// await SystemMailManager.Instance.LoadSystemMail();
// ClientSessionManager.Instance.AllPlayerSystemMailNoti();
// }
//#pragma warning disable CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// async Task HandleExchangeMannequinDisplayItemNoti(ServerMessage.Types.ExchangeMannequinDisplayItemNoti message)
//#pragma warning restore CS1998 // 이 비동기 메서드에는 'await' 연산자가 없으며 메서드가 동시에 실행됩니다.
// {
// Log.getLogger().info($"HandleExchangeMannequinDisplayItemNoti");
// MapManager.Instance.ExchangeMannequinDisplayItem(message.AnchorGuid, message.DisplayItemIds.ToList());
// GameServer.Instance.Map?.PropModifyNoti(message.AnchorGuid);
// }
// async Task HandleInvitePartyNoti(string sender, InvitePartyNoti noti)
// {
// Log.getLogger().info($"HandleInvitePartyNoti");
// ClientSession? session = ClientSessionManager.Instance.GetSessionByName(noti.InviteMemberAccountId);
// if (session is null)
// {
// LoginInfo? loginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.InviteMemberAccountId);
// if (loginInfo is null)
// return;
// SendInvitePartyNoti(loginInfo.CurrentServer, noti.InviteHostNickname, noti.InviteMemberAccountId);
// return;
// }
// if (session.PartyGuid != string.Empty)
// return;
// {
// ClientToGame clientToGameNoti = new ClientToGame();
// clientToGameNoti.Message = new ClientToGameMessage();
// clientToGameNoti.Message.InvitePartyNoti = new ClientToGameMessage.Types.InvitePartyNoti();
// clientToGameNoti.Message.InvitePartyNoti.InviteHostNickname = noti.InviteHostNickname;
// session.Send(RmiContext.ReliableSend, clientToGameNoti);
// }
// }
// async Task HandleReplyInvitePartyNoti(string sender, ReplyInvitePartyNoti noti)
// {
// Log.getLogger().info($"HandleInvitePartyResultNoti");
// ClientSession? InviteHostSession = ClientSessionManager.Instance.GetSessionByName(noti.InviteHostAccountId);
// if (InviteHostSession is null)
// {
// LoginInfo? hostLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.InviteHostAccountId);
// if (hostLoginInfo is null)
// {
// if (noti.Result == 1)
// SendJoiningPartyFlagResetNoti(sender, noti.InviteMemberAccountId);
// return;
// }
// SendReplyInvitePartyNoti(hostLoginInfo.CurrentServer, noti.InviteHostAccountId, noti.InviteMemberAccountId, noti.InviteMemberNickname, noti.Result);
// return;
// }
// if (noti.Result == 1)
// {
// if (InviteHostSession.PartyGuid == string.Empty)
// {
// if (InviteHostSession.isJoiningParty)
// {
// SendJoiningPartyFlagResetNoti(sender, noti.InviteMemberAccountId);
// return;
// }
// InviteHostSession.isJoiningParty = true;
// }
// }
// {
// ClientToGame clientToGameNoti = new ClientToGame();
// clientToGameNoti.Message = new ClientToGameMessage();
// clientToGameNoti.Message.ReplyInvitePartyNoti = new ClientToGameMessage.Types.ReplyInvitePartyNoti();
// clientToGameNoti.Message.ReplyInvitePartyNoti.InviteMemberNickname = noti.InviteMemberNickname;
// clientToGameNoti.Message.ReplyInvitePartyNoti.Result = noti.Result;
// InviteHostSession.Send(RmiContext.ReliableSend, clientToGameNoti);
// }
// if (noti.Result == 1)
// {
// if (InviteHostSession.PartyGuid == string.Empty)
// {
// string createPartyGuid = await PartyHandler.CreateParty(InviteHostSession);
// if (createPartyGuid == string.Empty)
// {
// InviteHostSession.isJoiningParty = false;
// SendJoiningPartyFlagResetNoti(sender, noti.InviteMemberAccountId);
// return;
// }
// SendCreatePartyNoti(sender, noti.InviteMemberAccountId, createPartyGuid);
// }
// }
// }
// async Task HandleCreatePartyNoti(string sender, CreatePartyNoti noti)
// {
// Log.getLogger().info($"HandleCreatePartyNoti");
// ClientSession? joinPartyMemberSession = ClientSessionManager.Instance.GetSessionByName(noti.JoinPartyMemberAccountId);
// if (joinPartyMemberSession is null)
// {
// LoginInfo? memberLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.JoinPartyMemberAccountId);
// if (memberLoginInfo is null)
// {
// // 파티 나가기 처리
// return;
// }
// SendCreatePartyNoti(memberLoginInfo.CurrentServer, noti.JoinPartyMemberAccountId, noti.CreatePartyGuid);
// return;
// }
// var error_code = await PartyHandler.JoinParty(noti.CreatePartyGuid, joinPartyMemberSession);
// if (error_code.isFail())
// {
// joinPartyMemberSession.isJoiningParty = false;
// // 파티 나가기 처리
// return;
// }
// }
// void HandleJoinPartyMemberNoti(JoinPartyMemberNoti noti)
// {
// Log.getLogger().info($"HandleJoinPartyMemberNoti");
// var joinMemberInfo = JsonConvert.DeserializeObject<PartyMemberInfo>(noti.JoinPartyMemberInfo);
// if (joinMemberInfo == null)
// return;
// PartyManager.Instance.AddPartyMember(noti.PartyGuid, joinMemberInfo);
// var message = Party.MakeJoinPartyMemberNoti(joinMemberInfo);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// async Task HandleLeavePartyMemberNoti(LeavePartyMemberNoti noti)
// {
// Log.getLogger().info($"HandleLeavePartyMemberNoti");
// var leave_party_member_char_entity = await GameServerApp.Instance.MainDB.GetChar(noti.LeavePartyMemberCharGuid);
// if (leave_party_member_char_entity == null)
// {
// Log.getLogger().error($"Not Found CharEntity {noti.LeavePartyMemberCharGuid}");
// return;
// }
// PartyManager.Instance.RemovePartyMember(noti.PartyGuid, leave_party_member_char_entity.CharInfo.DisplayName);
// var message = Party.MakeLeavePartyMemberNoti(leave_party_member_char_entity.CharInfo.DisplayName, noti.LeavePartyMemberCharGuid, noti.IsBan);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// var partyMemberCount = await GameServerApp.Instance.PartyStorage.GetPartyMemberCount(noti.PartyGuid);
// if (partyMemberCount < 2)
// {
// await PartyManager.Instance.DestroyParty(noti.PartyGuid);
// }
// }
// void HandleAddPartyServerNameNoti(AddPartyServerNameNoti noti)
// {
// Log.getLogger().info($"HandleAddPartyServerNameNoti");
// PartyManager.Instance.AddPartyServerName(noti.PartyGuid, noti.AddServerName);
// }
// void HandleRemovePartyServerNameNoti(RemovePartyServerNameNoti noti)
// {
// Log.getLogger().info($"HandleRemovePartyServerNameNoti");
// PartyManager.Instance.RemovePartyServerName(noti.PartyGuid, noti.RemoveServerName);
// }
// void HandleChangePartyLeaderNoti(ChangePartyLeaderNoti noti)
// {
// Log.getLogger().info($"HandleChangePartyLeaderNoti");
// PartyManager.Instance.ChangePartyLeader(noti.PartyGuid, noti.NewPartyLeaderNickname);
// var message = Party.MakeChangePartyLeaderNoti(noti.NewPartyLeaderNickname);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// void HandleExchangePartyNameNoti(ExchangePartyNameNoti noti)
// {
// Log.getLogger().info($"HandleExchangePartyNameNoti");
// PartyManager.Instance.ExchangePartyName(noti.PartyGuid, noti.NewPartyName, out _);
// var message = Party.MakeExchangePartyNameNoti(noti.NewPartyName);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// async Task HandleJoiningPartyFlagResetNoti(JoiningPartyFlagResetNoti noti)
// {
// Log.getLogger().info($"HandleJoiningPartyFlagResetNoti");
// ClientSession? targetSession = ClientSessionManager.Instance.GetSessionByName(noti.TargetAccountId);
// if (targetSession is null)
// {
// LoginInfo? memberLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.TargetAccountId);
// if (memberLoginInfo is null)
// return;
// SendJoiningPartyFlagResetNoti(memberLoginInfo.CurrentServer, noti.TargetAccountId);
// return;
// }
// targetSession.isJoiningParty = false;
// }
// void HandleExchangePartyMemberMarkNoti(ExchangePartyMemberMarkNoti noti)
// {
// Log.getLogger().info($"HandleExchangePartyMemberMarkNoti");
// PartyManager.Instance.ExchangePartyMemberMark(noti.PartyGuid, noti.MemberNickname, noti.MarkId, out var oldMarkId, out var modifiedMemberNickname);
// var message = Party.MakeExchangePartyMemberMarkNoti(noti.MemberNickname, noti.MarkId);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// if (modifiedMemberNickname.isNullOrWhiteSpace())
// {
// message = Party.MakeExchangePartyMemberMarkNoti(modifiedMemberNickname, oldMarkId);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// }
// async Task HandleBanPartyNoti(BanPartyNoti noti)
// {
// Log.getLogger().info($"HandleBanPartyNoti");
// ClientSession? banMemberSession = ClientSessionManager.Instance.GetSessionByName(noti.BanMemberAccountId);
// if (banMemberSession is null)
// {
// LoginInfo? memberLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.BanMemberAccountId);
// if (memberLoginInfo is null)
// return;
// SendBanPartyNoti(memberLoginInfo.CurrentServer, noti.PartyGuid, noti.BanMemberAccountId);
// return;
// }
// await PartyManager.Instance.LeaveParty(noti.PartyGuid, banMemberSession);
// await GameServerApp.Instance.LoginStorage.ChangePartyGuid(banMemberSession.Id, string.Empty);
// banMemberSession.PartyGuid = string.Empty;
// ClientToGame clientToGame = new();
// clientToGame.Message = new();
// clientToGame.Message.BanPartyNoti = new();
// banMemberSession.Send(RmiContext.ReliableSend, clientToGame);
// if (banMemberSession._selectedChar != null)
// {
// QuestManager.Instance.QuestCheck(banMemberSession._selectedChar, new QuestParty(EQuestEventTargetType.PARTY, EQuestEventNameType.EXITED));
// }
// }
// async Task HandleSummonPartyMemberNoti(SummonPartyMemberNoti noti)
// {
// Log.getLogger().info($"HandleSummonPartyMemberNoti");
// ClientSession? summonMemberSession = ClientSessionManager.Instance.GetSessionByName(noti.SummonMemberAccountId);
// if (summonMemberSession is null)
// {
// LoginInfo? memberLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.SummonMemberAccountId);
// if (memberLoginInfo is null)
// {
// SendReplySummonPartyMemberNoti(noti.SummonServerName, noti.SummonerAccountId, noti.SummonMemberNickname, SummonPartyMemberResultType.LogOut);
// return;
// }
// SendSummonPartyMemberNoti(memberLoginInfo.CurrentServer, noti.SummonerAccountId, noti.SummonMemberAccountId, noti.SummonMemberNickname, noti.SummonServerName, noti.SummonPos);
// return;
// }
// if (summonMemberSession.PartyGuid == string.Empty)
// {
// SendReplySummonPartyMemberNoti(noti.SummonServerName, noti.SummonerAccountId, noti.SummonMemberNickname, SummonPartyMemberResultType.LeaveParty);
// return;
// }
// summonMemberSession.SummonWorldName = noti.SummonServerName;
// summonMemberSession.SummonPos = noti.SummonPos;
// summonMemberSession.SummonerAccountId = noti.SummonerAccountId;
// {
// ClientToGame clientToGameNoti = new ClientToGame();
// clientToGameNoti.Message = new ClientToGameMessage();
// clientToGameNoti.Message.SummonPartyMemberNoti = new ClientToGameMessage.Types.SummonPartyMemberNoti();
// summonMemberSession.Send(RmiContext.ReliableSend, clientToGameNoti);
// }
// }
// async Task HandleReplySummonPartyMemberNoti(ReplySummonPartyMemberNoti noti)
// {
// Log.getLogger().info($"HandleReplySummonPartyMemberNoti");
// ClientSession? summonerSession = ClientSessionManager.Instance.GetSessionByName(noti.SummonerAccountId);
// if (summonerSession is null)
// {
// LoginInfo? memberLoginInfo = await GameServerApp.Instance.LoginStorage.GetLoginInfo(noti.SummonerAccountId);
// if (memberLoginInfo is null)
// return;
// SendReplySummonPartyMemberNoti(memberLoginInfo.CurrentServer, noti.SummonerAccountId, noti.SummonMemberNickname, noti.Result);
// return;
// }
// if(summonerSession._selectedChar == null)
// {
// return;
// }
// List<ILogInvoker> invokers = new List<ILogInvoker>();
// ClientToGame clientToGameNoti = new ClientToGame();
// clientToGameNoti.Message = new ClientToGameMessage();
// clientToGameNoti.Message.ReplySummonPartyMemberNoti = new ClientToGameMessage.Types.ReplySummonPartyMemberNoti();
// clientToGameNoti.Message.ReplySummonPartyMemberNoti.SummonMemberNickname = noti.SummonMemberNickname;
// clientToGameNoti.Message.ReplySummonPartyMemberNoti.Result = noti.Result;
// if (noti.Result != SummonPartyMemberResultType.Accept)
// {
// // 소환석 복구
// List<DBDocumentInfo> dBDocumentInfos = new();
// summonerSession._selectedChar._inventory.CopyInventoryEntityForTransaction(out var newInventoryEntity);
// if (summonerSession._selectedChar._inventory.AddItem(ServerCommon.Constant.PARTY_MEMBER_SUMMON_ITEM_ID, 1, newInventoryEntity, out var addItems, out var errorCode, out var itemlogDatas))
// {
// dBDocumentInfos.Add(new DBDocumentInfo(newInventoryEntity.DocumentForUpdate(), EDBExecuteType.Update));
// foreach (var addItem in addItems)
// {
// dBDocumentInfos.Add(new DBDocumentInfo(addItem.DocumentForUpdate(), EDBExecuteType.Update));
// }
// if (await GameServerApp.Instance.MainDB.Transaction(dBDocumentInfos, 2))
// {
// summonerSession._selectedChar._inventory.UpdateInventoryDBToMemory(newInventoryEntity.DocumentForUpdate());
// summonerSession._selectedChar._inventory.UpdateItemDBToMemory(addItems);
// foreach (var addItem in addItems)
// {
// clientToGameNoti.Message.ReplySummonPartyMemberNoti.Items.Add(addItem.ConvetToItem());
// }
// foreach (var itemInfoLog in itemlogDatas)
// {
// invokers.Add(new ItemLog(itemInfoLog));
// }
// }
// }
// }
// summonerSession.Send(RmiContext.ReliableSend, clientToGameNoti);
// var log_action = new LogActionEx(LogActionType.PartySummonMemberReply);
// BusinessLogger.collectLogs(log_action, summonerSession._selectedChar, invokers);
// }
// void HandlePartyVoteNoti(PartyVoteNoti noti)
// {
// Log.getLogger().info($"HandlePartyVoteNoti");
// var message = Party.MakePartyVoteNoti(noti.VoteInfo);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// PartyManager.Instance.WaitReplyPartyVote(noti.PartyGuid);
// }
// void HandleReplyPartyVoteNoti(ReplyPartyVoteNoti noti)
// {
// Log.getLogger().info($"HandleReplyPartyVoteNoti");
// PartyManager.Instance.Vote(noti.PartyGuid, noti.Result);
// }
// void HandlePartyVoteResultNoti(PartyVoteResultNoti noti)
// {
// Log.getLogger().info($"HandlePartyVoteResultNoti");
// var message = Party.MakePartyVoteResultNoti(noti.ResultTrue, noti.ResultFalse, noti.Abandon);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// void HandlePartyInstanceInfoNoti(PartyInstanceInfoNoti noti)
// {
// Log.getLogger().info($"HandlePartyInstanceInfoNoti");
// var partyInstanceInfo = JsonConvert.DeserializeObject<PartyInstanceInfo>(noti.PartyInstanceInfo);
// if (partyInstanceInfo == null)
// return;
// PartyManager.Instance.SetPartyInstanceInfo(noti.PartyGuid, partyInstanceInfo);
// var message = Party.MakePartyInstanceInfoNoti(partyInstanceInfo);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// void HandlePartyMemberInfoNoti(PartyMemberInfoNoti noti)
// {
// Log.getLogger().info($"HandlePartyMemberInfoNoti");
// var memberInfo = JsonConvert.DeserializeObject<PartyMemberInfo>(noti.MemberInfo);
// if (memberInfo == null)
// return;
// PartyManager.Instance.UpdatePartyMemberInfo(noti.PartyGuid, memberInfo);
// }
// async Task HandleCancelSummonPartyMemberNoti(CancelSummonPartyMemberNoti noti)
// {
// Log.getLogger().info($"HandleCancelSummonPartyMemberNoti");
// await PartyManager.Instance.cancelSummonPartyMember(noti.PartyGuid);
// }
// void HandlePartyMemberLocationNoti(PartyMemberLocationNoti noti)
// {
// Log.getLogger().info($"HandlePartyMemberLocationNoti");
// var memberInfo = JsonConvert.DeserializeObject<PartyMemberInfo>(noti.MemberInfo);
// if (memberInfo == null)
// return;
// PartyManager.Instance.UpdatePartyMemberInfo(noti.PartyGuid, memberInfo);
// var message = Party.makePartyMemberLocationNoti(memberInfo);
// PartyManager.Instance.Broadcast(noti.PartyGuid, message);
// }
// public void SendCallPlayersFromGroup(string sender, string userGroup, string GMName, Pos pos, string roomId)
// {
// ServerMessage message = new ServerMessage();
// message.MessageTime = TimeStamp.FromDateTime(DateTime.UtcNow);
// message.CallPlayersFromGroupReq = new ServerMessage.Types.CallPlayersFromGroupReq
// {
// UserGroup = userGroup,
// ServerName = GameServer.Instance.ServerName,
// GMName = GMName,
// PosX = pos.X,
// PosY = pos.Y,
// PosZ = pos.Z,
// RoomId = roomId
// };
// string messageJson = pb.JsonFormatter.Default.Format(message);
// var body = Encoding.UTF8.GetBytes(messageJson);
// if (null == _exchange_channel)
// {
// return;
// }
// _exchange_channel.BasicPublish(exchange: EXCHANGE_NAME,
// routingKey: "",
// basicProperties: null,
// body: body);
// }
// public void SendChat(string chatMessage, string sender, int chatType)
// {
// ServerMessage message = new ServerMessage();
// message.MessageTime = TimeStamp.FromDateTime(DateTime.UtcNow);
// message.Chat = new ServerMessage.Types.Chat();
// message.Chat.Sender = sender;
// message.Chat.Message = chatMessage;
// message.Chat.Receiver = "";
// message.Chat.Receiverid = "";
// message.Chat.Receiverstate = 0;
// message.Chat.Type = chatType;
// string messageJson = pb.JsonFormatter.Default.Format(message);
// var body = Encoding.UTF8.GetBytes(messageJson);
// if (null == _exchange_channel)
// {
// return;
// }
// _exchange_channel.BasicPublish( exchange: EXCHANGE_NAME,
// routingKey: "",
// basicProperties: null,
// body: body);
// }
// public void SendExchangeMannequinDisplayItemNoti(string anchorGuid, List<int> displayItmeIds)
// {
// ServerMessage message = new ServerMessage();
// message.MessageTime = TimeStamp.FromDateTime(DateTime.UtcNow);
// message.ExchangeMannequinDisplayItemNoti = new();
// message.ExchangeMannequinDisplayItemNoti.AnchorGuid = anchorGuid;
// message.ExchangeMannequinDisplayItemNoti.DisplayItemIds.AddRange(displayItmeIds);
// string messageJson = pb.JsonFormatter.Default.Format(message);
// var body = Encoding.UTF8.GetBytes(messageJson);
// if (null == _exchange_channel)
// {
// return;
// }
// _exchange_channel.BasicPublish(exchange: EXCHANGE_NAME,
// routingKey: "",
// basicProperties: null,
// body: body);
// }
// public void SendInvitePartyNoti(string destServer , string inviteHostNickname, string inviteMemberAccountId)
// {
// ServerMessage message = new ServerMessage();
// message.InvitePartyNoti = new();
// message.InvitePartyNoti.InviteHostNickname = inviteHostNickname;
// message.InvitePartyNoti.InviteMemberAccountId = inviteMemberAccountId;
// SendMessage(destServer, message);
// }
// public void SendReplyInvitePartyNoti(string destServer, string inviteHostAccountId, string inviteMemberAccountId, string inviteMemberNickname, int result)
// {
// ServerMessage message = new ServerMessage();
// message.ReplyInvitePartyNoti = new();
// message.ReplyInvitePartyNoti.InviteHostAccountId = inviteHostAccountId;
// message.ReplyInvitePartyNoti.InviteMemberAccountId = inviteMemberAccountId;
// message.ReplyInvitePartyNoti.InviteMemberNickname = inviteMemberNickname;
// message.ReplyInvitePartyNoti.Result = result;
// SendMessage(destServer, message);
// }
// public void SendJoiningPartyFlagResetNoti(string destServer, string targetAccountId)
// {
// ServerMessage message = new ServerMessage();
// message.JoiningPartyFlagResetNoti = new();
// message.JoiningPartyFlagResetNoti.TargetAccountId = targetAccountId;
// SendMessage(destServer, message);
// }
// public void SendCreatePartyNoti(string destServer, string joinPartyMemberAccountId, string createPartyGuid)
// {
// ServerMessage message = new ServerMessage();
// message.CreatePartyNoti = new();
// message.CreatePartyNoti.JoinPartyMemberAccountId = joinPartyMemberAccountId;
// message.CreatePartyNoti.CreatePartyGuid = createPartyGuid;
// SendMessage(destServer, message);
// }
// public void SendJoinPartyMemberNoti(string destServer, string partyGuid, PartyMemberInfo joinMemberInfo)
// {
// ServerMessage message = new ServerMessage();
// message.JoinPartyMemberNoti = new();
// message.JoinPartyMemberNoti.PartyGuid = partyGuid;
// message.JoinPartyMemberNoti.JoinPartyMemberInfo = JsonConvert.SerializeObject(joinMemberInfo);
// SendMessage(destServer, message);
// }
// public void SendLeavePartyMemberNoti(string destServer, string partyGuid, string leavePartyMemberCharGuid, int isBan)
// {
// ServerMessage message = new ServerMessage();
// message.LeavePartyMemberNoti = new();
// message.LeavePartyMemberNoti.PartyGuid = partyGuid;
// message.LeavePartyMemberNoti.LeavePartyMemberCharGuid = leavePartyMemberCharGuid;
// message.LeavePartyMemberNoti.IsBan = isBan;
// SendMessage(destServer, message);
// }
// public void SendAddPartyServerNameNoti(string destServer, string partyGuid, string addServerName)
// {
// ServerMessage message = new ServerMessage();
// message.AddPartyServerNameNoti = new();
// message.AddPartyServerNameNoti.PartyGuid = partyGuid;
// message.AddPartyServerNameNoti.AddServerName = addServerName;
// SendMessage(destServer, message);
// }
// public void SendRemovePartyServerNameNoti(string destServer, string partyGuid, string removeServerName)
// {
// ServerMessage message = new ServerMessage();
// message.RemovePartyServerNameNoti = new();
// message.RemovePartyServerNameNoti.PartyGuid = partyGuid;
// message.RemovePartyServerNameNoti.RemoveServerName = removeServerName;
// SendMessage(destServer, message);
// }
// public void SendChangePartyLeaderNoti(string destServer, string partyGuid, string newPartyLeaderNickname)
// {
// ServerMessage message = new ServerMessage();
// message.ChangePartyLeaderNoti = new();
// message.ChangePartyLeaderNoti.PartyGuid = partyGuid;
// message.ChangePartyLeaderNoti.NewPartyLeaderNickname = newPartyLeaderNickname;
// SendMessage(destServer, message);
// }
// public void SendExchangePartyNameNoti(string destServer, string partyGuid, string newPartyName)
// {
// ServerMessage message = new ServerMessage();
// message.ExchangePartyNameNoti = new();
// message.ExchangePartyNameNoti.PartyGuid = partyGuid;
// message.ExchangePartyNameNoti.NewPartyName = newPartyName;
// SendMessage(destServer, message);
// }
// public void SendExchangePartyMemberMarkNoti(string destServer, string partyGuid, string memberNickname, int markId)
// {
// ServerMessage message = new ServerMessage();
// message.ExchangePartyMemberMarkNoti = new();
// message.ExchangePartyMemberMarkNoti.PartyGuid = partyGuid;
// message.ExchangePartyMemberMarkNoti.MemberNickname = memberNickname;
// message.ExchangePartyMemberMarkNoti.MarkId = markId;
// SendMessage(destServer, message);
// }
// public void SendBanPartyNoti(string destServer, string partyGuid, string memberAccountId)
// {
// ServerMessage message = new ServerMessage();
// message.BanPartyNoti = new();
// message.BanPartyNoti.PartyGuid = partyGuid;
// message.BanPartyNoti.BanMemberAccountId = memberAccountId;
// SendMessage(destServer, message);
// }
// public void SendSummonPartyMemberNoti(string destServer, string summonerAccountId, string memberAccountId, string memberNickname, string serverName, Pos pos)
// {
// ServerMessage message = new ServerMessage();
// message.SummonPartyMemberNoti = new();
// message.SummonPartyMemberNoti.SummonerAccountId = summonerAccountId;
// message.SummonPartyMemberNoti.SummonMemberAccountId = memberAccountId;
// message.SummonPartyMemberNoti.SummonMemberNickname = memberNickname;
// message.SummonPartyMemberNoti.SummonServerName = serverName;
// message.SummonPartyMemberNoti.SummonPos = pos;
// SendMessage(destServer, message);
// }
// public void SendReplySummonPartyMemberNoti(string destServer, string summonerAccountId, string summonMemberNickname, SummonPartyMemberResultType result)
// {
// ServerMessage message = new ServerMessage();
// message.ReplySummonPartyMemberNoti = new();
// message.ReplySummonPartyMemberNoti.SummonerAccountId = summonerAccountId;
// message.ReplySummonPartyMemberNoti.SummonMemberNickname = summonMemberNickname;
// message.ReplySummonPartyMemberNoti.Result = result;
// SendMessage(destServer, message);
// }
// public void SendPartyVoteNoti(string destServer, string partyGuid, string voteInfo)
// {
// ServerMessage message = new ServerMessage();
// message.PartyVoteNoti = new();
// message.PartyVoteNoti.PartyGuid = partyGuid;
// message.PartyVoteNoti.VoteInfo = voteInfo;
// SendMessage(destServer, message);
// }
// public void SendReplyPartyVoteNoti(string destServer, string partyGuid, int result)
// {
// ServerMessage message = new ServerMessage();
// message.ReplyPartyVoteNoti = new();
// message.ReplyPartyVoteNoti.PartyGuid = partyGuid;
// message.ReplyPartyVoteNoti.Result = result;
// SendMessage(destServer, message);
// }
// public void SendPartyVoteResultNoti(string destServer, string partyGuid, int resultTrue, int resultFalse, int abandon)
// {
// ServerMessage message = new ServerMessage();
// message.PartyVoteResultNoti = new();
// message.PartyVoteResultNoti.PartyGuid = partyGuid;
// message.PartyVoteResultNoti.ResultTrue = resultTrue;
// message.PartyVoteResultNoti.ResultFalse = resultFalse;
// message.PartyVoteResultNoti.Abandon = abandon;
// SendMessage(destServer, message);
// }
// public void SendPartyInstanceInfoNoti(string destServer, string partyGuid, PartyInstanceInfo partyInstanceInfo)
// {
// ServerMessage message = new ServerMessage();
// message.PartyInstanceInfoNoti = new();
// message.PartyInstanceInfoNoti.PartyGuid = partyGuid;
// message.PartyInstanceInfoNoti.PartyInstanceInfo = JsonConvert.SerializeObject(partyInstanceInfo);
// SendMessage(destServer, message);
// }
// public void SendPartyChat(string destServer, string partyGuid, ClientToGame chatMessage)
// {
// ServerMessage message = new();
// message.Chat = new();
// message.Chat.Type = chatMessage.Message.Chat.Type;
// message.Chat.Sender = chatMessage.Message.Chat.Sender;
// message.Chat.Receiver = partyGuid;
// message.Chat.Receiverstate = chatMessage.Message.Chat.Receiverstate;
// message.Chat.Message = chatMessage.Message.Chat.Message;
// SendMessage(destServer, message);
// }
// public void SendPartyMemberInfoNoti(string destServer, string partyGuid, PartyMemberInfo partyMemberInfo)
// {
// ServerMessage message = new ServerMessage();
// message.PartyMemberInfoNoti = new();
// message.PartyMemberInfoNoti.PartyGuid = partyGuid;
// message.PartyMemberInfoNoti.MemberInfo = JsonConvert.SerializeObject(partyMemberInfo);
// SendMessage(destServer, message);
// }
// public void SendCancelSummonPartyMemberNoti(string destServer, string partyGuid)
// {
// ServerMessage message = new ServerMessage();
// message.CancelSummonPartyMemberNoti = new();
// message.CancelSummonPartyMemberNoti.PartyGuid = partyGuid;
// SendMessage(destServer, message);
// }
// public void sendPartyMemberLocationNoti(string destServer, string partyGuid, PartyMemberInfo partyMemberInfo)
// {
// ServerMessage message = new ServerMessage();
// message.PartyMemberLocationNoti = new();
// message.PartyMemberLocationNoti.PartyGuid = partyGuid;
// message.PartyMemberLocationNoti.MemberInfo = JsonConvert.SerializeObject(partyMemberInfo);
// SendMessage(destServer, message);
// }
// }
//}