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 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> /// Decodes this instnace. /// </summary> public override void Decode(ByteStream stream) { this._achievementData = (LogicAchievementData)stream.ReadDataReference(22); base.Decode(stream); }
/// <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; }
/// <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); } } }
public virtual void AchievementCompleted(LogicAchievementData data) { }
public virtual void AchievementProgress(LogicAchievementData data) { }
internal override void Decode() { this.Achievement = this.Stream.ReadDataReference <LogicAchievementData>(); this.ReadHeader(); }