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); } } }
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); } } }
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); } } }
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); } } } }
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()); } } } }
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); } } } } }
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); } } }
/// <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); } } }