colony names in mdns

master
Valerie 2021-06-15 21:53:00 -04:00
parent 655cb671f9
commit 4e76133bc6
7 changed files with 42 additions and 11 deletions

View File

@ -7,11 +7,13 @@
"dependencies": {
"@types/blessed": "^0.1.17",
"@types/bonjour": "^3.5.8",
"@types/faker": "^5.5.6",
"@types/uuid": "^8.3.0",
"bonjour": "^3.5.0",
"chalk": "^4.1.1",
"faker": "^5.5.3",
"frigid": "^1.3.6",
"get-port": "^5.1.1",
"logger": "^0.0.1",
"neo-blessed": "^0.2.0",
"printable-characters": "^1.0.42",

View File

@ -5,11 +5,12 @@ import { TaskList } from './TaskList.js';
import { Inventory } from './Inventory.js';
import { Menu } from './Menu.js';
import Time, { Tickable } from './Time.js';
import { render, Renderable } from './UI.js';
import { render, Renderable, setTitle } from './UI.js';
import log from './log.js';
import { ChopTreeTask } from './ChopTreeTask.js';
import { Task } from './Task.js';
import { ready } from './mDNS.js';
import faker from 'faker';
let game = null;
@ -20,6 +21,7 @@ export class Game extends Frigid implements Tickable, Renderable {
board: TaskList;
menu: Menu;
clock: Time;
name: string;
[DEBUG] = true;
@ -55,6 +57,8 @@ export class Game extends Frigid implements Tickable, Renderable {
ctor () {
game = this;
this.name ??= faker.address.city();
setTitle(this.name);
this.pawns ??= [];
this.selected ??= this.pawns[0] || null;
this.menu = new Menu();
@ -63,7 +67,7 @@ export class Game extends Frigid implements Tickable, Renderable {
this.clock ??= new Time();
this.clock.thing = this;
this.clock.start();
ready();
ready(this.name);
render(this);
}

View File

@ -31,10 +31,13 @@ export class Pawn extends Serializable implements Tickable {
};
job: Task;
awake: boolean;
sex: number;
energy: number;
fun: number;
age: number;
async tick() {
this.energy -= energyScale;
@ -78,6 +81,10 @@ export class Pawn extends Serializable implements Tickable {
first: faker.name.firstName(),
last: faker.name.lastName()
};
if(!this.sex) {
this.sex = Math.round(Math.random());
this.name.first = faker.name.firstName(this.sex);
}
this.awake ??= true;
this.energy ??= 100;
if(this.job?.completed) {

View File

@ -40,7 +40,7 @@ export default class Time extends Serializable{
}
ctor() {
this.rate ??= 10;
this.rate = 60;
this.minute ??= 0;
this.hour ??= 0;
this.day ??= 0;

View File

@ -76,9 +76,14 @@ const titleBar = blessed.box({
width: '100%',
height: 1,
tags: true,
content: ' Colony Manager Sim{|}{bold}{black-fg}v0.1.0 {/}'
});
export function setTitle(title) {
titleBar.setContent(` ${title}{|}{bold}{black-fg}v0.1.0 {/}`);
}
setTitle('');
menuPanel.focus();
screen.append(tasksPanel);

View File

@ -1,15 +1,17 @@
import bonjour from 'bonjour';
import log from './log.js';
import getPort from 'get-port';
import os from 'os'
import * as uuid from 'uuid';
import faker from 'faker';
const mdns = bonjour();
const ID = uuid.v4();
let devices = [];
class Player {
name: string;
address: string;
host: string;
port: number;
toString() {
@ -25,19 +27,22 @@ const network = {
export default network;
export function ready() {
export async function ready(name, onThing?) {
const port = await getPort({port: getPort.makeRange(52300, 52399)});
mdns.publish({
type: 'dfi',
name: os.hostname() + '-' + ID,
port: 6969
name,
port: port
});
}
mdns.find({
type: 'dfi'
}, (service) => {
log.info('found network device', service);
const p = new Player();
p.name = service.fqdn;
p.name = service.name;
p.host = service.host;
p.port = service.port;
log.info('Found player', p);
devices.push(p);
});

View File

@ -14,6 +14,10 @@
dependencies:
"@types/node" "*"
"@types/faker@^5.5.6":
version "5.5.6"
resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.6.tgz#039b700a9d8ad9150ecc842bf5e717e2027b6f75"
"@types/node@*":
version "15.12.2"
resolved "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz"
@ -125,6 +129,10 @@ get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
get-port@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"