public static LevelPack ParseLevelPack(string packID, string serializedLevelPack) { if (string.IsNullOrWhiteSpace(packID)) { throw new Exception($"Pack ID was not valid [{packID}]"); } try { // Parse the string as JSON JObject levelJSON = JObject.Parse(serializedLevelPack); if (levelJSON == null) { throw new InvalidSerializedLevelPackException("Level was not valid JSON"); } var packName = levelJSON.Value <string>("PackName"); if (string.IsNullOrWhiteSpace(packName)) { throw new InvalidSerializedLevelPackException($"Pack name was not valid [{packName}]"); } var levelInfosJSON = (JArray)levelJSON["Levels"]; if (levelInfosJSON == null || levelInfosJSON.Count < 1) { throw new InvalidSerializedLevelPackException("Level pack did not contain any levels"); } var levelInfos = new LevelList(); foreach (var levelInfoJSON in levelInfosJSON) { var levelInfo = ParseLevelInfo(levelInfoJSON, levelInfos.Count); levelInfos.Add(levelInfo); } var levelPack = new LevelPack(packID, packName, levelInfos); return(levelPack); } catch (Exception ex) { throw new InvalidSerializedLevelPackException("Unable to parse level", ex); } }
public void AddLevel(string name, int needExp, int allowPoints) { TLevel level = new TLevel(name, needExp, allowPoints); LevelList.Add(level); }