private static void OnAskForAllianceRankingListMessageReceived(AskForAllianceRankingListMessage message, ServerSessionMessage requestMessage)
        {
            if (message.GetLocalRanking())
            {
                AllianceLocalRankingListMessage allianceLocalRankingListMessage = new AllianceLocalRankingListMessage();

                allianceLocalRankingListMessage.SetAllianceRankingList(new LogicArrayList <AllianceRankingEntry>(0));
                allianceLocalRankingListMessage.SetVillageType(message.GetVillageType());

                ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(allianceLocalRankingListMessage, requestMessage.SessionId),
                                                 ServerManager.GetProxySocket(requestMessage.SessionId));
            }
            else
            {
                AllianceRankingListMessage allianceRankingListMessage = new AllianceRankingListMessage();

                allianceRankingListMessage.SetAllianceRankingList(ScoringManager.GetAllianceRankingList(message.GetVillageType(), message.RemoveAllianceId()));
                allianceRankingListMessage.SetDiamondPrizes(ScoringManager.GetDiamondPrizes());
                allianceRankingListMessage.SetNextEndTimeSeconds(ScoringManager.GetNextEndTimeSeconds());
                allianceRankingListMessage.SetVillageType(message.GetVillageType());

                ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(allianceRankingListMessage, requestMessage.SessionId),
                                                 ServerManager.GetProxySocket(requestMessage.SessionId));
            }
        }
示例#2
0
        private void SaveState()
        {
            if (this.m_logicGameMode.GetState() == 1)
            {
                LogicJSONObject jsonObject = new LogicJSONObject(64);

                this.m_logicGameMode.SaveToJSON(jsonObject);

                ZLibHelper.CompressInZLibFormat(LogicStringUtil.GetBytes(LogicJSONParser.CreateJSONString(jsonObject, 1536)), out byte[] homeJSON);
                ServerMessageManager.SendMessage(new GameStateCallbackMessage
                {
                    AccountId              = this.m_logicGameMode.GetLevel().GetPlayerAvatar().GetId(),
                    SessionId              = this.m_session.Id,
                    LogicClientAvatar      = this.m_logicGameMode.GetLevel().GetPlayerAvatar(),
                    AvatarChanges          = this.m_avatarChangeListener.RemoveAvatarChanges(),
                    ExecutedServerCommands = new LogicArrayList <LogicServerCommand>(),
                    HomeJSON              = homeJSON,
                    RemainingShieldTime   = this.m_logicGameMode.GetShieldRemainingSeconds(),
                    RemainingGuardTime    = this.m_logicGameMode.GetGuardRemainingSeconds(),
                    NextPersonalBreakTime = this.m_logicGameMode.GetPersonalBreakCooldownSeconds(),
                    SaveTime              = TimeUtil.GetTimestamp()
                }, 9);
            }
            else
            {
                ServerMessageManager.SendMessage(new GameStateCallbackMessage
                {
                    AccountId         = this.m_logicGameMode.GetLevel().GetPlayerAvatar().GetId(),
                    SessionId         = this.m_session.Id,
                    LogicClientAvatar = this.m_logicGameMode.GetLevel().GetPlayerAvatar(),
                    AvatarChanges     = this.m_avatarChangeListener.RemoveAvatarChanges()
                }, 9);
            }
        }
示例#3
0
        private static void Update()
        {
            while (true)
            {
                Task t1 = ((ScoringSeason)ScoringManager.m_currentSeason).Update();
                Task t2 = ((ScoringSeason)ScoringManager.m_lastSeason)?.Update();

                t1.Wait();
                t2?.Wait();

                if (((ScoringSeason)ScoringManager.m_currentSeason).IsEnded())
                {
                    DateTime utcTime = DateTime.UtcNow.AddMonths(1);

                    ScoringManager.m_lastSeason    = ScoringManager.m_currentSeason;
                    ScoringManager.m_currentSeason = ScoringManager.LoadOrCreateSeason(new LogicLong(utcTime.Year, utcTime.Month));
                }

                for (int i = 1, count = ServerManager.GetServerCount(26); i < count; i++)
                {
                    ServerMessageManager.SendMessage(new ScoringSyncMessage
                    {
                        CurrentSeasonDocument = ScoringManager.m_currentSeason,
                        LastSeasonDocument    = ScoringManager.m_lastSeason,
                    }, 26, i);
                }

                Thread.Sleep(2000);
            }
        }
