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