Compare commits
2 Commits
0d7a84edee
...
bbab3cc43b
| Author | SHA1 | Date |
|---|---|---|
|
|
bbab3cc43b | |
|
|
2e2ddebec4 |
|
|
@ -1,13 +0,0 @@
|
|||
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 +1,15 @@
|
|||
export { addDesertTriggers as addTriggers } from './effect';
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ 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[];
|
||||
|
|
@ -13,5 +14,5 @@ export type ContentModule = {
|
|||
getStartingItems: () => desert.Item[];
|
||||
|
||||
dialogues: YarnDialogues;
|
||||
addTriggers: (triggers: Triggers) => void;
|
||||
addTriggers: (triggers: Triggers, run: IRunContext) => void;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,3 +3,27 @@ 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,12 +287,7 @@ export function createTriggers(run: IRunContext) {
|
|||
return triggers;
|
||||
}
|
||||
export type Triggers = ReturnType<typeof createTriggers>;
|
||||
export function createStartWith(
|
||||
build: (triggers: Triggers, run: IRunContext) => void,
|
||||
run: IRunContext,
|
||||
) {
|
||||
const triggers = createTriggers(run);
|
||||
build(triggers, run);
|
||||
export function createStart(triggers: Triggers, run: IRunContext) {
|
||||
return async function (game: CombatGameContext) {
|
||||
await triggers.onCombatStart.execute(game, {});
|
||||
|
||||
|
|
|
|||
|
|
@ -21,3 +21,5 @@ export {
|
|||
CardEffectTarget,
|
||||
IntentEffectTarget,
|
||||
} from "../data/desert";
|
||||
|
||||
export { ContentModule } from "../data";
|
||||
|
|
|
|||
Loading…
Reference in New Issue