示例#4
0
        private static async void OnSendAllianceBookmarksFullDataToClientMessageReceived(SendAllianceBookmarksFullDataToClientMessage message)
        {
            AllianceBookmarksFullDataMessage allianceBookmarksFullDataMessage = new AllianceBookmarksFullDataMessage();

            allianceBookmarksFullDataMessage.SetAlliances(await SearchManager.GetAllianceHeaderList(message.AllianceIds));
            ServerMessageManager.SendMessage(SearchMessageManager.CreateForwardLogicMessage(allianceBookmarksFullDataMessage, message.SessionId), ServerManager.GetProxySocket(message.SessionId));
        }
        public static void OnStartServerSessionMessageReceived(StartServerSessionMessage message)
        {
            if (GameModeClusterManager.m_sessionClusters.ContainsKey(message.SessionId))
            {
                throw new Exception("GameModeClusterManager.onStartSessionMessageReceived: session already started!");
            }

            GameModeCluster gameModeCluster = GameModeClusterManager.GetFastestCluster();

            if (gameModeCluster != null)
            {
                GameModeClusterManager.m_sessionClusters.Add(message.SessionId, gameModeCluster);
                gameModeCluster.SendMessage(message);
            }
            else
            {
                if (message.BindRequestMessage != null)
                {
                    ServerRequestManager.SendResponse(new BindServerSocketResponseMessage(), message.BindRequestMessage);
                }
                ServerMessageManager.SendMessage(new StartServerSessionFailedMessage
                {
                    SessionId = message.SessionId
                }, message.Sender);
            }
        }
        private void OnAvatarReceived(ServerRequestArgs args)
        {
            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
            {
                this.LogicClientAvatar = ((AvatarResponseMessage)args.ResponseMessage).LogicClientAvatar;

                if (AllianceManager.TryGet(this.LogicClientAvatar.GetAllianceId(), out Alliance avatarAlliance) && avatarAlliance.Members.ContainsKey(this.AccountId))
                {
                    this.Alliance = avatarAlliance;
                    this.Alliance.AddOnlineMember(this.AccountId, this);

                    this.SendPiranhaMessage(this.Alliance.GetAllianceFulEntryUpdateMessage(), 1);
                    this.SendPiranhaMessage(this.Alliance.GetAllianceStreamMessage(), 1);

                    AllianceMemberUtil.SetLogicClientAvatarToAllianceMemberEntry(this.LogicClientAvatar, this.Alliance.Members[this.AccountId], this.Alliance);
                    AllianceManager.Save(this.Alliance);
                }
                else
                {
                    this.SendMessage(new StopServerSessionMessage(), 1);

                    ServerMessageManager.SendMessage(new AllianceLeavedMessage
                    {
                        AccountId  = this.AccountId,
                        AllianceId = this.LogicClientAvatar.GetAllianceId()
                    }, 9);
                    AllianceSessionManager.Remove(this.Id);
                }
            }
            else
            {
                this.SendMessage(new StopServerSessionMessage(), 1);
                AllianceSessionManager.Remove(this.Id);
            }
        }
        public void RemoveAvatarStreamEntry(LogicLong streamId)
        {
            int index = this.AvatarStreamList.IndexOf(streamId);

            if (index != -1)
            {
                this.AvatarStreamList.Remove(index);

                ServerMessageManager.SendMessage(new RemoveAvatarStreamMessage
                {
                    AccountId = streamId
                }, ServerManager.GetDocumentSocket(11, this.Id));

                if (this.CurrentSession != null)
                {
                    AvatarStreamEntryRemovedMessage avatarStreamEntryRemovedMessage = new AvatarStreamEntryRemovedMessage();
                    avatarStreamEntryRemovedMessage.SetStreamEntryId(streamId);
                    this.CurrentSession.SendPiranhaMessage(avatarStreamEntryRemovedMessage, 1);
                }
                else
                {
                    GameAvatar.Save(this);
                }
            }
        }
        private static void OnAskForAvatarRankingListMessageReceived(AskForAvatarRankingListMessage message, ServerSessionMessage requestMessage)
        {
            if (message.GetVillageType() == 1)
            {
                AvatarDuelRankingListMessage avatarDuelRankingListMessage = new AvatarDuelRankingListMessage();
                LogicLong avatarId = message.RemoveAvatarId();

                avatarDuelRankingListMessage.SetAvatarRankingList(ScoringManager.GetAvatarDuelRankingList(avatarId));
                avatarDuelRankingListMessage.SetNextEndTimeSeconds(ScoringManager.GetNextEndTimeSeconds());
                avatarDuelRankingListMessage.SetSeasonMonth(ScoringManager.GetSeasonMonth());
                avatarDuelRankingListMessage.SetSeasonYear(ScoringManager.GetSeasonYear());
                avatarDuelRankingListMessage.SetLastSeasonAvatarRankingList(ScoringManager.GetLastSeasonAvatarDuelRankingList(avatarId));
                avatarDuelRankingListMessage.SetLastSeasonMonth(ScoringManager.GetLastSeasonMonth());
                avatarDuelRankingListMessage.SetLastSeasonYear(ScoringManager.GetLastSeasonYear());

                ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(avatarDuelRankingListMessage, requestMessage.SessionId),
                                                 ServerManager.GetProxySocket(requestMessage.SessionId));
            }
            else
            {
                AvatarRankingListMessage avatarRankingListMessage = new AvatarRankingListMessage();
                LogicLong avatarId = message.RemoveAvatarId();

                avatarRankingListMessage.SetAvatarRankingList(ScoringManager.GetAvatarRankingList(avatarId));
                avatarRankingListMessage.SetNextEndTimeSeconds(ScoringManager.GetNextEndTimeSeconds());
                avatarRankingListMessage.SetSeasonMonth(ScoringManager.GetSeasonMonth());
                avatarRankingListMessage.SetSeasonYear(ScoringManager.GetSeasonYear());
                avatarRankingListMessage.SetLastSeasonAvatarRankingList(ScoringManager.GetLastSeasonAvatarRankingList(avatarId));
                avatarRankingListMessage.SetLastSeasonMonth(ScoringManager.GetLastSeasonMonth());
                avatarRankingListMessage.SetLastSeasonYear(ScoringManager.GetLastSeasonYear());

                ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(avatarRankingListMessage, requestMessage.SessionId),
                                                 ServerManager.GetProxySocket(requestMessage.SessionId));
            }
        }
        public void ChangeMemberRole(AllianceMemberEntry allianceMemberEntry, LogicAvatarAllianceRole allianceRole, LogicLong eventAvatarId, string eventAvatarName)
        {
            if (allianceMemberEntry.GetAllianceRole() != allianceRole)
            {
                bool isPromoted = allianceMemberEntry.HasLowerRoleThan(allianceRole);

                allianceMemberEntry.SetAllianceRole(allianceRole);

                LogicChangeAllianceRoleCommand logicChangeAllianceRoleCommand = new LogicChangeAllianceRoleCommand();
                logicChangeAllianceRoleCommand.SetData(this.Id, allianceRole);
                ServerMessageManager.SendMessage(new GameAllowServerCommandMessage
                {
                    AccountId     = allianceMemberEntry.GetAvatarId(),
                    ServerCommand = logicChangeAllianceRoleCommand
                }, 9);

                AllianceEventStreamEntry allianceEventStreamEntry = new AllianceEventStreamEntry();
                AllianceStreamEntryUtil.SetSenderInfo(allianceEventStreamEntry, allianceMemberEntry);

                allianceEventStreamEntry.SetEventAvatarId(eventAvatarId);
                allianceEventStreamEntry.SetEventAvatarName(eventAvatarName);
                allianceEventStreamEntry.SetEventType(isPromoted ? AllianceEventStreamEntryType.PROMOTED : AllianceEventStreamEntryType.DEMOTED);

                StreamManager.Create(this.Id, allianceEventStreamEntry);

                this.AddStreamEntry(allianceEventStreamEntry);
            }
        }
