public Level GetLevel(Level.LevelRef lr) { foreach (var level in GetLevels(lr.type)) { if (level.solved.Equals(lr.cc)) { return(level); } } return(null); }
public SolvedState GetLevelState(Level.LevelRef lref) { if (!LevelUnlocked(lref)) { return(SolvedState.Locked); } var stats = GetLevelStats(lref); if (stats.NumPerfect == stats.Total) { return(SolvedState.Mastered); } else if (stats.NumUnsolved == 0) { return(SolvedState.Finished); } return(SolvedState.Unsolved); }
/// <summary> /// Loads all level classes from metadata file /// format /// type, image file, solved config, configs move level 1, configs move level 2, ... configs move level N /// </summary> /// <param name="metaText"></param> private void LoadLevelDefs(string metaText) { levels.Clear(); var json = JSON.Parse(metaText); foreach (JSONClass typeData in json["types"].AsArray) { var type = (Level.LevelType)Enum.Parse(typeof(Level.LevelType), typeData["type"]); var typeTexture = typeData["texture"]; foreach (JSONClass levelData in typeData["levels"].AsArray) { var textureFile = levelData["texture"] ?? typeTexture; var pieces = levelData["pieces"]; var indexesStr = levelData["indexes"].AsArray; var indexes = new int[indexesStr.Count]; for (int cs = 0; cs < indexesStr.Count; cs++) { indexes[cs] = int.Parse(indexesStr[cs]); } var playIndex = levelData["moves"].AsInt; var starsRequired = levelData["starsRequired"].AsInt; bool forceLoadTree = levelData["forceLoadTree"] != null; bool tutorial = levelData["tutorial"] != null; Level level = new Level(type, PuzzleState.FromString(pieces), textureFile, LEVELS_BASE_DIR + pieces, indexes, playIndex, starsRequired, tutorial, forceLoadTree); if (tutorial) { tutorialLevelRef = level.Ref; } AddLevel(level); } } availableLevels = new List <Level>(); foreach (var ll in levels.Values) { availableLevels.AddRange(ll); } availableLevels.Sort(); }
public SolvedStats GetLevelStats(Level.LevelRef lref) { return(db.GetLevelStats(lref)); }
public bool LevelUnlocked(Level.LevelRef lref) { return(GetLevel(lref).starsRequired <= stars); }
public bool LevelMastered(Level.LevelRef lref) { return(NumPuzzlesToMaster(lref) == 0); }
public bool LevelFinished(Level.LevelRef lref) { return(NumPuzzlesToFinish(lref) == 0); }
public int NumPuzzlesSolved(Level.LevelRef lref) { return(db.PuzzlesWithState(lref, SolvedStates)); }
public int NumPuzzlesToFinish(Level.LevelRef lref) { return(db.PuzzlesWithState(lref, PuzzleSolvedState.Unsolved)); }
public int NumPuzzlesToMaster(Level.LevelRef lref) { return(db.PuzzlesWithState(lref, NotPerfectStates)); }