feat(content): add action costs and multi-yield schema

This commit is contained in:
ginnoir
2026-06-11 18:16:26 -05:00
parent 458a795014
commit ee3d463c9c
9 changed files with 85 additions and 18 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ function testContent() {
id: 'forage',
name: 'Forage',
durationMs: 300,
yields: { resourceId: 'gold', amount: 1 },
yields: [{ resourceId: 'gold', amount: 1 }],
},
],
});
+1 -1
View File
@@ -6,7 +6,7 @@ function testContent() {
return buildContent({
resources: [{ id: 'gold', name: 'Gold', startAmount: 5 }],
actions: [
{ id: 'forage', name: 'Forage', durationMs: 300, yields: { resourceId: 'gold', amount: 2 } },
{ id: 'forage', name: 'Forage', durationMs: 300, yields: [{ resourceId: 'gold', amount: 2 }] },
],
});
}
+1 -1
View File
@@ -15,7 +15,7 @@ function testContent() {
return buildContent({
resources: [{ id: 'gold', name: 'Gold', startAmount: 0 }],
actions: [
{ id: 'forage', name: 'Forage', durationMs: 3000, yields: { resourceId: 'gold', amount: 1 } },
{ id: 'forage', name: 'Forage', durationMs: 3000, yields: [{ resourceId: 'gold', amount: 1 }] },
],
});
}
+3 -1
View File
@@ -50,6 +50,8 @@ export function tickGame(state: GameState, content: Content, tickMs: number): vo
state.actionElapsedMs += tickMs;
while (state.actionElapsedMs >= action.durationMs) {
state.actionElapsedMs -= action.durationMs;
state.resources[action.yields.resourceId] += action.yields.amount;
for (const y of action.yields) {
state.resources[y.resourceId] += y.amount;
}
}
}