示例#10
0
        private static void OnSendAvatarStreamsToClientMessageReceived(SendAvatarStreamsToClientMessage message)
        {
            AvatarStreamMessage                avatarStreamMessage = new AvatarStreamMessage();
            LogicArrayList <LogicLong>         ids = message.StreamIds;
            LogicArrayList <AvatarStreamEntry> avatarStreamList = new LogicArrayList <AvatarStreamEntry>(ids.Size());

            for (int i = 0; i < ids.Size(); i++)
            {
                AvatarStreamEntry avatarStreamEntry = StreamManager.GetAvatarStream(ids[i]);

                if (avatarStreamEntry != null)
                {
                    avatarStreamList.Add(avatarStreamEntry);
                }
            }

            avatarStreamMessage.SetStreamEntries(avatarStreamList);
            avatarStreamMessage.Encode();

            ServerMessageManager.SendMessage(StreamMessageManager.CreateForwardLogicMessage(avatarStreamMessage, message.SessionId), ServerManager.GetProxySocket(message.SessionId));

            for (int i = 0; i < avatarStreamList.Size(); i++)
            {
                AvatarStreamEntry avatarStreamEntry = avatarStreamList[i];

                if (avatarStreamEntry.IsNew())
                {
                    avatarStreamEntry.SetNew(false);
                    StreamManager.Save(avatarStreamEntry);
                }
            }
        }
