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", "chalk": "^4.1.1",
"deepmerge": "^4.2.2", "deepmerge": "^4.2.2",
"faker": "^5.5.3", "faker": "^5.5.3",
"frigid": "^1.3.8", "frigid": "^1.3.12",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"get-port": "^5.1.1", "get-port": "^5.1.1",
"mocha": "^9.0.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] 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() { static serializationDependencies() {
return Array.from(taskClasses.values()); let a = Array.from(taskClasses.values())
return a as unknown as (typeof Serializable)[];
} }
addTask({taskId, options}: TaskOptions) { addTask({taskId, options}: TaskOptions) {
if(!taskClasses.has(taskId)) if(!taskClasses.has(taskId))
throw new Error('unknown task: ' + 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(); const task = new taskClass();
this.tasks = [...this.tasks, task]; this.tasks = [...this.tasks, task];

View File

@ -5,9 +5,8 @@ import { Pawn } from '../Pawn.js';
import { Game } from '../Game.js'; import { Game } from '../Game.js';
import { panels } from '../ui/UI.js'; import { panels } from '../ui/UI.js';
import { progressbar, ProgressbarStyle } from '../Progressbar.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 { export abstract class Task extends Serializable {
progress = 0; 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); console.log('Registered task', id);
taskClasses.set(id, taskClass) taskClasses.set(id, taskClass)
} }

View File

@ -5,47 +5,30 @@ import { getTheme } from '@themes';
import { boxStyle, panels } from './UI.js'; import { boxStyle, panels } from './UI.js';
export class Popup { export class Popup {
box; box;
static show(content) { static show(content) {
new Popup(content) new Popup(content)
} }
private constructor(content) { private constructor(content) {
this.box = blessed.box({ this.box = blessed.box({
top: 'center', top: 'center',
left: 'center', left: 'center',
width: '100%', width: '100%',
height: 'shrink', height: 'shrink',
content: getTheme().normal(content) + `\n\n{right}` + getTheme().hotkey('enter') + getTheme().normal(`: Okay `) + '{/right}', content: getTheme().normal(content) + `\n\n{right}` + getTheme().hotkey('enter') + getTheme().normal(`: Okay `) + '{/right}',
tags: true, tags: true,
...boxStyle(), ...boxStyle(),
}); });
// let stuff = ' '; this.box.on('keypress', (evt, key) => {
// for(let i = 16; i < 34; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; if(key.full === 'escape' || key.full === 'enter') {
// for(let i = 52; i < 70; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; Game.current.clock.start();
// for(let i = 88; i < 106; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; panels.screen.remove(this.box);
// 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 '; panels.screen.append(this.box);
// stuff += '\n '; this.box.focus();
// for(let i = 34; i < 52; i ++) stuff += chalk.bgAnsi256(i).black(` ${i.toString().padStart(3, ' ')} ${(i-15)%6===0?chalk.reset(' '):''}`); stuff += '\n '; Game.current.clock.pause();
// 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();
}
} }

View File

@ -1,4 +1,5 @@
import chalk from 'chalk';
import blessed from 'neo-blessed'; import blessed from 'neo-blessed';
import ansi from 'sisteransi'; import ansi from 'sisteransi';
import { getTheme } from '../registries/Themes.js'; import { getTheme } from '../registries/Themes.js';
@ -131,3 +132,25 @@ export function start() {
started = true; started = true;
setTitle(''); 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" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
frigid@^1.3.8: frigid@^1.3.12:
version "1.3.9" version "1.3.13"
resolved "https://registry.yarnpkg.com/frigid/-/frigid-1.3.9.tgz#f9353b3d0ea5e38f69a2bb7c3fac8a8426f755b1" resolved "https://registry.yarnpkg.com/frigid/-/frigid-1.3.13.tgz#27d8592ec1aeb72964fbc4014e38e6c366c5e3b7"
integrity sha512-4s+5YWu4s7UblZVd6RQ+4foMs1km+QVdP04DtXNyja/5od9312EgLlgNOXszmbbw+7t/y7XkTBGA8ADtcpOdMQ== integrity sha512-suwEa7JuMvNqIlVpc848wIptC8o3Ztvadv8a1HojbaNcYdowOlqWi/ieSgQZkBVCpmrBOq7IeuaB6p4BvCUdHQ==
fs-extra@^10.0.0: fs-extra@^10.0.0:
version "10.0.0" version "10.0.0"