75 lines
5.0 KiB
JavaScript
Executable File
75 lines
5.0 KiB
JavaScript
Executable File
import { Session } from "../models/session.js";
|
|
import { PartyCreationState } from "./partyCreationState.js";
|
|
import { AwaitCommandsState } from "./awaitCommands.js";
|
|
|
|
const castle = `
|
|
▄
|
|
█▐▀▀▀▌▄
|
|
█ ▐▀▀▀▌▌▓▌
|
|
█ ▄▄ ▄▄▀
|
|
█ ▐▀▀▀▀
|
|
▄█▄
|
|
▓▀ ▀▌
|
|
▓▀ ▓▄
|
|
▄▓ ▐▓
|
|
▄▓ ▀▌
|
|
▓▀▀▀▀▀▓ ▓▀▀▀▀▓ ▐█▀▀▀▀▓
|
|
█ █ █ ▓░ ▓▌ ▓░
|
|
█ ▀▀▀▀▀ ▀▀▀▀▀ ▓░
|
|
▓▒ ▓░
|
|
▀▓▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
|
|
▐▌ █
|
|
▓▀▀▀▀█ ▐█▀▀▀█ ▐█▀▀▀▓▒ ▐▌ █ ▐▓▀▀▀▓▒ ▓▀▀▀▓▒ █▀▀▀▀▓
|
|
█ █ ▐▌ █ ▐▌ ▓▒ ▐▌ ▐██░ █ ▐█ ▓▄ █ ▐▌ █ ▐█
|
|
▓░ ▐▀▀▀ ▐▀▀▀ █░ ▐▌ ▓██▌ █ ▐█ ▀▀▀▀ ▀▀▀ ▐▌
|
|
▓▒ █ ▐▌ ▀██▌ █ █ ▐▌
|
|
▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▓▀ ▐▌ █ ▀▌▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▓
|
|
▐▌ █ ▐▌ █ █ ▐▌
|
|
▐▌ █ ▐▌ █ █ ▐▌
|
|
▐▌ ▓▌ █▀▀▀▀▀█ ▐▌▐▌▀▀▀▀█ ▓▀▀▀▀▓▄ █ █▀▀▀▀▀█ ▓▌ ▐▌
|
|
▓▌ ██▌ █ █ ▓▌▓▒ █ █ ▐▌ █ █ █ ▓██ ▐▓
|
|
▓▒ ▐██▌ █ █ ▓██░ ▐█
|
|
▓ ▐▐ █ █ ▐▐ █
|
|
█ █ █ █
|
|
█ █ ▄▄▄ █ █
|
|
█ █ ▄▀▀ ▀▀▓▄ █ █
|
|
█ █ ▄▌ ▀▓ █ █
|
|
▐█ █ ▓▀ ▐█ █ ▓▒
|
|
▐▌ █ ▐▓ ▐▌ ▐█ ▓▒
|
|
▐▌ █ █ █ ▐█ ▐▌
|
|
▐▌ ▓░ █ █ ▐▌ ▐▌
|
|
▓▒ ▓░ █ ▓▒ ▐▌ ▐▓
|
|
▓░ ▓░ ▐▌ ▀▌ ▐▌ ▐█
|
|
▀▌▄▄ ▓▄▄ ▐█ ▓▌ ▄▄▄▐▌ ▄▄▄▀
|
|
▐▐▐▀▀▀▀▐▐▐ ▐▐▀▀▀▀▀▀▐▐
|
|
`;
|
|
|
|
/** @interface */
|
|
export class JustLoggedInState {
|
|
/** @param {Session} session */
|
|
constructor(session) {
|
|
/** @type {Session} */
|
|
this.session = session;
|
|
}
|
|
|
|
// Show welcome screen
|
|
onAttach() {
|
|
this.session.sendText(castle);
|
|
this.session.sendText(["", "Welcome", "", "You can type “:quit” at any time to quit the game", ""]);
|
|
|
|
//
|
|
// Check if we need to create characters for the player
|
|
if (this.session.player.characters.size === 0) {
|
|
this.session.sendText("You haven't got any characters, so let's make some\n\n");
|
|
this.session.setState(new PartyCreationState(this.session));
|
|
return;
|
|
}
|
|
|
|
for (const character of this.session.player.characters) {
|
|
this.session.sendText(`Character: ${character.name} (${character.foundation})`);
|
|
}
|
|
|
|
this.session.setState(new AwaitCommandsState(this.session));
|
|
}
|
|
}
|