示例#11
0
        private static void OnForwardLogicMessageRequestMessageReceived(ForwardLogicRequestMessage message)
        {
            PiranhaMessage logicMessage = LogicMagicMessageFactory.Instance.CreateMessageByType(message.MessageType);

            if (logicMessage == null)
            {
                throw new Exception("logicMessage should not be NULL!");
            }

            logicMessage.GetByteStream().SetByteArray(message.MessageBytes, message.MessageLength);
            logicMessage.SetMessageVersion(message.MessageVersion);
            logicMessage.Decode();

            if (!logicMessage.IsServerToClientMessage())
            {
                switch (logicMessage.GetMessageType())
                {
                case AskForAllianceDataMessage.MESSAGE_TYPE:
                    AskForAllianceDataMessage askForAllianceDataMessage = (AskForAllianceDataMessage)logicMessage;
                    LogicLong allianceId = askForAllianceDataMessage.RemoveAllianceId();

                    if (AllianceManager.TryGet(allianceId, out Alliance alliance))
                    {
                        ServerMessageManager.SendMessage(StreamMessageManager.CreateForwardLogicMessage(alliance.GetAllianceDataMessage(), message.SessionId),
                                                         ServerManager.GetProxySocket(message.SessionId));
                    }

                    break;
                }
            }
        }
