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";
|
export { addDesertTriggers as addTriggers } from './effect';
|
||||||
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,7 +2,6 @@ import { LoadResult as YarnDialogues } from "yarn-spinner-loader";
|
||||||
import { Triggers } from "../system/combat/triggers";
|
import { Triggers } from "../system/combat/triggers";
|
||||||
|
|
||||||
import type * as desert from "./desert";
|
import type * as desert from "./desert";
|
||||||
import { IRunContext } from "../system/combat";
|
|
||||||
|
|
||||||
export type ContentModule = {
|
export type ContentModule = {
|
||||||
getCards: () => desert.Card[];
|
getCards: () => desert.Card[];
|
||||||
|
|
@ -14,5 +13,5 @@ export type ContentModule = {
|
||||||
getStartingItems: () => desert.Item[];
|
getStartingItems: () => desert.Item[];
|
||||||
|
|
||||||
dialogues: YarnDialogues;
|
dialogues: YarnDialogues;
|
||||||
addTriggers: (triggers: Triggers, run: IRunContext) => void;
|
addTriggers: (triggers: Triggers) => void;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,27 +3,3 @@ export * from "./factory";
|
||||||
export * from "./prompts";
|
export * from "./prompts";
|
||||||
export * from "./triggers";
|
export * from "./triggers";
|
||||||
export * from "./types";
|
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;
|
return triggers;
|
||||||
}
|
}
|
||||||
export type Triggers = ReturnType<typeof createTriggers>;
|
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) {
|
return async function (game: CombatGameContext) {
|
||||||
await triggers.onCombatStart.execute(game, {});
|
await triggers.onCombatStart.execute(game, {});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,5 +21,3 @@ export {
|
||||||
CardEffectTarget,
|
CardEffectTarget,
|
||||||
IntentEffectTarget,
|
IntentEffectTarget,
|
||||||
} from "../data/desert";
|
} from "../data/desert";
|
||||||
|
|
||||||
export { ContentModule } from "../data";
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue