minor shit to debug frigid and TS ugh-i-ness
parent
cbc2cec5f4
commit
f8a966956a
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ export class Pawn extends Serializable implements Tickable {
|
|||
}
|
||||
}
|
||||
|
||||
static serializationDependencies(): (typeof Serializable)[] {
|
||||
static serializationDependencies() {
|
||||
return [Task]
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
export type Class<T> = new() => T;
|
||||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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<string, Class<Task>> = new Map();
|
||||
export const taskClasses: Map<string, typeof Task> = 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<Task>) {
|
||||
export function registerTask(id: string, taskClass: typeof Task) {
|
||||
console.log('Registered task', id);
|
||||
taskClasses.set(id, taskClass)
|
||||
}
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
25
src/ui/UI.ts
25
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('');
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
};
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue