public static Level BaseDeserialize(DataStream reader) { LevelTypes levelType = (LevelTypes)reader.ReadSInt32(); int levelID = reader.ReadSInt32(); int levelPicID = reader.ReadSInt32(); int levelNameCount = reader.ReadSInt32(); SortedDictionary <string, string> LevelNames = new SortedDictionary <string, string>(); for (int i = 0; i < levelNameCount; i++) { string ls = reader.ReadString8(); string value = reader.ReadString8(); LevelNames[ls] = value; } int difficultyLevel = reader.ReadSInt32(); Level res = null; switch (levelType) { case LevelTypes.Enemy: { BuildInfo BuildInfo = BuildInfo.Deserialize(reader); EnemyType EnemyType = (EnemyType)(reader.ReadSInt32()); int bonusCount = reader.ReadSInt32(); List <BonusGroup> BonusGroups = new List <BonusGroup>(); for (int i = 0; i < bonusCount; i++) { BonusGroups.Add(BonusGroup.Deserialize(reader)); } CardPriority cp = CardPriority.Deserialize(reader); int cardComboCount = reader.ReadSInt32(); List <CardCombo> cardComboList = new List <CardCombo>(); for (int i = 0; i < cardComboCount; i++) { cardComboList.Add(CardCombo.Deserialize(reader)); } res = new Enemy(levelPicID, LevelNames, difficultyLevel, BuildInfo, EnemyType, BonusGroups, cardComboList, cp); break; } case LevelTypes.Shop: { int count = reader.ReadSInt32(); List <ShopItem> shopItems = new List <ShopItem>(); for (int i = 0; i < count; i++) { ShopItem si = ShopItem.Deserialize(reader); shopItems.Add(si); } int shopItemCardCount = reader.ReadSInt32(); int shopItemOthersCount = reader.ReadSInt32(); res = new Shop(levelPicID, LevelNames, difficultyLevel, shopItems, shopItemCardCount, shopItemOthersCount); break; } } res.LevelID = levelID; return(res); }
public override void Deserialize(DataStream reader) { base.Deserialize(reader); BonusGroup = BonusGroup.Deserialize(reader); }