示例#12
0
        private static void OnAllianceCreateMailMessageReceived(AllianceCreateMailMessage message)
        {
            if (AllianceManager.TryGet(message.AccountId, out Alliance alliance) && alliance.Members.TryGetValue(message.MemberId, out AllianceMemberEntry senderMemberEntry))
            {
                AllianceMailAvatarStreamEntry allianceMailAvatarStreamEntry = new AllianceMailAvatarStreamEntry();

                allianceMailAvatarStreamEntry.SetSenderAvatarId(senderMemberEntry.GetAvatarId());
                allianceMailAvatarStreamEntry.SetSenderHomeId(senderMemberEntry.GetHomeId());
                allianceMailAvatarStreamEntry.SetSenderName(senderMemberEntry.GetName());
                allianceMailAvatarStreamEntry.SetSenderLevel(senderMemberEntry.GetExpLevel());
                allianceMailAvatarStreamEntry.SetSenderLeagueType(senderMemberEntry.GetLeagueType());

                allianceMailAvatarStreamEntry.SetMessage(message.Message);
                allianceMailAvatarStreamEntry.SetAllianceId(alliance.Id);
                allianceMailAvatarStreamEntry.SetAllianceName(alliance.Header.GetAllianceName());
                allianceMailAvatarStreamEntry.SetAllianceBadgeId(alliance.Header.GetAllianceBadgeId());

                foreach (AllianceMemberEntry memberEntry in alliance.Members.Values)
                {
                    ServerMessageManager.SendMessage(new CreateAvatarStreamMessage
                    {
                        AccountId = memberEntry.GetAvatarId(),
                        Entry     = allianceMailAvatarStreamEntry
                    }, 9);
                }
            }
        }
        private void AddAvatarStreamEntry(AvatarStreamEntry entry)
        {
            if (this.AvatarStreamList.Size() > 50)
            {
                this.RemoveAvatarStreamEntry(this.AvatarStreamList[0]);
            }
            this.AvatarStreamList.Add(entry.GetId());

            if (this.CurrentSession != null)
            {
                AvatarStreamEntryMessage avatarStreamEntryMessage = new AvatarStreamEntryMessage();
                avatarStreamEntryMessage.SetAvatarStreamEntry(entry);
                this.CurrentSession.SendPiranhaMessage(avatarStreamEntryMessage, 1);

                if (entry.IsNew())
                {
                    ServerMessageManager.SendMessage(new AvatarStreamSeenMessage
                    {
                        AccountId = entry.GetId()
                    }, 11);
                }
            }
            else
            {
                GameAvatar.Save(this);
            }
        }
示例#14
0
        private void CreateChallengeReplay()
        {
            string battleLog = LogicJSONParser.CreateJSONString(this.m_logicGameMode.GetLevel().GetBattleLog().GenerateAttackerJSON());

            ServerRequestManager.Create(new CreateReplayStreamRequestMessage
            {
                JSON = LogicJSONParser.CreateJSONString(this.m_logicGameMode.GetReplay().GetJson(), 1536)
            }, ServerManager.GetNextSocket(11)).OnComplete = args =>
            {
                LogicLong replayId = null;

                if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                {
                    replayId = ((CreateReplayStreamResponseMessage)args.ResponseMessage).Id;
                }

                ServerMessageManager.SendMessage(new AllianceChallengeReportMessage
                {
                    AccountId = this.m_challengeAllianceId,
                    StreamId  = this.m_challengeStreamId,
                    ReplayId  = replayId,
                    BattleLog = battleLog
                }, 11);
            };
        }
        private void OnDonateAllianceUnitMessageReceived(DonateAllianceUnitMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance            alliance = this.m_session.Alliance;
                LogicCombatItemData unitData = message.GetAllianceUnitData();

                if (!unitData.IsDonationDisabled())
                {
                    if (message.UseQuickDonate())
                    {
                        if (!LogicDataTables.GetGlobals().EnableQuickDonate() || this.m_session.LogicClientAvatar.GetDiamonds() < unitData.GetDonateCost())
                        {
                            return;
                        }
                    }
                    else
                    {
                        if (this.m_session.LogicClientAvatar.GetUnitCount(unitData) <= 0)
                        {
                            return;
                        }
                    }

                    if (alliance.StreamEntryList.IndexOf(message.GetStreamId()) != -1)
                    {
                        StreamEntry streamEntry = StreamManager.GetAllianceStream(message.GetStreamId());

                        if (streamEntry.GetStreamEntryType() == StreamEntryType.DONATE)
                        {
                            DonateStreamEntry donateStreamEntry = (DonateStreamEntry)streamEntry;

                            if (donateStreamEntry.CanAddDonation(this.m_session.AccountId, message.GetAllianceUnitData(), alliance.Header.GetAllianceLevel()))
                            {
                                donateStreamEntry.AddDonation(this.m_session.AccountId, unitData, this.m_session.LogicClientAvatar.GetUnitUpgradeLevel(unitData));
                                donateStreamEntry.SetDonationPendingRequestCount(donateStreamEntry.GetDonationPendingRequestCount() + 1);

                                StreamManager.Save(donateStreamEntry);

                                alliance.UpdateStreamEntry(donateStreamEntry);

                                if (message.UseQuickDonate())
                                {
                                    this.m_session.LogicClientAvatar.CommodityCountChangeHelper(0, unitData, -1);
                                }

                                LogicDonateAllianceUnitCommand logicDonateAllianceUnitCommand = new LogicDonateAllianceUnitCommand();
                                logicDonateAllianceUnitCommand.SetData(unitData, streamEntry.GetId(), message.UseQuickDonate());
                                ServerMessageManager.SendMessage(new GameAllowServerCommandMessage
                                {
                                    AccountId     = this.m_session.AccountId,
                                    ServerCommand = logicDonateAllianceUnitCommand
                                }, 9);
                            }
                        }
                    }
                }
            }
        }
