diff --git a/package.json b/package.json index 71dd1a9..f8c38a8 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "chalk": "^4.1.1", "deepmerge": "^4.2.2", "faker": "^5.5.3", - "frigid": "^1.3.8", + "frigid": "^1.3.12", "fs-extra": "^10.0.0", "get-port": "^5.1.1", "mocha": "^9.0.1", diff --git a/src/Pawn.ts b/src/Pawn.ts index 338310b..1adbae8 100644 --- a/src/Pawn.ts +++ b/src/Pawn.ts @@ -129,7 +129,7 @@ export class Pawn extends Serializable implements Tickable { } } - static serializationDependencies(): (typeof Serializable)[] { + static serializationDependencies() { return [Task] } diff --git a/src/Reflection.ts b/src/Reflection.ts deleted file mode 100644 index 2c8772e..0000000 --- a/src/Reflection.ts +++ /dev/null @@ -1 +0,0 @@ -export type Class = new() => T; \ No newline at end of file diff --git a/src/TaskList.ts b/src/TaskList.ts index 49ef4f0..1e27348 100644 --- a/src/TaskList.ts +++ b/src/TaskList.ts @@ -12,14 +12,19 @@ export class TaskList extends Serializable implements Renderable { } static serializationDependencies() { - return Array.from(taskClasses.values()); + let a = Array.from(taskClasses.values()) + return a as unknown as (typeof Serializable)[]; } addTask({taskId, options}: TaskOptions) { if(!taskClasses.has(taskId)) throw new Error('unknown task: ' + taskId); - const taskClass = taskClasses.get(taskId); + // this is any because TS doesnt understand that + // static references and constructors are the + // SAME THING. + // in TS, they're MAGICALLY incompatible... + const taskClass: any = taskClasses.get(taskId); const task = new taskClass(); this.tasks = [...this.tasks, task]; diff --git a/src/registries/Tasks.ts b/src/registries/Tasks.ts index cf0abd4..2daf0b4 100644 --- a/src/registries/Tasks.ts +++ b/src/registries/Tasks.ts @@ -5,9 +5,8 @@ import { Pawn } from '../Pawn.js'; import { Game } from '../Game.js'; import { panels } from '../ui/UI.js'; import { progressbar, ProgressbarStyle } from '../Progressbar.js'; -import { Class } from '../Reflection.js'; -export const taskClasses: Map> = new Map(); +export const taskClasses: Map = new Map(); export abstract class Task extends Serializable { progress = 0; @@ -69,7 +68,7 @@ export abstract class Task extends Serializable { } } -export function registerTask(id: string, taskClass: Class) { +export function registerTask(id: string, taskClass: typeof Task) { console.log('Registered task', id); taskClasses.set(id, taskClass) } \ No newline at end of file diff --git a/src/ui/Popup.ts b/src/ui/Popup.ts index ffe28a1..824567a 100644 --- a/src/ui/Popup.ts +++ b/src/ui/Popup.ts @@ -5,47 +5,30 @@ import { getTheme } from '@themes'; import { boxStyle, panels } from './UI.js'; export class Popup { - box; + box; - static show(content) { - new Popup(content) - } + static show(content) { + new Popup(content) + } - private constructor(content) { - this.box = blessed.box({ - top: 'center', - left: 'center', - width: '100%', - height: 'shrink', - content: getTheme().normal(content) + `\n\n{right}` + getTheme().hotkey('enter') + getTheme().normal(`: Okay `) + '{/right}', - tags: true, - ...boxStyle(), - }); - // let stuff = ' '; - // for(let i = 16; i < 34; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 52; i < 70; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 88; i < 106; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 124; i < 142; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 160; i < 178; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 196; i < 214; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // stuff += '\n '; - // for(let i = 34; i < 52; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 70; i < 88; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 106; i < 124; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 142; i < 160; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 178; i < 196; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // for(let i = 214; i < 232; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; - // stuff += '\n'; - // for(let i = 232; i < 256; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%18===0?'\n':''}`) - // this.box.setContent(stuff) - this.box.on('keypress', (evt, key) => { - if(key.full === 'escape' || key.full === 'enter') { - Game.current.clock.start(); - panels.screen.remove(this.box); - } - }); - panels.screen.append(this.box); - this.box.focus(); - Game.current.clock.pause(); - } + private constructor(content) { + this.box = blessed.box({ + top: 'center', + left: 'center', + width: '100%', + height: 'shrink', + content: getTheme().normal(content) + `\n\n{right}` + getTheme().hotkey('enter') + getTheme().normal(`: Okay `) + '{/right}', + tags: true, + ...boxStyle(), + }); + this.box.on('keypress', (evt, key) => { + if(key.full === 'escape' || key.full === 'enter') { + Game.current.clock.start(); + panels.screen.remove(this.box); + } + }); + panels.screen.append(this.box); + this.box.focus(); + Game.current.clock.pause(); + } } \ No newline at end of file diff --git a/src/ui/UI.ts b/src/ui/UI.ts index cf5d122..03fa1f1 100644 --- a/src/ui/UI.ts +++ b/src/ui/UI.ts @@ -1,4 +1,5 @@ +import chalk from 'chalk'; import blessed from 'neo-blessed'; import ansi from 'sisteransi'; import { getTheme } from '../registries/Themes.js'; @@ -130,4 +131,26 @@ export function start() { started = true; setTitle(''); -} \ No newline at end of file +} + +let ansiTestCard = '{center}'; +for(let i = 16; i < 34; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 52; i < 70; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 88; i < 106; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 124; i < 142; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 160; i < 178; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 196; i < 214; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +ansiTestCard += '\n'; +for(let i = 34; i < 52; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 70; i < 88; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 106; i < 124; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 142; i < 160; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 178; i < 196; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +for(let i = 214; i < 232; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); ansiTestCard += '\n'; +ansiTestCard += '\n'; +for(let i = 232; i < 256; i ++) ansiTestCard += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} `) +ansiTestCard += '{/center}'; + +export { + ansiTestCard +}; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4a1b4c5..93b9a85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -316,10 +316,10 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -frigid@^1.3.8: - version "1.3.9" - resolved "https://registry.yarnpkg.com/frigid/-/frigid-1.3.9.tgz#f9353b3d0ea5e38f69a2bb7c3fac8a8426f755b1" - integrity sha512-4s+5YWu4s7UblZVd6RQ+4foMs1km+QVdP04DtXNyja/5od9312EgLlgNOXszmbbw+7t/y7XkTBGA8ADtcpOdMQ== +frigid@^1.3.12: + version "1.3.13" + resolved "https://registry.yarnpkg.com/frigid/-/frigid-1.3.13.tgz#27d8592ec1aeb72964fbc4014e38e6c366c5e3b7" + integrity sha512-suwEa7JuMvNqIlVpc848wIptC8o3Ztvadv8a1HojbaNcYdowOlqWi/ieSgQZkBVCpmrBOq7IeuaB6p4BvCUdHQ== fs-extra@^10.0.0: version "10.0.0"