Esempio n. 1
0
        public void StateChangeConfirmed()
        {
            switch (this.m_data.GetMissionType())
            {
            case 1:
                if (this.m_progress == 0)
                {
                    this.m_level.GetGameMode().StartDefendState(LogicNpcAvatar.GetNpcAvatar(this.m_data.GetDefendNpcData()));
                    this.m_progress = 1;
                }

                break;

            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 20:
            case 21:
                this.m_progress = 1;
                this.Finished();

                break;

            case 16:
                if (this.m_progress == 0)
                {
                    // ?
                }

                this.m_progress += 1;
                break;

            case 19:
                if (this.m_progress == 1)
                {
                    LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();
                    int duelScoreGain = LogicDataTables.GetGlobals().GetVillage2FirstVictoryTrophies();

                    playerAvatar.AddDuelReward(LogicDataTables.GetGlobals().GetVillage2FirstVictoryGold(), LogicDataTables.GetGlobals().GetVillage2FirstVictoryElixir(), 0, 0,
                                               null);
                    playerAvatar.SetDuelScore(playerAvatar.GetDuelScore() + LogicDataTables.GetGlobals().GetVillage2FirstVictoryTrophies());
                    playerAvatar.GetChangeListener().DuelScoreChanged(playerAvatar.GetAllianceId(), duelScoreGain, -1, false);

                    this.m_progress = 2;
                    this.Finished();
                }

                break;
            }
        }
Esempio n. 2
0
        /// <summary>
        ///     Called when the change of state is confirmed.
        /// </summary>
        public void StateChangeConfirmed()
        {
            switch (this._data.GetMissionType())
            {
            case 1:
                if (this._progress == 0)
                {
                    this._level.GetGameMode().StartDefendState(LogicNpcAvatar.GetNpcAvatar(this._data.GetDefendNpcData()));
                    this._progress = 1;
                }

                break;

            case 7:
            case 8:
            case 9:
            case 10:
            case 11:
            case 20:
            case 21:
                this._progress = 1;
                break;
            }
        }
        private static void OnChangeGameStateMessageReceived(ChangeGameStateMessage message)
        {
            if (GameSessionManager.TryGet(message.SessionId, out GameSession session))
            {
                GameAvatar document = session.GameAvatar;

                switch (message.StateType)
                {
                case GameStateType.HOME:
                    session.DestructGameState();
                    session.LoadGameState(new GameHomeState
                    {
                        PlayerAvatar    = document.LogicClientAvatar,
                        Home            = document.LogicClientHome,
                        SaveTime        = document.SaveTime,
                        MaintenanceTime = document.MaintenanceTime,
                        ServerCommands  = document.ServerCommands,
                        LayoutId        = message.LayoutId,
                        MapId           = message.MapId
                    });
                    break;

                case GameStateType.NPC_ATTACK:
                    session.DestructGameState();
                    session.LoadGameState(new GameNpcAttackState
                    {
                        PlayerAvatar = document.LogicClientAvatar,
                        Home         = GameResourceManager.NpcHomes[message.NpcData.GetInstanceID()],
                        NpcAvatar    = LogicNpcAvatar.GetNpcAvatar(message.NpcData),
                        SaveTime     = -1
                    });
                    break;

                case GameStateType.NPC_DUEL:
                    session.DestructGameState();
                    session.LoadGameState(new GameNpcDuelState
                    {
                        PlayerAvatar = document.LogicClientAvatar,
                        Home         = GameResourceManager.NpcHomes[message.NpcData.GetInstanceID()],
                        NpcAvatar    = LogicNpcAvatar.GetNpcAvatar(message.NpcData),
                        SaveTime     = -1
                    });
                    break;

                case GameStateType.VISIT:
                    ServerRequestManager.Create(new GameAvatarRequestMessage
                    {
                        AccountId = message.HomeId
                    }, ServerManager.GetDocumentSocket(9, message.HomeId), 5).OnComplete = args =>
                    {
                        if (!session.IsDestructed())
                        {
                            if (args.ErrorCode == ServerRequestError.Success && args.ResponseMessage.Success)
                            {
                                GameAvatarResponseMessage gameAvatarResponseMessage = (GameAvatarResponseMessage)args.ResponseMessage;

                                session.DestructGameState();
                                session.LoadGameState(new GameVisitState
                                {
                                    Home            = gameAvatarResponseMessage.Document.LogicClientHome,
                                    HomeOwnerAvatar = gameAvatarResponseMessage.Document.LogicClientAvatar,
                                    SaveTime        = gameAvatarResponseMessage.Document.SaveTime,

                                    PlayerAvatar = session.GameAvatar.LogicClientAvatar
                                });
                            }
                            else
                            {
                                session.SendPiranhaMessage(new VisitFailedMessage(), 1);
                            }
                        }
                    };

                    break;

                case GameStateType.CHALLENGE_ATTACK:
                    session.DestructGameState();

                    LogicLong       liveReplayId    = LiveReplayManager.Create(session, message.ChallengeAllianceId, message.ChallengeStreamId);
                    LogicClientHome logicClientHome = new LogicClientHome();

                    logicClientHome.SetHomeId(message.ChallengeHomeId);
                    logicClientHome.GetCompressibleHomeJSON().Set(message.ChallengeHomeJSON);

                    session.LoadGameState(new GameChallengeAttackState
                    {
                        Home         = logicClientHome,
                        PlayerAvatar = document.LogicClientAvatar,
                        SaveTime     = -1,
                        LiveReplayId = liveReplayId,
                        AllianceId   = message.ChallengeAllianceId,
                        StreamId     = message.ChallengeStreamId,
                        MapId        = message.ChallengeMapId
                    });

                    ServerMessageManager.SendMessage(new AllianceChallengeLiveReplayIdMessage
                    {
                        AccountId    = message.ChallengeStreamId,
                        LiveReplayId = liveReplayId
                    }, 11);

                    break;
                }
            }
        }