#nullable enable using Demo2.Domain; using ShrinkCommand; namespace Demo2.Runtime { [ShrinkCommandSubscriber] public static class Demo2Commands { [ShrinkCommand("demo2 status", Description = "显示规则工厂状态")] private static string Status() => Service().BuildStatus(); [ShrinkCommand("demo2 spawn-item ", Description = "生成物料", Permission = "demo2.admin.spawn")] private static string SpawnItem(Demo2MaterialKind kind, int quantity) { Service().SpawnItem(kind, quantity); return Service().BuildStatus(); } [ShrinkCommand("demo2 set-speed ", Description = "设置模拟速度", Permission = "demo2.admin.speed")] private static string SetSpeed(int speed) { Service().SetSpeed(speed); return "speed=" + Service().Speed; } [ShrinkCommand("demo2 start-wave", Description = "立即推进到下一战斗阶段", Permission = "demo2.admin.wave")] private static string StartWave() { Service().StartWaveImmediately(); return Service().BuildStatus(); } [ShrinkCommand("demo2 dump-ecs", Description = "导出 ECS 状态", Permission = "demo2.admin.dump")] private static string DumpEcs() => Service().DumpEcs(); [ShrinkCommand("demo2 reload-mods", Description = "重载并暂存 Demo2 Mod", Permission = "demo2.admin.mods")] private static string ReloadMods() => Service().StageModReload(); private static Demo2GameService Service() => Demo2GameService.Current ?? throw new System.InvalidOperationException("Demo2 service unavailable."); } }