Stuff
This commit is contained in:
@@ -1,10 +1,3 @@
|
||||
import figlet from "figlet";
|
||||
import { Session } from "../models/session.js";
|
||||
import { WebsocketMessage } from "../utils/messages.js";
|
||||
import { frameText } from "../utils/tui.js";
|
||||
import { Config } from "../config.js";
|
||||
import { State } from "./state.js";
|
||||
|
||||
// _____ ___ ____ ___ ____ _ _____
|
||||
// |_ _/ _ \| _ \ / _ \ _ / ___|___ _ ____ _____ _ __| |_ |_ _|__
|
||||
// | || | | | | | | | | (_) | | / _ \| '_ \ \ / / _ \ '__| __| | |/ _ \
|
||||
@@ -17,93 +10,93 @@ import { State } from "./state.js";
|
||||
// ___) | (_| __/ | | | __/\__ \
|
||||
// |____/ \___\___|_| |_|\___||___/
|
||||
|
||||
export class PartyCreationState extends State {
|
||||
/**
|
||||
* @proteted
|
||||
* @type {(msg: WebsocketMessage) => }
|
||||
*
|
||||
* NOTE: Should this be a stack?
|
||||
*/
|
||||
_dynamicMessageHandler;
|
||||
|
||||
/** @param {Session} session */
|
||||
constructor(session) {
|
||||
super();
|
||||
this.session = session;
|
||||
}
|
||||
|
||||
/** We attach (and execute) the next state */
|
||||
onAttach() {
|
||||
const charCount = this.session.player.characters.size;
|
||||
|
||||
//NOTE: could use async to optimize performance
|
||||
const createPartyLogo = frameText(figlet.textSync("Create Your Party"), {
|
||||
vPadding: 0,
|
||||
frameChars: "§=§§§§§§",
|
||||
});
|
||||
|
||||
this.sendText(createPartyLogo, { preformatted: true });
|
||||
|
||||
this.session.sendText(["", `Current party size: ${charCount}`, `Max party size: ${Config.maxPartySize}`]);
|
||||
const min = 1;
|
||||
const max = Config.maxPartySize - charCount;
|
||||
const prompt = [
|
||||
`Please enter an integer between ${min} - ${max}`,
|
||||
"((type *:help* to get more info about party size))",
|
||||
];
|
||||
|
||||
this.sendText(`You can create a party with ${min} - ${max} characters, how big should your party be?`);
|
||||
|
||||
/** @param {WebsocketMessage} m */
|
||||
this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
}
|
||||
|
||||
/** @param {WebsocketMessage} m */
|
||||
receiveCharacterCount(m) {
|
||||
if (m.isHelpRequest()) {
|
||||
return this.partySizeHelp();
|
||||
}
|
||||
|
||||
if (!m.isInteger()) {
|
||||
this.sendError("You didn't enter an integer");
|
||||
this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
return;
|
||||
}
|
||||
|
||||
const numCharactersToCreate = Number(m.text);
|
||||
if (numCharactersToCreate > Config.maxPartySize) {
|
||||
this.sendError("Number too high");
|
||||
this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
return;
|
||||
}
|
||||
|
||||
if (numCharactersToCreate < 1) {
|
||||
this.sendError("Number too low");
|
||||
this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
return;
|
||||
}
|
||||
|
||||
this.sendText(`Let's create ${numCharactersToCreate} character(s) for you :)`);
|
||||
}
|
||||
|
||||
partySizeHelp() {
|
||||
this.sendText([
|
||||
`Your party can consist of 1 to ${Config.maxPartySize} characters.`,
|
||||
"",
|
||||
"* Large parties tend live longer",
|
||||
`* If you have fewer than ${Config.maxPartySize} characters, you can`,
|
||||
" hire extra characters in your local inn.",
|
||||
"* large parties level slower because there are more",
|
||||
" characters to share the Experience Points",
|
||||
"* The individual members of small parties get better",
|
||||
" loot because they don't have to share, but it",
|
||||
" a lot of skill to accumulate loot as fast a larger",
|
||||
" party can",
|
||||
]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (Math.PI < 0 && Session && WebsocketMessage) {
|
||||
("STFU Linda");
|
||||
}
|
||||
// export class PartyCreationState extends State {
|
||||
// /**
|
||||
// * @proteted
|
||||
// * @type {(msg: WebsocketMessage) => }
|
||||
// *
|
||||
// * NOTE: Should this be a stack?
|
||||
// */
|
||||
// _dynamicMessageHandler;
|
||||
//
|
||||
// /** @param {Session} session */
|
||||
// constructor(session) {
|
||||
// super();
|
||||
// this.session = session;
|
||||
// }
|
||||
//
|
||||
// /** We attach (and execute) the next state */
|
||||
// onAttach() {
|
||||
// const charCount = this.session.player.characters.size;
|
||||
//
|
||||
// //NOTE: could use async to optimize performance
|
||||
// const createPartyLogo = frameText(figlet.textSync("Create Your Party"), {
|
||||
// vPadding: 0,
|
||||
// frameChars: "§=§§§§§§",
|
||||
// });
|
||||
//
|
||||
// this.sendText(createPartyLogo, { preformatted: true });
|
||||
//
|
||||
// this.session.sendText(["", `Current party size: ${charCount}`, `Max party size: ${Config.maxPartySize}`]);
|
||||
// const min = 1;
|
||||
// const max = Config.maxPartySize - charCount;
|
||||
// const prompt = [
|
||||
// `Please enter an integer between ${min} - ${max}`,
|
||||
// "((type *:help* to get more info about party size))",
|
||||
// ];
|
||||
//
|
||||
// this.sendText(`You can create a party with ${min} - ${max} characters, how big should your party be?`);
|
||||
//
|
||||
// /** @param {WebsocketMessage} m */
|
||||
// this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
// }
|
||||
//
|
||||
// /** @param {WebsocketMessage} m */
|
||||
// receiveCharacterCount(m) {
|
||||
// if (m.isHelpRequest()) {
|
||||
// return this.partySizeHelp();
|
||||
// }
|
||||
//
|
||||
// if (!m.isInteger()) {
|
||||
// this.sendError("You didn't enter an integer");
|
||||
// this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// const numCharactersToCreate = Number(m.text);
|
||||
// if (numCharactersToCreate > Config.maxPartySize) {
|
||||
// this.sendError("Number too high");
|
||||
// this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (numCharactersToCreate < 1) {
|
||||
// this.sendError("Number too low");
|
||||
// this.sendPrompt(prompt, (m) => this.receiveCharacterCount(m));
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// this.sendText(`Let's create ${numCharactersToCreate} character(s) for you :)`);
|
||||
// }
|
||||
//
|
||||
// partySizeHelp() {
|
||||
// this.sendText([
|
||||
// `Your party can consist of 1 to ${Config.maxPartySize} characters.`,
|
||||
// "",
|
||||
// "* Large parties tend live longer",
|
||||
// `* If you have fewer than ${Config.maxPartySize} characters, you can`,
|
||||
// " hire extra characters in your local inn.",
|
||||
// "* large parties level slower because there are more",
|
||||
// " characters to share the Experience Points",
|
||||
// "* The individual members of small parties get better",
|
||||
// " loot because they don't have to share, but it",
|
||||
// " a lot of skill to accumulate loot as fast a larger",
|
||||
// " party can",
|
||||
// ]);
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (Math.PI < 0 && Session && WebsocketMessage) {
|
||||
// ("STFU Linda");
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user