コード例 #1
0
        public void RefreshAchievementProgress(LogicClientAvatar avatar, LogicAchievementData data, int value)
        {
            if (this.m_level.GetState() != 5)
            {
                int currentValue = avatar.GetAchievementProgress(data);
                int newValue     = LogicMath.Min(value, 2000000000);

                if (currentValue < newValue)
                {
                    avatar.SetAchievementProgress(data, value);
                    avatar.GetChangeListener().CommodityCountChanged(0, data, newValue);
                }

                int tmp = LogicMath.Min(newValue, data.GetActionCount());

                if (currentValue < tmp)
                {
                    LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();

                    if (playerAvatar == avatar)
                    {
                        if (tmp == data.GetActionCount())
                        {
                            this.m_level.GetGameListener().AchievementCompleted(data);
                        }
                        else
                        {
                            this.m_level.GetGameListener().AchievementProgress(data);
                        }
                    }
                }
            }
        }
コード例 #2
0
        public void BuildingDestroyedInPvP(LogicBuildingData buildingData)
        {
            LogicDataTable    table        = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);
            LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();

            for (int i = 0; i < table.GetItemCount(); i++)
            {
                LogicAchievementData data = (LogicAchievementData)table.GetItemAt(i);

                if (data.GetActionType() == LogicAchievementData.ACTION_TYPE_DESTROY && data.GetBuildingData() == buildingData)
                {
                    this.RefreshAchievementProgress(playerAvatar, data, playerAvatar.GetAchievementProgress(data) + 1);
                }
            }
        }
コード例 #3
0
        public void IncreaseWarGoldResourceLoot(int count)
        {
            LogicDataTable    table        = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);
            LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();

            for (int i = 0; i < table.GetItemCount(); i++)
            {
                LogicAchievementData data = (LogicAchievementData)table.GetItemAt(i);

                if (data.GetActionType() == LogicAchievementData.ACTION_TYPE_WAR_LOOT)
                {
                    this.RefreshAchievementProgress(playerAvatar, data, playerAvatar.GetAchievementProgress(data) + count);
                }
            }
        }
コード例 #4
0
        public void PvpAttackWon()
        {
            LogicDataTable    table        = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);
            LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();

            for (int i = 0; i < table.GetItemCount(); i++)
            {
                LogicAchievementData data = (LogicAchievementData)table.GetItemAt(i);

                if (data.GetActionType() == LogicAchievementData.ACTION_TYPE_WIN_PVP_ATTACK)
                {
                    this.RefreshAchievementProgress(playerAvatar, data, playerAvatar.GetAchievementProgress(data) + 1);
                }
            }
        }
コード例 #5
0
        public void PvpDefenseWon()
        {
            if (this.m_level.GetHomeOwnerAvatar().IsClientAvatar())
            {
                LogicDataTable    table           = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);
                LogicClientAvatar homeOwnerAvatar = (LogicClientAvatar)this.m_level.GetHomeOwnerAvatar();

                for (int i = 0; i < table.GetItemCount(); i++)
                {
                    LogicAchievementData data = (LogicAchievementData)table.GetItemAt(i);

                    if (data.GetActionType() == LogicAchievementData.ACTION_TYPE_WIN_PVP_DEFENSE)
                    {
                        this.RefreshAchievementProgress(homeOwnerAvatar, data, homeOwnerAvatar.GetAchievementProgress(data) + 1);
                    }
                }
            }
        }
コード例 #6
0
        public void AlianceSpellDonated(LogicSpellData data)
        {
            if (data != null)
            {
                LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();
                LogicDataTable    dataTable    = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);

                for (int i = 0; i < dataTable.GetItemCount(); i++)
                {
                    LogicAchievementData achievementData = (LogicAchievementData)dataTable.GetItemAt(i);

                    if (achievementData.GetActionType() == LogicAchievementData.ACTION_TYPE_DONATE_SPELLS)
                    {
                        this.RefreshAchievementProgress(playerAvatar, achievementData, playerAvatar.GetAchievementProgress(achievementData) + data.GetHousingSpace());
                    }
                }
            }
        }
