public LogicData CreateItem(CSVRow row) { LogicData data = null; switch (this.m_tableIndex) { case LogicDataType.BUILDING: { data = new LogicBuildingData(row, this); break; } case LogicDataType.LOCALE: { data = new LogicLocaleData(row, this); break; } case LogicDataType.RESOURCE: { data = new LogicResourceData(row, this); break; } case LogicDataType.CHARACTER: { data = new LogicCharacterData(row, this); break; } case LogicDataType.ANIMATION: { data = new LogicAnimationData(row, this); break; } case LogicDataType.PROJECTILE: { data = new LogicProjectileData(row, this); break; } case LogicDataType.BUILDING_CLASS: { data = new LogicBuildingClassData(row, this); break; } case LogicDataType.OBSTACLE: { data = new LogicObstacleData(row, this); break; } case LogicDataType.EFFECT: { data = new LogicEffectData(row, this); break; } case LogicDataType.PARTICLE_EMITTER: { data = new LogicParticleEmitterData(row, this); break; } case LogicDataType.EXPERIENCE_LEVEL: { data = new LogicExperienceLevelData(row, this); break; } case LogicDataType.TRAP: { data = new LogicTrapData(row, this); break; } case LogicDataType.ALLIANCE_BADGE: { data = new LogicAllianceBadgeData(row, this); break; } case LogicDataType.GLOBAL: case LogicDataType.CLIENT_GLOBAL: { data = new LogicGlobalData(row, this); break; } case LogicDataType.TOWNHALL_LEVEL: { data = new LogicTownhallLevelData(row, this); break; } case LogicDataType.ALLIANCE_PORTAL: { data = new LogicAlliancePortalData(row, this); break; } case LogicDataType.NPC: { data = new LogicNpcData(row, this); break; } case LogicDataType.DECO: { data = new LogicDecoData(row, this); break; } case LogicDataType.RESOURCE_PACK: { data = new LogicResourcePackData(row, this); break; } case LogicDataType.SHIELD: { data = new LogicShieldData(row, this); break; } case LogicDataType.MISSION: { data = new LogicMissionData(row, this); break; } case LogicDataType.BILLING_PACKAGE: { data = new LogicBillingPackageData(row, this); break; } case LogicDataType.ACHIEVEMENT: { data = new LogicAchievementData(row, this); break; } case LogicDataType.SPELL: { data = new LogicSpellData(row, this); break; } case LogicDataType.HINT: { data = new LogicHintData(row, this); break; } case LogicDataType.HERO: { data = new LogicHeroData(row, this); break; } case LogicDataType.LEAGUE: { data = new LogicLeagueData(row, this); break; } case LogicDataType.NEWS: { data = new LogicNewsData(row, this); break; } case LogicDataType.WAR: { data = new LogicWarData(row, this); break; } case LogicDataType.REGION: { data = new LogicRegionData(row, this); break; } case LogicDataType.ALLIANCE_BADGE_LAYER: { data = new LogicAllianceBadgeLayerData(row, this); break; } case LogicDataType.ALLIANCE_LEVEL: { data = new LogicAllianceLevelData(row, this); break; } case LogicDataType.HELPSHIFT: { data = new LogicHelpshiftData(row, this); break; } case LogicDataType.CREDIT: case LogicDataType.FAQ: case LogicDataType.VARIABLE: { data = new LogicData(row, this); break; } case LogicDataType.GEM_BUNDLE: { data = new LogicGemBundleData(row, this); break; } case LogicDataType.VILLAGE_OBJECT: { data = new LogicVillageObjectData(row, this); break; } case LogicDataType.CALENDAR_EVENT_FUNCTION: { data = new LogicCalendarEventFunctionData(row, this); break; } case LogicDataType.BOOMBOX: { data = new LogicBoomboxData(row, this); break; } case LogicDataType.EVENT_ENTRY: { data = new LogicEventEntryData(row, this); break; } case LogicDataType.DEEPLINK: { data = new LogicDeeplinkData(row, this); break; } case LogicDataType.LEAGUE_VILLAGE2: { data = new LogicLeagueVillage2Data(row, this); break; } default: { Debugger.Error("Invalid data table id: " + this.m_tableIndex); break; } } return(data); }
public override void CreateReferences() { base.CreateReferences(); this.m_villageType = this.GetIntegerValue("UIGroup", 0); this.m_diamondReward = this.GetIntegerValue("DiamondReward", 0); this.m_expReward = this.GetIntegerValue("ExpReward", 0); this.m_actionCount = this.GetIntegerValue("ActionCount", 0); this.m_actionDataLevel = this.GetIntegerValue("ActionDataLevel", 0); this.m_level = this.GetIntegerValue("Level", 0); this.m_levelCount = this.GetIntegerValue("LevelCount", 0); this.m_uiPriority = this.GetIntegerValue("UIPriority", 0); this.m_completedTID = this.GetValue("CompletedTID", 0); this.m_showValue = this.GetBooleanValue("ShowValue", 0); this.m_androidId = this.GetValue("AndroidID", 0); if (this.m_actionCount == 0) { Debugger.Error("Achievement has invalid ActionCount 0"); } string action = this.GetValue("Action", 0); switch (action) { case "npc_stars": this.m_actionType = LogicAchievementData.ACTION_TYPE_NPC_STARS; break; case "upgrade": this.m_actionType = LogicAchievementData.ACTION_TYPE_UPGRADE; this.m_buildingData = LogicDataTables.GetBuildingByName(this.GetValue("ActionData", 0), this); if (this.m_buildingData == null) { Debugger.Error("LogicAchievementData - Building data is NULL for upgrade achievement"); } break; case "victory_points": this.m_actionType = LogicAchievementData.ACTION_TYPE_VICTORY_POINTS; break; case "unit_unlock": this.m_actionType = LogicAchievementData.ACTION_TYPE_UNIT_UNLOCK; this.m_characterData = LogicDataTables.GetCharacterByName(this.GetValue("ActionData", 0), this); if (this.m_characterData == null) { Debugger.Error("LogicCharacterData - Character data is NULL for unit_unlock achievement"); } break; case "clear_obstacles": this.m_actionType = LogicAchievementData.ACTION_TYPE_CLEAR_OBSTACLES; break; case "donate_units": this.m_actionType = LogicAchievementData.ACTION_TYPE_DONATE_UNITS; break; case "loot": this.m_actionType = LogicAchievementData.ACTION_TYPE_LOOT; this.m_resourceData = LogicDataTables.GetResourceByName(this.GetValue("ActionData", 0), this); if (this.m_resourceData == null) { Debugger.Error("LogicAchievementData - Resource data is NULL for loot achievement"); } break; case "destroy": this.m_actionType = LogicAchievementData.ACTION_TYPE_DESTROY; this.m_buildingData = LogicDataTables.GetBuildingByName(this.GetValue("ActionData", 0), this); if (this.m_buildingData == null) { Debugger.Error("LogicAchievementData - Building data is NULL for destroy achievement"); } break; case "win_pvp_attack": this.m_actionType = LogicAchievementData.ACTION_TYPE_WIN_PVP_ATTACK; break; case "win_pvp_defense": this.m_actionType = LogicAchievementData.ACTION_TYPE_WIN_PVP_DEFENSE; break; case "league": this.m_actionType = LogicAchievementData.ACTION_TYPE_LEAGUE; break; case "war_stars": this.m_actionType = LogicAchievementData.ACTION_TYPE_WAR_STARS; break; case "war_loot": this.m_actionType = LogicAchievementData.ACTION_TYPE_WAR_LOOT; break; case "donate_spells": this.m_actionType = LogicAchievementData.ACTION_TYPE_DONATE_SPELLS; break; case "account_bound": this.m_actionType = LogicAchievementData.ACTION_TYPE_ACCOUNT_BOUND; break; case "vs_battle_trophies": this.m_actionType = LogicAchievementData.ACTION_TYPE_VERSUS_BATTLE_TROPHIES; break; case "gear_up": this.m_actionType = LogicAchievementData.ACTION_TYPE_GEAR_UP; break; case "repair_building": this.m_actionType = LogicAchievementData.ACTION_TYPE_REPAIR_BUILDING; this.m_buildingData = LogicDataTables.GetBuildingByName(this.GetValue("ActionData", 0), this); if (this.m_buildingData == null) { Debugger.Error("LogicAchievementData - Building data is NULL for repair_building achievement"); } break; case "clan_games_points": this.m_actionType = LogicAchievementData.ACTION_TYPE_CLAN_GAMES_POINTS; break; case "dragon_slayer": this.m_actionType = LogicAchievementData.ACTION_TYPE_DRAGON_SLAYER; break; case "league_war_stars": this.m_actionType = LogicAchievementData.ACTION_TYPE_LEAGUE_WAR_STARS; break; case "scid_bound": this.m_actionType = LogicAchievementData.ACTION_TYPE_SUPERCELLID_BOUND; break; case "season_challenge_points": this.m_actionType = LogicAchievementData.ACTION_TYPE_SEASON_CHALLENGE_POINTS; break; case "activate_super_licence": this.m_actionType = LogicAchievementData.ACTION_TYPE_ACTIVATE_SUPER_LICENCE; break; case "donate_sieges": this.m_actionType = LogicAchievementData.ACTION_TYPE_DONATE_SIEGES; break; default: Debugger.Error(string.Format("Unknown Action in achievements {0}", action)); break; } this.m_achievementLevel = new LogicArrayList <LogicAchievementData>(); string achievementName = this.GetName().Substring(0, this.GetName().Length - 1); LogicDataTable table = LogicDataTables.GetTable(LogicDataType.ACHIEVEMENT); for (int i = 0; i < table.GetItemCount(); i++) { LogicAchievementData achievementData = (LogicAchievementData)table.GetItemAt(i); if (achievementData.GetName().Contains(achievementName)) { if (achievementData.GetName().Substring(0, achievementData.GetName().Length - 1).Equals(achievementName)) { this.m_achievementLevel.Add(achievementData); } } } Debugger.DoAssert(this.m_achievementLevel.Size() == this.m_levelCount, string.Format( "Expected same amount of achievements named {0}X to be same as LevelCount={1} for {2}.", achievementName, this.m_levelCount, this.GetName())); }