public PracticeReplacer(Th06Converter parent) { this.evaluator = new MatchEvaluator(match => { var level = LevelParser.Parse(match.Groups[1].Value); var chara = CharaParser.Parse(match.Groups[2].Value); var stage = StageParser.Parse(match.Groups[3].Value); if (level == Level.Extra) { return(match.ToString()); } if (stage == Stage.Extra) { return(match.ToString()); } var key = new CharaLevelPair(chara, level); if (parent.allScoreData.PracticeScores.ContainsKey(key)) { var scores = parent.allScoreData.PracticeScores[key]; return(scores.ContainsKey(stage) ? Utils.ToNumberString(scores[stage].HighScore) : "0"); } else { return("0"); } }); }
public ClearReplacer(Th06Converter parent) { this.evaluator = new MatchEvaluator(match => { var level = LevelParser.Parse(match.Groups[1].Value); var chara = CharaParser.Parse(match.Groups[2].Value); var key = new CharaLevelPair(chara, level); if (parent.allScoreData.Rankings.ContainsKey(key)) { var stageProgress = parent.allScoreData.Rankings[key].Max(rank => rank.StageProgress); if (stageProgress == StageProgress.Extra) { return("Not Clear"); } else { return(stageProgress.ToShortName()); } } else { return(StageProgress.None.ToShortName()); } }); }
public ScoreReplacer(Th06Converter parent) { this.evaluator = new MatchEvaluator(match => { var level = LevelParser.Parse(match.Groups[1].Value); var chara = CharaParser.Parse(match.Groups[2].Value); var rank = Utils.ToZeroBased( int.Parse(match.Groups[3].Value, CultureInfo.InvariantCulture)); var type = int.Parse(match.Groups[4].Value, CultureInfo.InvariantCulture); var key = new CharaLevelPair(chara, level); var score = parent.allScoreData.Rankings.ContainsKey(key) ? parent.allScoreData.Rankings[key][rank] : InitialRanking[rank]; switch (type) { case 1: // name return(Encoding.Default.GetString(score.Name).Split('\0')[0]); case 2: // score return(Utils.ToNumberString(score.Score)); case 3: // stage return(score.StageProgress.ToShortName()); default: // unreachable return(match.ToString()); } }); }
public void Set(HighScore score) { var key = new CharaLevelPair(score.Chara, score.Level); if (!this.Rankings.ContainsKey(key)) { this.Rankings.Add(key, new HighScore[5]); } if ((0 <= score.Rank) && (score.Rank < 5)) { this.Rankings[key][score.Rank] = score; } }
public void Set(HighScore score) { var key = new CharaLevelPair(score.Chara, score.Level); if (!this.Rankings.ContainsKey(key)) { this.Rankings.Add(key, new List <HighScore>(InitialRanking)); } var ranking = this.Rankings[key]; ranking.Add(score); ranking.Sort((lhs, rhs) => rhs.Score.CompareTo(lhs.Score)); ranking.RemoveAt(ranking.Count - 1); }
public void Set(PracticeScore score) { if ((score.Level != Level.Extra) && (score.Stage != Stage.Extra) && !((score.Level == Level.Easy) && (score.Stage == Stage.St6))) { var key = new CharaLevelPair(score.Chara, score.Level); if (!this.PracticeScores.ContainsKey(key)) { var numStages = Utils.GetEnumerator <Stage>() .Where(st => st != Stage.Extra).Count(); this.PracticeScores.Add(key, new Dictionary <Stage, PracticeScore>(numStages)); } var scores = this.PracticeScores[key]; if (!scores.ContainsKey(score.Stage)) { scores.Add(score.Stage, score); } } }