コード例 #7
0
        public void ObstacleCleared()
        {
            LogicAvatar    homeOwnerAvatar = this.m_level.GetHomeOwnerAvatar();
            LogicDataTable dataTable       = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);

            if (homeOwnerAvatar != null)
            {
                if (homeOwnerAvatar.IsClientAvatar())
                {
                    LogicClientAvatar clientAvatar = (LogicClientAvatar)homeOwnerAvatar;

                    for (int i = 0; i < dataTable.GetItemCount(); i++)
                    {
                        LogicAchievementData achievementData = (LogicAchievementData)dataTable.GetItemAt(i);

                        if (achievementData.GetActionType() == LogicAchievementData.ACTION_TYPE_CLEAR_OBSTACLES)
                        {
                            this.RefreshAchievementProgress(clientAvatar, achievementData, clientAvatar.GetAchievementProgress(achievementData) + 1);
                        }
                    }
                }
            }
        }
コード例 #8
0
        public void RefreshStatus()
        {
            if (this.m_level.GetState() == 1)
            {
                LogicClientAvatar playerAvatar = this.m_level.GetPlayerAvatar();
                LogicDataTable    dataTable    = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT);

                for (int i = 0, progress = 0; i < dataTable.GetItemCount(); i++, progress = 0)
                {
                    LogicAchievementData achievementData = (LogicAchievementData)dataTable.GetItemAt(i);

                    switch (achievementData.GetActionType())
                    {
                    case LogicAchievementData.ACTION_TYPE_NPC_STARS:
                        progress = playerAvatar.GetTotalNpcStars();
                        break;

                    case LogicAchievementData.ACTION_TYPE_UPGRADE:
                        progress = this.m_level.GetGameObjectManager().GetHighestBuildingLevel(achievementData.GetBuildingData()) + 1;
                        break;

                    case LogicAchievementData.ACTION_TYPE_VICTORY_POINTS:
                        progress = playerAvatar.GetScore();
                        break;

                    case LogicAchievementData.ACTION_TYPE_UNIT_UNLOCK:
                        progress = achievementData.GetCharacterData()
                                   .IsUnlockedForBarrackLevel(
                            LogicMath.Max(this.m_level.GetComponentManagerAt(achievementData.GetVillageType()).GetMaxBarrackLevel(), 0))
                                ? 1
                                : 0;
                        break;

                    case LogicAchievementData.ACTION_TYPE_LEAGUE:
                        progress = playerAvatar.GetLeagueType();
                        break;

                    case LogicAchievementData.ACTION_TYPE_ACCOUNT_BOUND:
                        progress = playerAvatar.IsAccountBound() ? 1 : 0;
                        break;

                    case LogicAchievementData.ACTION_TYPE_VERSUS_BATTLE_TROPHIES:
                        progress = playerAvatar.GetDuelScore();
                        break;

                    case LogicAchievementData.ACTION_TYPE_GEAR_UP:
                        progress = this.m_level.GetGameObjectManager().GetGearUpBuildingCount();
                        break;

                    case LogicAchievementData.ACTION_TYPE_REPAIR_BUILDING:
                        LogicArrayList <LogicAchievementData> achievementLevels = achievementData.GetAchievementLevels();

                        if (achievementLevels.Size() > 0)
                        {
                            for (int j = 0; j < achievementLevels.Size(); j++)
                            {
                                if (!this.IsBuildingUnlocked(achievementLevels[j].GetBuildingData()))
                                {
                                    break;
                                }

                                if (achievementLevels[j] == achievementData)
                                {
                                    progress = 1;
                                    break;
                                }
                            }
                        }

                        break;
                    }

                    this.RefreshAchievementProgress(playerAvatar, achievementData, progress);
                }
            }
        }
コード例 #9
0
 /// <summary>
 ///     Decodes this instnace.
 /// </summary>
 public override void Decode(ByteStream stream)
 {
     this._achievementData = (LogicAchievementData)stream.ReadDataReference(22);
     base.Decode(stream);
 }
