private void OnStartFriendlyChallengeSpectateMessageReceived(StartFriendlyChallengeSpectateMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance  alliance = this.m_session.Alliance;
                LogicLong streamId = message.GetStreamId();

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

                    if (streamEntry.GetStreamEntryType() == StreamEntryType.CHALLENGE)
                    {
                        ChallengeStreamEntry challengeStreamEntry = (ChallengeStreamEntry)streamEntry;

                        if (challengeStreamEntry.IsStarted() && challengeStreamEntry.GetLiveReplayId() != null)
                        {
                            this.m_session.SendMessage(new GameSpectateLiveReplayMessage
                            {
                                LiveReplayId = challengeStreamEntry.GetLiveReplayId(),
                                IsEnemy      = false
                            }, 9);
                            return;
                        }
                    }
                }
            }

            LiveReplayFailedMessage liveReplayFailedMessage = new LiveReplayFailedMessage();

            liveReplayFailedMessage.SetReason(LiveReplayFailedMessage.Reason.GENERIC);
            this.m_session.SendPiranhaMessage(liveReplayFailedMessage, 1);
        }
示例#2
0
        private static void OnAllianceChallengeReportMessageReceived(AllianceChallengeReportMessage message)
        {
            if (AllianceManager.TryGet(message.AccountId, out Alliance alliance))
            {
                ChallengeStreamEntry streamEntry = (ChallengeStreamEntry)StreamManager.GetAllianceStream(message.StreamId);

                if (streamEntry != null)
                {
                    ChallengeReplayStreamEntry challengeReplayStreamEntry = new ChallengeReplayStreamEntry();

                    challengeReplayStreamEntry.SetSenderAvatarId(challengeReplayStreamEntry.GetSenderAvatarId());
                    challengeReplayStreamEntry.SetSenderHomeId(challengeReplayStreamEntry.GetSenderHomeId());
                    challengeReplayStreamEntry.SetSenderName(challengeReplayStreamEntry.GetSenderName());
                    challengeReplayStreamEntry.SetSenderLevel(challengeReplayStreamEntry.GetSenderLevel());
                    challengeReplayStreamEntry.SetSenderLeagueType(challengeReplayStreamEntry.GetSenderLeagueType());
                    challengeReplayStreamEntry.SetSenderRole(challengeReplayStreamEntry.GetSenderRole());

                    challengeReplayStreamEntry.SetBattleLogJSON(message.BattleLog);
                    challengeReplayStreamEntry.SetReplayMajorVersion(LogicVersion.MAJOR_VERSION);
                    challengeReplayStreamEntry.SetReplayBuildVersion(LogicVersion.BUILD_VERSION);
                    challengeReplayStreamEntry.SetReplayContentVersion(ResourceManager.GetContentVersion());
                    challengeReplayStreamEntry.SetReplayId(message.ReplayId);

                    StreamManager.Create(alliance.Id, challengeReplayStreamEntry);

                    alliance.RemoveStreamEntry(streamEntry.GetId());
                    alliance.AddStreamEntry(challengeReplayStreamEntry);
                }
                else
                {
                    Logging.Warning("StreamMessageManager.onAllianceChallengeReportMessageReceived: pStreamEntry has been deleted. Replay ignored.");
                }
            }
        }
示例#3
0
        public override async void Process()
        {
            if (GameMode == 0)
            {
                var home     = Device.Player.Home;
                var alliance = await Resources.Alliances.GetAllianceAsync(home.AllianceInfo.Id);

                if (alliance == null)
                {
                    return;
                }

                var entry = new ChallengeStreamEntry
                {
                    Message = Message,
                    Arena   = Arena + 1
                };

                entry.SetSender(Device.Player);
                alliance.AddEntry(entry);
            }
            else
            {
                await new MatchmakeFailedMessage(Device).SendAsync();
                await new CancelMatchmakeDoneMessage(Device).SendAsync();
            }
        }
        private void OnCancelChallengeMessageReceived(CancelChallengeMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance            alliance    = this.m_session.Alliance;
                AllianceMemberEntry memberEntry = alliance.Members[this.m_session.AccountId];

                for (int i = 0; i < alliance.StreamEntryList.Size(); i++)
                {
                    StreamEntry streamEntry = StreamManager.GetAllianceStream(alliance.StreamEntryList[i]);

                    if (streamEntry != null && streamEntry.GetStreamEntryType() == StreamEntryType.CHALLENGE && streamEntry.GetSenderAvatarId().Equals(memberEntry.GetAvatarId()))
                    {
                        ChallengeStreamEntry prevChallengeStreamEntry = (ChallengeStreamEntry)streamEntry;

                        if (prevChallengeStreamEntry.IsStarted())
                        {
                            return;
                        }

                        alliance.RemoveStreamEntry(streamEntry.GetId());
                    }
                }
            }
        }
