//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 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(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 invokers = new List(); // 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 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(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(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(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 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); // } // } //}