feat(content): migrate stub actions to kind/group model

This commit is contained in:
ginnoir
2026-06-11 20:23:49 -05:00
parent c1b38e36aa
commit b54805637c
9 changed files with 83 additions and 13 deletions
+1
View File
@@ -10,6 +10,7 @@ function testContent() {
{
id: 'forage',
name: 'Forage',
group: { id: 'test', label: 'Test' },
durationMs: 300,
yields: [{ resourceId: 'gold', amount: 1 }],
},
+14 -3
View File
@@ -10,6 +10,8 @@ import {
tickGame,
} from '../game';
const DEFAULT_GROUP = { id: 'test', label: 'Test' };
function testContent() {
return buildContent({
resources: [{ id: 'gold', name: 'Gold', startAmount: 5 }],
@@ -17,6 +19,7 @@ function testContent() {
{
id: 'forage',
name: 'Forage',
group: DEFAULT_GROUP,
durationMs: 300,
yields: [{ resourceId: 'gold', amount: 2 }],
},
@@ -28,9 +31,9 @@ function queueContent() {
return buildContent({
resources: [{ id: 'gold', name: 'Gold', startAmount: 0 }],
actions: [
{ id: 'a', name: 'A', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'b', name: 'B', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'c', name: 'C', durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'a', name: 'A', group: DEFAULT_GROUP, durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'b', name: 'B', group: DEFAULT_GROUP, durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
{ id: 'c', name: 'C', group: DEFAULT_GROUP, durationMs: 1000, yields: [{ resourceId: 'gold', amount: 1 }] },
],
});
}
@@ -45,12 +48,14 @@ function costContent() {
{
id: 'gather',
name: 'Gather',
group: DEFAULT_GROUP,
durationMs: 300,
yields: [{ resourceId: 'supplies', amount: 2 }],
},
{
id: 'trade',
name: 'Trade',
group: DEFAULT_GROUP,
durationMs: 300,
costs: [{ resourceId: 'supplies', amount: 5 }],
yields: [{ resourceId: 'coin', amount: 3 }],
@@ -58,6 +63,7 @@ function costContent() {
{
id: 'scout',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 300,
yields: [{ resourceId: 'coin', amount: 1 }],
unlock: { minResources: { coin: 1 } },
@@ -204,6 +210,7 @@ describe('unlock conditions', () => {
{
id: 'secret',
name: 'Secret',
group: DEFAULT_GROUP,
durationMs: 100,
yields: [{ resourceId: 'gold', amount: 1 }],
unlock: { requireStoryFlags: ['path_scouted'] },
@@ -245,12 +252,14 @@ describe('completion advances queue', () => {
{
id: 'cheap',
name: 'Cheap',
group: DEFAULT_GROUP,
durationMs: 100,
yields: [{ resourceId: 'supplies', amount: 1 }],
},
{
id: 'dear',
name: 'Dear',
group: DEFAULT_GROUP,
durationMs: 100,
costs: [{ resourceId: 'supplies', amount: 6 }],
yields: [{ resourceId: 'supplies', amount: 1 }],
@@ -258,6 +267,7 @@ describe('completion advances queue', () => {
{
id: 'free',
name: 'Free',
group: DEFAULT_GROUP,
durationMs: 100,
yields: [{ resourceId: 'supplies', amount: 1 }],
},
@@ -283,6 +293,7 @@ describe('completion advances queue', () => {
{
id: 'combo',
name: 'Combo',
group: DEFAULT_GROUP,
durationMs: 100,
yields: [
{ resourceId: 'a', amount: 2 },
+1
View File
@@ -18,6 +18,7 @@ function testContent() {
{
id: 'forage',
name: 'Forage',
group: { id: 'test', label: 'Test' },
durationMs: 3000,
yields: [{ resourceId: 'gold', amount: 1 }],
},
+7
View File
@@ -13,6 +13,8 @@ import {
type StoryEvent,
} from '../story';
const DEFAULT_GROUP = { id: 'test', label: 'Test' };
function gameContent() {
const base = buildContent({
resources: [
@@ -23,6 +25,7 @@ function gameContent() {
{
id: 'scout_path',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 1000,
costs: [],
yields: [{ resourceId: 'coin', amount: 1 }],
@@ -54,6 +57,7 @@ function gameContentWithActionTrigger() {
{
id: 'scout_path',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 1000,
costs: [],
yields: [{ resourceId: 'coin', amount: 1 }],
@@ -91,6 +95,7 @@ function gameContentWithThreshold() {
{
id: 'scout_path',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 1000,
costs: [],
yields: [{ resourceId: 'coin', amount: 1 }],
@@ -132,6 +137,7 @@ function gameContentWithFork() {
{
id: 'scout_path',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 1000,
costs: [],
yields: [{ resourceId: 'coin', amount: 1 }],
@@ -189,6 +195,7 @@ function gameContentWithGatedChoice() {
{
id: 'scout_path',
name: 'Scout',
group: DEFAULT_GROUP,
durationMs: 1000,
costs: [],
yields: [{ resourceId: 'coin', amount: 1 }],