コード例 #1
0
ファイル: AllLevels.cs プロジェクト: Biang2016/Mech-Storm
    public static Level GetLevelFromXML(XmlNode node_levelInfo, out bool needRefresh)
    {
        needRefresh = false;
        string Name_zh = node_levelInfo.Attributes["name_zh"].Value;
        string Name_en = node_levelInfo.Attributes["name_en"].Value;
        SortedDictionary <string, string> names = new SortedDictionary <string, string> {
            { "zh", Name_zh }, { "en", Name_en }
        };
        int        picID           = int.Parse(node_levelInfo.Attributes["picID"].Value);
        LevelTypes levelType       = (LevelTypes)Enum.Parse(typeof(LevelTypes), node_levelInfo.Attributes["levelType"].Value);
        int        difficultyLevel = int.Parse(node_levelInfo.Attributes["difficultyLevel"].Value);

        switch (levelType)
        {
        case LevelTypes.Enemy:
        {
            XmlNode   node_EnemyInfo = node_levelInfo.FirstChild;
            EnemyType enemyType      = (EnemyType)Enum.Parse(typeof(EnemyType), node_EnemyInfo.Attributes["enemyType"].Value);

            BuildInfo bi = BuildInfo.GetBuildInfoFromXML(node_EnemyInfo.FirstChild, out bool _needRefresh_build, BuildCards.DefaultCardLimitNumTypes.BasedOnCardBaseInfoLimitNum);
            needRefresh |= _needRefresh_build;

            XmlNode           node_BonusGroupInfos = node_EnemyInfo.ChildNodes.Item(1);
            List <BonusGroup> BonusGroups          = new List <BonusGroup>();
            for (int i = 0; i < node_BonusGroupInfos.ChildNodes.Count; i++)
            {
                XmlNode    bonusGroupInfo = node_BonusGroupInfos.ChildNodes.Item(i);
                BonusGroup bg             = BonusGroup.GenerateBonusGroupFromXML(bonusGroupInfo, out bool _needRefresh_bonus);
                needRefresh |= _needRefresh_bonus;
                BonusGroups.Add(bg);
            }

            XmlNode      node_CardPriorityInfos = node_EnemyInfo.ChildNodes.Item(2);
            CardPriority CardPriority           = CardPriority.GenerateCardPriorityFromXML(node_CardPriorityInfos, out bool _needRefresh_priority);

            XmlNode          node_ComboListInfos = node_EnemyInfo.ChildNodes.Item(3);
            List <CardCombo> ComboList           = new List <CardCombo>();
            for (int i = 0; i < node_ComboListInfos.ChildNodes.Count; i++)
            {
                XmlNode   comboInfo = node_ComboListInfos.ChildNodes.Item(i);
                CardCombo cc        = CardCombo.GenerateCardComboFromXML(comboInfo, out bool _needRefresh_combo);
                needRefresh |= _needRefresh_combo;
                ComboList.Add(cc);
            }

            Enemy enemy = new Enemy(picID, names, difficultyLevel, bi, enemyType, BonusGroups, ComboList, CardPriority);
            return(enemy);
        }

        case LevelTypes.Shop:
        {
            XmlNode         node_ShopInfo = node_levelInfo.FirstChild;
            List <ShopItem> shopItems     = new List <ShopItem>();
            for (int i = 0; i < node_ShopInfo.ChildNodes.Count; i++)
            {
                XmlNode  node_ShopItem = node_ShopInfo.ChildNodes.Item(i);
                ShopItem si            = ShopItem.GenerateShopItemFromXML(node_ShopItem, out bool _needRefresh_shop);
                needRefresh |= _needRefresh_shop;
                if (si != null)
                {
                    shopItems.Add(si);
                }
            }

            int shopItemCardCount   = int.Parse(node_ShopInfo.Attributes["shopItemCardCount"].Value);
            int shopItemOthersCount = int.Parse(node_ShopInfo.Attributes["shopItemOthersCount"].Value);

            Shop shop = new Shop(picID, names, difficultyLevel, shopItems, shopItemCardCount, shopItemOthersCount);
            return(shop);
        }
        }

        return(null);
    }