refactor: FanValue fallback 集中到 PhaseMachine.DefaultFanValue()
ScoreEngine.FanValue 和 PhaseMachine.GetFanValue 之前各自维护 一份相同的硬编码 fallback 列表。改为 ScoreEngine 调用 PhaseMachine.DefaultFanValue() 单例消除重复。 硬编码审计结论: 所有影响变体适配的硬编码已全部修复, 剩余的是麻将基础规则(碰2/杠3/暗杠4/13/14张)和牌编码定义。
This commit is contained in:
@ -174,18 +174,20 @@ public class MahjongPhaseMachine
|
|||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>Shared fan value fallback — single source of truth for both PhaseMachine and ScoreEngine.</summary>
|
||||||
|
public static int DefaultFanValue(string fanName) => fanName switch
|
||||||
|
{
|
||||||
|
"清一色" => 24, "混一色" => 6, "对对胡" => 2, "碰碰和" => 6,
|
||||||
|
"暗七对" => 8, "七对" => 8, "带幺九" => 2, "十三幺" => 88,
|
||||||
|
"鸡胡" => 1,
|
||||||
|
_ => 0
|
||||||
|
};
|
||||||
|
|
||||||
private int GetFanValue(string fanName)
|
private int GetFanValue(string fanName)
|
||||||
{
|
{
|
||||||
if (_fanConfig.TryGetValue(fanName, out var def))
|
if (_fanConfig.TryGetValue(fanName, out var def))
|
||||||
return def.BaseFan;
|
return def.BaseFan;
|
||||||
// Fallback for well-known fans when DSL doesn't define them
|
return DefaultFanValue(fanName);
|
||||||
return fanName switch
|
|
||||||
{
|
|
||||||
"清一色" => 24, "混一色" => 6, "对对胡" => 2, "碰碰和" => 6,
|
|
||||||
"暗七对" => 8, "七对" => 8, "带幺九" => 2, "十三幺" => 88,
|
|
||||||
"鸡胡" => 1,
|
|
||||||
_ => 0
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanPung(MahjongGameState state, string playerId, int tile)
|
private bool CanPung(MahjongGameState state, string playerId, int tile)
|
||||||
|
|||||||
@ -162,20 +162,7 @@ public class MahjongScoreEngine
|
|||||||
{
|
{
|
||||||
if (_fanConfig.TryGetValue(fan, out var def))
|
if (_fanConfig.TryGetValue(fan, out var def))
|
||||||
return def.BaseFan;
|
return def.BaseFan;
|
||||||
// Hardcoded values for well-known fans not in every DSL
|
return Phase.MahjongPhaseMachine.DefaultFanValue(fan);
|
||||||
return fan switch
|
|
||||||
{
|
|
||||||
"清一色" => 24,
|
|
||||||
"混一色" => 6,
|
|
||||||
"对对胡" => 2,
|
|
||||||
"碰碰和" => 6,
|
|
||||||
"暗七对" => 8,
|
|
||||||
"七对" => 8,
|
|
||||||
"带幺九" => 2,
|
|
||||||
"十三幺" => 88,
|
|
||||||
"鸡胡" => 1,
|
|
||||||
_ => 0
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string FlowerName(int tile) => tile switch
|
private static string FlowerName(int tile) => tile switch
|
||||||
|
|||||||
Reference in New Issue
Block a user