示例#16
0
 private void SendAvatarStreamMessageToClient()
 {
     ServerMessageManager.SendMessage(new SendAvatarStreamsToClientMessage
     {
         StreamIds = this.GameAvatar.AvatarStreamList,
         SessionId = this.Id
     }, ServerManager.GetDocumentSocket(11, this.GameAvatar.Id));
 }
        private static void OnAskForLocalAvatarRankingListMessageReceived(AskForAvatarLocalRankingListMessage message, ServerSessionMessage requestMessage)
        {
            AvatarLocalRankingListMessage avatarLocalRankingListMessage = new AvatarLocalRankingListMessage();

            avatarLocalRankingListMessage.SetAvatarRankingList(new LogicArrayList <AvatarRankingEntry>(0));
            ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(avatarLocalRankingListMessage, requestMessage.SessionId),
                                             ServerManager.GetProxySocket(requestMessage.SessionId));
        }
 private void OnAskForAllianceBookmarksFullDataMessageReceived(AskForAllianceBookmarksFullDataMessage message)
 {
     ServerMessageManager.SendMessage(new SendAllianceBookmarksFullDataToClientMessage
     {
         SessionId   = this.m_session.Id,
         AllianceIds = this.m_session.GameAvatar.AllianceBookmarksList
     }, ServerManager.GetNextSocket(29));
 }
示例#19
0
 private void UpdateLiveReplay(int clientSubTick, LogicArrayList <LogicCommand> commands)
 {
     ServerMessageManager.SendMessage(new ClientUpdateLiveReplayMessage
     {
         AccountId = this.m_liveReplayId,
         SubTick   = clientSubTick,
         Commands  = commands
     }, 9);
 }
        private static void OnGameSpectateLiveReplayMessageReceived(GameSpectateLiveReplayMessage message)
        {
            if (GameSessionManager.TryGet(message.SessionId, out GameSession session))
            {
                ServerRequestManager.Create(new LiveReplayAddSpectatorRequestMessage
                {
                    LiveReplayId = message.LiveReplayId,
                    SlotId       = message.IsEnemy ? 1 : 0,
                    SessionId    = session.Id
                }, ServerManager.GetDocumentSocket(9, message.LiveReplayId)).OnComplete = args =>
                {
                    if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                    {
                        if (session.IsDestructed())
                        {
                            ServerMessageManager.SendMessage(new LiveReplayRemoveSpectatorMessage
                            {
                                AccountId = message.LiveReplayId,
                                SessionId = session.Id
                            }, 9);
                        }
                        else
                        {
                            session.DestructGameState();
                            session.SpectateLiveReplayId     = message.LiveReplayId;
                            session.SpectateLiveReplaySlotId = message.IsEnemy ? 1 : 0;
                        }
                    }
                    else if (!session.IsDestructed())
                    {
                        LiveReplayFailedMessage liveReplayFailedMessage = new LiveReplayFailedMessage();

                        if (args.ErrorCode == ServerRequestError.Success)
                        {
                            LiveReplayAddSpectatorResponseMessage responseMessage = (LiveReplayAddSpectatorResponseMessage)args.ResponseMessage;

                            switch (responseMessage.ErrorCode)
                            {
                            case LiveReplayAddSpectatorResponseMessage.Reason.NOT_EXISTS:
                                liveReplayFailedMessage.SetReason(LiveReplayFailedMessage.Reason.GENERIC);
                                break;

                            case LiveReplayAddSpectatorResponseMessage.Reason.FULL:
                                liveReplayFailedMessage.SetReason(LiveReplayFailedMessage.Reason.NO_FREE_SLOTS);
                                break;
                            }
                        }
                        else
                        {
                            liveReplayFailedMessage.SetReason(LiveReplayFailedMessage.Reason.GENERIC);
                        }

                        session.SendPiranhaMessage(liveReplayFailedMessage, 1);
                    }
                };
            }
        }
 public override void SendClanMail(string message)
 {
     ServerMessageManager.SendMessage(new AllianceCreateMailMessage
     {
         AccountId = this.m_playerAvatar.GetAllianceId(),
         MemberId  = this.m_playerAvatar.GetId(),
         Message   = message
     }, 11);
 }
