Compare commits

..

No commits in common. "bbab3cc43b0b3ab73f23843c82b68c5e560700b9" and "0d7a84edeef5afb2477d3b9026d084449623a91a" have entirely different histories.

6 changed files with 21 additions and 44 deletions

View File

@ -0,0 +1,13 @@
import { IRunContext } from "@/samples/slay-the-spire-like/system/combat/types";
import { Triggers } from "@/samples/slay-the-spire-like/system/combat/triggers";
import { addInstantEffectTriggers } from "./instant";
import { addDamageTriggers } from "./damage";
import { addTurnStartTriggers } from "./turn-start";
import { addCardEventTriggers } from "./card-events";
export function addDesertTriggers(triggers: Triggers, run: IRunContext) {
addInstantEffectTriggers(triggers);
addDamageTriggers(triggers);
addTurnStartTriggers(triggers);
addCardEventTriggers(triggers, run);
}

View File

@ -1,15 +1 @@
import { addInstantEffectTriggers } from "./instant";
import { addDamageTriggers } from "./damage";
import { addTurnStartTriggers } from "./turn-start";
import { addCardEventTriggers } from "./card-events";
import {
IRunContext,
Triggers,
} from "@/samples/slay-the-spire-like/system/combat";
export function addTriggers(triggers: Triggers, run: IRunContext) {
addInstantEffectTriggers(triggers);
addDamageTriggers(triggers);
addTurnStartTriggers(triggers);
addCardEventTriggers(triggers, run);
}
export { addDesertTriggers as addTriggers } from './effect';

View File

@ -2,7 +2,6 @@ import { LoadResult as YarnDialogues } from "yarn-spinner-loader";
import { Triggers } from "../system/combat/triggers";
import type * as desert from "./desert";
import { IRunContext } from "../system/combat";
export type ContentModule = {
getCards: () => desert.Card[];
@ -14,5 +13,5 @@ export type ContentModule = {
getStartingItems: () => desert.Item[];
dialogues: YarnDialogues;
addTriggers: (triggers: Triggers, run: IRunContext) => void;
addTriggers: (triggers: Triggers) => void;
};

View File

@ -3,27 +3,3 @@ export * from "./factory";
export * from "./prompts";
export * from "./triggers";
export * from "./types";
import { GameHost } from "@/core/game-host";
import { ContentModule } from "../types";
import { createCommandRegistry } from "@/utils/command";
import { createStart, createTriggers, Triggers } from "./triggers";
import { CombatState, IRunContext } from "./types";
export class CombatGameHost extends GameHost<CombatState> {
public readonly triggers: Triggers;
constructor(
private module: ContentModule,
private runContext: IRunContext,
private initialState: CombatState,
) {
let triggers: Triggers;
super(
createCommandRegistry(),
() => initialState,
createStart((triggers = createTriggers(runContext)), runContext),
);
module.addTriggers(triggers, runContext);
this.triggers = triggers;
}
}

View File

@ -287,7 +287,12 @@ export function createTriggers(run: IRunContext) {
return triggers;
}
export type Triggers = ReturnType<typeof createTriggers>;
export function createStart(triggers: Triggers, run: IRunContext) {
export function createStartWith(
build: (triggers: Triggers, run: IRunContext) => void,
run: IRunContext,
) {
const triggers = createTriggers(run);
build(triggers, run);
return async function (game: CombatGameContext) {
await triggers.onCombatStart.execute(game, {});

View File

@ -21,5 +21,3 @@ export {
CardEffectTarget,
IntentEffectTarget,
} from "../data/desert";
export { ContentModule } from "../data";