Add comments throughout.
This commit is contained in:
@ -1,33 +1,42 @@
|
||||
/**
|
||||
* Term.ts contains the type information for parsing user sentences.
|
||||
*/
|
||||
|
||||
import Player from "../Player.ts";
|
||||
import Scene from "../Scene.ts";
|
||||
|
||||
// ActionFn is the signature for functions that contain the logic associated with verbs
|
||||
// the player uses.
|
||||
export type ActionFn = (
|
||||
player: Player,
|
||||
scene: Scene,
|
||||
target?: string,
|
||||
object?: string
|
||||
) => string;
|
||||
target?: string, // the target is the target of the action.
|
||||
object?: string // the object is an item that is used with the action on the target.
|
||||
) => string; // should return a description of the result for the player.
|
||||
|
||||
// Constant is a specific word that the engine knows about. If the player uses a word
|
||||
// that is not a Constant, then it should be a variable that represents something that
|
||||
// is defined in the writer's story files.
|
||||
export interface Constant {
|
||||
constant: string;
|
||||
category: Category;
|
||||
}
|
||||
|
||||
export type Category =
|
||||
| "action"
|
||||
| "direction"
|
||||
| "compound"
|
||||
| "position"
|
||||
| "interaction";
|
||||
// Category is a union of the different kinds of Constants.
|
||||
export type Category = "action" | "direction" | "position" | "interaction";
|
||||
|
||||
// Term describes a known word that the player can use. It tells the parse what kinds of
|
||||
// words can come after it and what it means.
|
||||
export interface Term {
|
||||
precedesCategories: Category[];
|
||||
precedesConstants: Constant[];
|
||||
category: Category;
|
||||
constant: string;
|
||||
canPrecedeVariable: boolean;
|
||||
precedesCategories: Category[]; // categories of Constant that can follow this Term
|
||||
precedesConstants: Constant[]; // Constants that can follow this Term
|
||||
category: Category; // the category of this Terms Constant is part of
|
||||
constant: string; // the name of the Constant that this Term describes
|
||||
canPrecedeVariable: boolean; // indicates that what follows might be a variable
|
||||
}
|
||||
|
||||
// ActionTerm extends Term, adding the function needed to execute a verb. It also
|
||||
// guarentees that the category is "action".
|
||||
export interface ActionTerm extends Term {
|
||||
action: ActionFn;
|
||||
category: "action";
|
||||
|
Reference in New Issue
Block a user