示例#5
0
        private static void OnAllianceChallengeLiveReplayIdMessageReceived(AllianceChallengeLiveReplayIdMessage message)
        {
            ChallengeStreamEntry streamEntry = (ChallengeStreamEntry)StreamManager.GetAllianceStream(message.AccountId);

            if (streamEntry != null)
            {
                streamEntry.SetLiveReplayId(message.LiveReplayId);
            }
        }
示例#6
0
        public override void Execute(Level level)
        {
            ChallangeCommand challangeCommand = this;

            try
            {
                ClientAvatar         player   = level.GetPlayerAvatar();
                Alliance             alliance = ObjectManager.GetAlliance(player.GetAllianceId());
                ChallengeStreamEntry cm       = new ChallengeStreamEntry();
                cm.SetMessage(challangeCommand.Message);
                cm.SetSenderId(player.GetId());
                cm.SetSenderName(player.GetAvatarName());
                cm.SetSenderLevel(player.GetAvatarLevel());
                ChallengeStreamEntry challengeStreamEntry = cm;
                int allianceRole = player.GetAllianceRole();
                challengeStreamEntry.SetSenderRole(allianceRole);
                challengeStreamEntry = (ChallengeStreamEntry)null;
                cm.SetId(alliance.GetChatMessages().Count + 1);
                cm.SetSenderLeagueId(player.GetLeagueId());
                alliance.AddChatMessage((UCS.Logic.StreamEntry.StreamEntry)cm);
                UCS.Logic.StreamEntry.StreamEntry      s = alliance.GetChatMessages().Find((Predicate <UCS.Logic.StreamEntry.StreamEntry>)(c => c.GetStreamEntryType() == 12));
                List <AllianceMemberEntry> .Enumerator enumerator;
                if (s != null)
                {
                    alliance.GetChatMessages().RemoveAll((Predicate <UCS.Logic.StreamEntry.StreamEntry>)(t => t == s));
                    foreach (AllianceMemberEntry allianceMember in alliance.GetAllianceMembers())
                    {
                        Level player1 = ResourcesManager.GetPlayer(allianceMember.GetAvatarId(), false);
                        if (player1.GetClient() != null)
                        {
                            new AllianceStreamEntryRemovedMessage(player1.GetClient(), s.GetId()).Send();
                        }
                    }
                    enumerator = new List <AllianceMemberEntry> .Enumerator();
                }
                foreach (AllianceMemberEntry allianceMember in alliance.GetAllianceMembers())
                {
                    Level player1 = ResourcesManager.GetPlayer(allianceMember.GetAvatarId(), false);
                    if (player1.GetClient() != null)
                    {
                        AllianceStreamEntryMessage Message = new AllianceStreamEntryMessage(player1.GetClient());
                        ChallengeStreamEntry       challengeStreamEntry1 = cm;
                        Message.SetStreamEntry((UCS.Logic.StreamEntry.StreamEntry)challengeStreamEntry1);
                        Message.Send();
                    }
                }
                enumerator = new List <AllianceMemberEntry> .Enumerator();

                player   = (ClientAvatar)null;
                alliance = (Alliance)null;
                cm       = (ChallengeStreamEntry)null;
            }
            catch (Exception ex)
            {
            }
        }
