落地无头规则引擎与局内内容,便于命令行复现对战。

规则、卡包与测试放在同一套核心里,避免表现层自行结算。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-09 02:06:23 +08:00
co-authored by Cursor
parent ce2b61fc6a
commit ae13f1d06a
51 changed files with 3429 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
using CardGame.Core;
namespace Game.Core.Tests;
internal static class Cards
{
private static readonly Dictionary<string, CardDefinition> ById = CardJson
.LoadCatalog(Path.Combine(AppContext.BaseDirectory, "content", "cards"));
public static IReadOnlyDictionary<string, CardDefinition> Catalog => ById;
public static CardDefinition Get(string id) => ById[id];
public static CardDefinition Spark => ById["card.example.spark"];
public static CardDefinition Wisp => ById["card.example.wisp"];
public static CardDefinition Salve => ById["card.example.salve"];
public static CardDefinition Ward => ById["card.example.ward"];
public static CardDefinition Lantern => ById["card.example.lantern"];
public static CardDefinition Fuse => ById["card.example.fuse"];
public static CardDefinition BaseField => ById["card.system.base_field"];
public static CardDefinition Patrol => ById["card.guard.patrol"];
public static CardDefinition Captain => ById["card.guard.captain"];
public static CardDefinition Believer => ById["card.cult.believer"];
public static CardDefinition Camp => ById["card.cult.camp"];
public static CardDefinition Crossbow => ById["card.guard.crossbow"];
public static CardDefinition Conscript => ById["card.guard.conscript"];
public static List<CardDefinition> Repeat(CardDefinition card, int count) =>
Enumerable.Repeat(card, count).ToList();
}