Compare commits
No commits in common. "bbab3cc43b0b3ab73f23843c82b68c5e560700b9" and "0d7a84edeef5afb2477d3b9026d084449623a91a" have entirely different histories.
bbab3cc43b
...
0d7a84edee
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, {});
|
||||
|
||||
|
|
|
|||
|
|
@ -21,5 +21,3 @@ export {
|
|||
CardEffectTarget,
|
||||
IntentEffectTarget,
|
||||
} from "../data/desert";
|
||||
|
||||
export { ContentModule } from "../data";
|
||||
|
|
|
|||
Loading…
Reference in New Issue