refactor: FanValue fallback 集中到 PhaseMachine.DefaultFanValue()

ScoreEngine.FanValue 和 PhaseMachine.GetFanValue 之前各自维护
一份相同的硬编码 fallback 列表。改为 ScoreEngine 调用
PhaseMachine.DefaultFanValue() 单例消除重复。

硬编码审计结论: 所有影响变体适配的硬编码已全部修复,
剩余的是麻将基础规则(碰2/杠3/暗杠4/13/14张)和牌编码定义。
This commit is contained in:
xiaoou
2026-07-04 21:51:40 +08:00
parent 4e9f06d5cd
commit b7fb93d4e4
2 changed files with 11 additions and 22 deletions

View File

@ -162,20 +162,7 @@ public class MahjongScoreEngine
{
if (_fanConfig.TryGetValue(fan, out var def))
return def.BaseFan;
// Hardcoded values for well-known fans not in every DSL
return fan switch
{
"清一色" => 24,
"混一色" => 6,
"对对胡" => 2,
"碰碰和" => 6,
"暗七对" => 8,
"七对" => 8,
"带幺九" => 2,
"十三幺" => 88,
"鸡胡" => 1,
_ => 0
};
return Phase.MahjongPhaseMachine.DefaultFanValue(fan);
}
private static string FlowerName(int tile) => tile switch