Beispiel #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);
                        }
                    }
                }
            }
        }
Beispiel #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);
                }
            }
        }
Beispiel #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);
                }
            }
        }
Beispiel #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);
                }
            }
        }
Beispiel #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);
                    }
                }
            }
        }
Beispiel #6
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);
                        }
                    }
                }
            }
        }
Beispiel #7
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());
                    }
                }
            }
        }