src/jg/gameformat/game.js
- /**
- * The object you pass to the {@link jumbogrove} function.
- *
- * @example
- * const game = {
- * id: 'jg-example',
- * version: 1,
- * globalState: {
- * aliensHaveInvaded: false,
- * },
- * willEnter: (model, ui, previousId, nextId) => {
- * console.log("Transitioning from", previousId, "to", nextId);
- * },
- * };
- * jumbogrove('#app', game);
- */
- class game {
- /** @ignore */
- constructor() {
- /**
- * An ID unique to your game. Used to determine save location.
- * @type {string}
- */
- this.id = null;
-
- /**
- * The current version of your game. Used to determine save location.
- * @type {number}
- */
- this.version = null;
-
- /**
- * The ID of the first situation you want to show the player.
- * @type {string}
- */
- this.initialSituation = 'start';
-
- /**
- * If you set this to `false`, the left sidebar will not be shown.
- * Default `true`.
- * @type {Boolean}
- */
- this.showNav = true;
-
- /**
- * If you set this to `false`, the right sidebar will not be shown.
- * Default `true`.
- * @type {Boolean}
- */
- this.showAside = true;
-
- /**
- * If you set this to `false`, fewer styles will be applied to
- * the HTML.
- * Default `true`.
- * @type {Boolean}
- */
- this.defaultStylesheet = true;
-
- /**
- * If you set this to `false`, the browser will not scroll as new text
- * is added.
- * Default `true`.
- * @type {Boolean}
- */
- this.autoScroll = true;
-
- /**
- * The Markdown string you want to show at the top of the left sidebar.
- * @type {string}
- */
- this.navHeader = '';
-
- /**
- * The Markdown string you want to show at the top of the right sidebar.
- * This string is processed by the template engine before being displayed.
- * @type {string}
- */
- this.asideHeader = '';
-
- /**
- * The Markdown string you want to show whenever the game is saved.
- * @type {string}
- */
- this.gameSaveMessage = null;
-
- /**
- * The initial value of {@link model.globalState}. Must be JSON-safe.
- * @type {*}
- */
- this.globalState = {};
-
- /**
- * List of {@link character} definitions.
- * **Note:** this is not the same as the {@link Character} class!
- * There's a difference between what you write in your game definition, and what gets passed to the
- * various callbacks.
- * @type {character}
- */
- this.characters = [];
-
- /**
- * List of {@link situation} definitions.
- * **Note:** this is not the same as the {@link Situation} class!
- * There's a difference between what you write in your game definition, and what gets passed to the
- * various callbacks.
- * @type {situation}
- */
- this.situations = [];
- }
-
- /**
- * Called immediately after all initial objects have been created, but before the
- * first situation has been entered. This is where you would add Markdown plugins
- * and Nunjucks filters.
- * @param {model} model
- * @param {ui} ui
- */
- init(model, ui) { }
-
- /**
- * Called when the game has requested to enter a new situation. This function returns
- * a truthy value (`true`) if this should be allowed, `false` if not.
- *
- * It is safe to call `model.do()` or `model.goTo()` from `willEnter()`, as long as
- * you return `false` afterward.
- *
- * @param {model} model
- * @param {ui} ui
- * @param {string} previousId
- * @param {string} nextId
- * @returns {Boolean}
- */
- willEnter(model, ui, previousId, nextId) { }
-
- /**
- * Called when the game has just entered a new situation.
- * @param {model} model
- * @param {ui} ui
- * @param {string} previousId
- * @param {string} nextId
- */
- didEnter(model, ui, previousId, nextId) { }
-
- /**
- * Called when the game is about to exit a situation.
- * @param {model} model
- * @param {ui} ui
- * @param {string} thisId
- * @param {string} nextId
- */
- willExit(model, ui, thisId, nextId) { }
-
- /**
- * Called when the game just exited a situation.
- * @param {model} model
- * @param {ui} ui
- * @param {string} thisId
- * @param {string} nextId
- */
- didExit(model, ui, thisId, nextId) { }
-
- /**
- * Called when the game is about to execute the given action on the given sitaution.
- * @param {model} model
- * @param {ui} ui
- * @param {Situation} situation
- * @param {string} action
- */
- willAct(model, ui, situation, action) { }
-
- /**
- * Called when the game is just executed the given action on the given sitaution.
- * @param {model} model
- * @param {ui} ui
- * @param {Situation} situation
- * @param {string} action
- */
- didAct(model, ui, situation, action) { }
- };
- export default game;