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