コード例 #10
0
        /// <summary>
        /// Creates the data for the specified row.
        /// </summary>
        internal LogicData Create(Row row)
        {
            LogicData data;

            switch (this.Index)
            {
            case 1:
            {
                data = new LogicLocaleData(row, this);
                break;
            }

            case 2:
            {
                data = new LogicResourceData(row, this);
                break;
            }

            case 3:
            {
                data = new LogicEffectData(row, this);
                break;
            }

            case 4:
            {
                data = new LogicParticleEmitterData(row, this);
                break;
            }

            case 5:
            {
                data = new LogicGlobalData(row, this);
                break;
            }

            case 6:
            {
                data = new LogicQuestData(row, this);
                break;
            }

            case 8:
            {
                data = new LogicAchievementData(row, this);
                break;
            }

            case 10:
            {
                data = new LogicWorldData(row, this);
                break;
            }

            case 11:
            {
                data = new LogicHeroData(row, this);
                break;
            }

            case 12:
            {
                data = new LogicExperienceLevelData(row, this);
                break;
            }

            case 13:
            {
                data = new LogicLeagueData(row, this);
                break;
            }

            case 21:
            {
                data = new LogicAllianceBadgeData(row, this);
                break;
            }

            case 24:
            {
                data = new LogicTauntData(row, this);
                break;
            }

            case 25:
            {
                data = new LogicDecoData(row, this);
                break;
            }

            case 26:
            {
                data = new LogicVariableData(row, this);
                break;
            }

            case 28:
            {
                data = new LogicBoosterData(row, this);
                break;
            }

            case 32:
            {
                data = new LogicEnergyPackageData(row, this);
                break;
            }

            case 35:
            {
                data = new LogicSpellData(row, this);
                break;
            }

            case 36:
            {
                data = new LogicObstacleData(row, this);
                break;
            }

            case 37:
            {
                data = new LogicItemsData(row, this);
                break;
            }

            default:
            {
                data = new LogicData(row, this);
                break;
            }
            }

            return(data);
        }
 public override void Destruct()
 {
     base.Destruct();
     this.m_achievementData = null;
 }
 public override void Decode(ByteStream stream)
 {
     this.m_achievementData = (LogicAchievementData)ByteStreamHelper.ReadDataReference(stream, LogicDataType.ACHIEVEMENT);
     base.Decode(stream);
 }
 public LogicClaimAchievementRewardCommand(LogicAchievementData achievementData)
 {
     this.m_achievementData = achievementData;
 }
コード例 #14
0
        /// <summary>
        ///     Refreshes status of all achievements.
        /// </summary>
        public void RefreshStatus()
        {
            if (this._level.GetState() == 1)
            {
                LogicClientAvatar playerAvatar = this._level.GetPlayerAvatar();
                LogicDataTable    dataTable    = LogicDataTables.GetTable(22);

                for (int i = 0, progress = 0; i < dataTable.GetItemCount(); i++, progress = 0)
                {
                    LogicAchievementData achievementData = (LogicAchievementData)dataTable.GetItemAt(i);

                    switch (achievementData.GetActionType())
                    {
                    case 0:
                        progress = playerAvatar.GetTotalNpcStars();
                        break;

                    case 1:
                        progress = this._level.GetGameObjectManager().GetHighestBuildingLevel(achievementData.GetBuildingData()) + 1;
                        break;

                    case 2:
                        progress = playerAvatar.GetScore();
                        break;

                    case 3:
                        progress = achievementData.GetCharacterData().IsUnlockedForBarrackLevel(LogicMath.Max(this._level.GetComponentManagerAt(achievementData.GetVillageType()).GetMaxBarrackLevel(), 0)) ? 1 : 0;
                        break;

                    case 12:
                        progress = playerAvatar.GetLeagueType();
                        break;

                    case 16:
                        progress = playerAvatar.IsAccountBound() ? 1 : 0;
                        break;

                    case 17:
                        progress = playerAvatar.GetDuelScore();
                        break;

                    case 18:
                        progress = this._level.GetGameObjectManager().GetGearUpBuildingCount();
                        break;

                    case 19:
                        LogicArrayList <LogicAchievementData> achievementLevels = achievementData.GetAchievementLevels();

                        if (achievementLevels.Count <= 0)
                        {
                            break;
                        }

                        for (int j = 0; j < achievementLevels.Count; j++)
                        {
                            if (!this._level.IsBuildingUnlocked(achievementLevels[j].GetBuildingData()))
                            {
                                goto refresh;
                            }
                        }

                        progress = 1;

                        break;
                    }

refresh:
                    this.RefreshAchievementProgress(playerAvatar, achievementData, progress);
                }
            }
        }
コード例 #15
0
 public virtual void AchievementCompleted(LogicAchievementData data)
 {
 }
コード例 #16
0
 public virtual void AchievementProgress(LogicAchievementData data)
 {
 }
コード例 #17
0
        internal override void Decode()
        {
            this.Achievement = this.Stream.ReadDataReference <LogicAchievementData>();

            this.ReadHeader();
        }