示例#22
0
        public void SendMessage(ServerSessionMessage message, int serverType)
        {
            message.SessionId = this.Id;

            if (this.m_sockets[serverType] != null)
            {
                ServerMessageManager.SendMessage(message, this.m_sockets[serverType]);
            }
        }
示例#23
0
 public override void OnReceiveCoreMessage(ServerCoreMessage message)
 {
     switch (message.GetMessageType())
     {
     case ServerMessageType.SERVER_PERFORMANCE:
         ServerMessageManager.SendMessage(new ServerPerformanceDataMessage(), message.Sender);
         break;
     }
 }
        private static void OnAskForAvatarDuelLastSeasonRankingListMessageReceived(AskForAvatarDuelLastSeasonRankingListMessage message, ServerSessionMessage requestMessage)
        {
            AvatarDuelLastSeasonRankingListMessage avatarDuelLastSeasonRankingListMessage = new AvatarDuelLastSeasonRankingListMessage();

            avatarDuelLastSeasonRankingListMessage.SetAvatarRankingList(ScoringManager.GetLastSeasonAvatarDuelRankingList(message.RemoveAvatarId()));
            avatarDuelLastSeasonRankingListMessage.SetSeasonYear(ScoringManager.GetLastSeasonYear());
            avatarDuelLastSeasonRankingListMessage.SetSeasonMonth(ScoringManager.GetLastSeasonMonth());
            ServerMessageManager.SendMessage(ScoringMessageManager.CreateForwardLogicMessage(avatarDuelLastSeasonRankingListMessage, requestMessage.SessionId),
                                             ServerManager.GetProxySocket(requestMessage.SessionId));
        }
 public override void ShareReplay(LogicLong replayId, string message)
 {
     ServerMessageManager.SendMessage(new AllianceShareReplayMessage
     {
         AccountId = this.m_playerAvatar.GetAllianceId(),
         MemberId  = this.m_playerAvatar.GetId(),
         ReplayId  = replayId,
         Message   = message
     }, 11);
 }
 private void SendSpectatorCountToStreamService()
 {
     ServerMessageManager.SendMessage(new AllianceChallengeSpectatorCountMessage
     {
         AccountId = this.m_allianceId,
         StreamId  = this.m_allianceStreamId,
         Count     = this.m_spectatorList[0].Count +
                     this.m_spectatorList[1].Count
     }, 11);
 }
示例#27
0
        public void SendPingMessage()
        {
            if (this.m_watch.IsRunning)
            {
                this.Status = ServerPerformanceStatus.OFFLINE;
            }

            ServerMessageManager.SendMessage(new PingMessage(), this.Socket);
            this.m_watch.Restart();
        }
        public static GameMode LoadMatchedAttackState(HomeSession session, GameMatchedAttackState state)
        {
            LogicClientHome   home                      = state.Home;
            LogicClientAvatar homeOwnerAvatar           = state.HomeOwnerAvatar;
            LogicClientAvatar attackerLogicClientAvatar = state.PlayerAvatar;

            int currentTimestamp            = TimeUtil.GetTimestamp();
            int secondsSinceLastSave        = state.SaveTime != -1 ? currentTimestamp - state.SaveTime : 0;
            int secondsSinceLastMaintenance = state.MaintenanceTime != -1 ? currentTimestamp - state.MaintenanceTime : 0;

            EnemyHomeDataMessage enemyHomeDataMessage = new EnemyHomeDataMessage();

            enemyHomeDataMessage.SetCurrentTimestamp(currentTimestamp);
            enemyHomeDataMessage.SetSecondsSinceLastSave(secondsSinceLastSave);
            enemyHomeDataMessage.SetSecondsSinceLastMaintenance(secondsSinceLastMaintenance);
            enemyHomeDataMessage.SetLogicClientHome(home);
            enemyHomeDataMessage.SetLogicClientAvatar(homeOwnerAvatar);
            enemyHomeDataMessage.SetAttackerLogicClientAvatar(attackerLogicClientAvatar);
            enemyHomeDataMessage.SetAttackSource(3);
            enemyHomeDataMessage.Encode();

            CompressibleStringHelper.Uncompress(home.GetCompressibleHomeJSON());
            CompressibleStringHelper.Uncompress(home.GetCompressibleCalendarJSON());
            CompressibleStringHelper.Uncompress(home.GetCompressibleGlobalJSON());

            try
            {
                GameMode gameMode = new GameMode(session);

                gameMode.m_avatarChangeListener = new AvatarChangeListener(gameMode, attackerLogicClientAvatar);
                attackerLogicClientAvatar.SetChangeListener(gameMode.m_avatarChangeListener);

                gameMode.m_logicGameMode.LoadMatchedAttackState(home, homeOwnerAvatar, attackerLogicClientAvatar, currentTimestamp, secondsSinceLastSave, secondsSinceLastMaintenance);
                gameMode.m_gameDefenderLocked = state.GameDefenderLocked;
                gameMode.m_liveReplayId       = state.LiveReplayId;

                ZLibHelper.CompressInZLibFormat(LogicStringUtil.GetBytes(LogicJSONParser.CreateJSONString(gameMode.m_logicGameMode.GetReplay().GetJson())), out byte[] streamJSON);
                ServerMessageManager.SendMessage(new InitializeLiveReplayMessage
                {
                    AccountId  = gameMode.m_liveReplayId,
                    StreamData = streamJSON
                }, 9);

                session.SendPiranhaMessage(enemyHomeDataMessage, 1);

                return(gameMode);
            }
            catch (Exception exception)
            {
                Logging.Error("GameMode.loadMatchedAttackState: exception while the loading of attack state: " + exception);
            }

            return(null);
        }
 public void AllowServerCommand(LogicServerCommand serverCommand)
 {
     foreach (long id in this.Members.Keys)
     {
         ServerMessageManager.SendMessage(new GameAllowServerCommandMessage
         {
             AccountId     = id,
             ServerCommand = serverCommand
         }, 9);
     }
 }
        public static void Start(ServerMessageManager messageManager)
        {
            Logging.SEND_LOGS = true;
            ServerMessaging.Init(messageManager);
            ServerListenSocket.Init();

            if (ServerManager.GetServerCount(0) != 0 && ServerCore.Type != 0)
            {
                ServerStatus.SetStatus(ServerStatusType.MAINTENANCE, 0, 0);
                ServerMessageManager.SendMessage(new AskForServerStatusMessage(), ServerManager.GetSocket(0, 0));
            }
        }