public ClearTimeReplacer(Th145Converter parent) { this.evaluator = new MatchEvaluator(match => { var level = LevelWithTotalParser.Parse(match.Groups[1].Value); var chara = CharaWithTotalParser.Parse(match.Groups[2].Value); Func <Dictionary <Chara, int>, int> getValueByChara; if (chara == CharaWithTotal.Total) { getValueByChara = (dict => dict.Values.Sum()); } else { getValueByChara = (dict => dict[(Chara)chara]); } Func <Dictionary <Level, Dictionary <Chara, int> >, int> getValueByLevel; if (level == LevelWithTotal.Total) { getValueByLevel = (dict => dict.Values.Sum(getValueByChara)); } else { getValueByLevel = (dict => getValueByChara(dict[(Level)level])); } return(new Time(getValueByLevel(parent.allScoreData.ClearTimes)).ToString()); }); }
public ClearRankReplacer(Th145Converter parent) { this.evaluator = new MatchEvaluator(match => { var level = LevelParser.Parse(match.Groups[1].Value); var chara = CharaParser.Parse(match.Groups[2].Value); // FIXME switch (parent.allScoreData.ClearRanks[level][chara]) { case 1: return("Bronze"); case 2: return("Silver"); case 3: return("Gold"); default: return("Not Clear"); } }); }