示例#7
0
        private static void OnAllianceChallengeSpectatorCountMessageReceived(AllianceChallengeSpectatorCountMessage message)
        {
            if (AllianceManager.TryGet(message.AccountId, out Alliance alliance))
            {
                ChallengeStreamEntry streamEntry = (ChallengeStreamEntry)StreamManager.GetAllianceStream(message.StreamId);

                if (streamEntry != null && streamEntry.GetSpectatorCount() != message.Count)
                {
                    streamEntry.SetSpectatorCount(message.Count);
                    alliance.UpdateStreamEntry(streamEntry);
                }
            }
        }
        private void OnAcceptFriendlyBattleMessageReceived(AcceptFriendlyBattleMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance  alliance = this.m_session.Alliance;
                LogicLong streamId = message.GetStreamId();

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

                    if (streamEntry.GetStreamEntryType() == StreamEntryType.CHALLENGE)
                    {
                        ChallengeStreamEntry challengeStreamEntry = (ChallengeStreamEntry)streamEntry;

                        if (challengeStreamEntry.IsStarted())
                        {
                            ChallengeFailedMessage challengeFailedMessage = new ChallengeFailedMessage();
                            challengeFailedMessage.SetReason(ChallengeFailedMessage.Reason.ALREADY_CLOSED);
                            this.m_session.SendPiranhaMessage(challengeFailedMessage, 1);
                            return;
                        }

                        this.m_session.SendMessage(new ChangeGameStateMessage
                        {
                            StateType           = GameStateType.CHALLENGE_ATTACK,
                            ChallengeAllianceId = alliance.Id,
                            ChallengeHomeId     = challengeStreamEntry.GetSenderAvatarId(),
                            ChallengeStreamId   = challengeStreamEntry.GetId(),
                            ChallengeHomeJSON   = challengeStreamEntry.GetSnapshotHomeJSON(),
                            ChallengeMapId      = challengeStreamEntry.IsWarLayout() ? 1 : 0
                        }, 9);

                        challengeStreamEntry.SetStarted(true);
                        alliance.UpdateStreamEntry(challengeStreamEntry);

                        return;
                    }
                }
            }

            ChallengeFailedMessage challengeFailedMessageGeneric = new ChallengeFailedMessage();

            challengeFailedMessageGeneric.SetReason(ChallengeFailedMessage.Reason.GENERIC);
            this.m_session.SendPiranhaMessage(challengeFailedMessageGeneric, 1);
        }
        public override async void Process()
        {
            var home     = Device.Player.Home;
            var alliance = await Resources.Alliances.GetAllianceAsync(home.AllianceInfo.Id);

            if (alliance != null)
            {
                var entry = new ChallengeStreamEntry
                {
                    Message = Message,
                    Arena   = Arena + 1
                };

                entry.SetSender(Device.Player);
                alliance.AddEntry(entry);
            }
        }
示例#10
0
        private static void OnAllianceChallengeRequestMessageReceived(AllianceChallengeRequestMessage message)
        {
            if (AllianceManager.TryGet(message.AccountId, out Alliance alliance) && alliance.Members.TryGetValue(message.MemberId, out AllianceMemberEntry memberEntry))
            {
                for (int i = 0; i < alliance.StreamEntryList.Size(); i++)
                {
                    StreamEntry streamEntry = StreamManager.GetAllianceStream(alliance.StreamEntryList[i]);

                    if (streamEntry != null && streamEntry.GetStreamEntryType() == StreamEntryType.CHALLENGE && streamEntry.GetSenderAvatarId().Equals(memberEntry.GetAvatarId()))
                    {
                        ChallengeStreamEntry prevChallengeStreamEntry = (ChallengeStreamEntry)streamEntry;

                        if (prevChallengeStreamEntry.IsStarted())
                        {
                            return;
                        }

                        alliance.RemoveStreamEntry(streamEntry.GetId());
                    }
                }

                ChallengeStreamEntry challengeStreamEntry = new ChallengeStreamEntry();
                AllianceStreamEntryUtil.SetSenderInfo(challengeStreamEntry, memberEntry);

                string challengeMessage = message.Message;

                if (challengeMessage.Length > 128)
                {
                    challengeMessage = challengeMessage.Substring(0, 128);
                }

                challengeStreamEntry.SetMessage(challengeMessage);
                challengeStreamEntry.SetSnapshotHomeJSON(message.HomeJSON);
                challengeStreamEntry.SetWarLayout(message.WarLayout);

                StreamManager.Create(alliance.Id, challengeStreamEntry);

                alliance.AddStreamEntry(challengeStreamEntry);

                AllianceManager.Save(alliance);
            }
        }
示例#11
0
        internal override async void Process()
        {
            try
            {
                ClientAvatar player     = this.Device.Player.Avatar;
                long         allianceID = player.AllianceId;
                Alliance     alliance   = ObjectManager.GetAlliance(allianceID);

                ChallengeStreamEntry cm = new ChallengeStreamEntry()
                {
                    Message = Message
                };
                cm.SetSender(player);
                cm.ID = alliance.m_vChatMessages.Count + 1;
                alliance.AddChatMessage((ChallengeStreamEntry)cm);

                StreamEntry s = alliance.m_vChatMessages.Find(c => c.GetStreamEntryType() == 12);
                if (s != null)
                {
                    alliance.m_vChatMessages.RemoveAll(t => t == s);

                    foreach (AllianceMemberEntry op in alliance.GetAllianceMembers())
                    {
                        Level alliancemembers = await ResourcesManager.GetPlayer(op.AvatarId);

                        if (alliancemembers.Client != null)
                        {
                            new AllianceStreamEntryRemovedMessage(alliancemembers.Client, s.ID).Send();
                            new AllianceStreamEntryMessage(alliancemembers.Client)
                            {
                                StreamEntry = cm
                            }.Send();
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }