minor shit to debug frigid and TS ugh-i-ness

ui-refactor
Valerie 2021-06-22 22:38:49 -04:00
parent cbc2cec5f4
commit f8a966956a
8 changed files with 63 additions and 54 deletions

View File

@ -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",

View File

@ -129,7 +129,7 @@ export class Pawn extends Serializable implements Tickable {
}
}
static serializationDependencies(): (typeof Serializable)[] {
static serializationDependencies() {
return [Task]
}

View File

@ -1 +0,0 @@
export type Class<T> = new() => T;

View File

@ -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];

View File

@ -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)
}

View File

@ -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();
}
}

View File

@ -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
};

View File

@ -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"