sending info?!

master
Bronwen 2021-06-15 23:53:51 -04:00
parent 4e76133bc6
commit 794fd4e4a6
4 changed files with 64 additions and 10 deletions

View File

@ -20,6 +20,7 @@
"sisteransi": "^1.0.5",
"typescript": "^4.3.2",
"uuid": "^8.3.2",
"ws": "^7.4.6",
"yarn": "^1.22.10"
},
"scripts": {

View File

@ -30,13 +30,8 @@ export class Menu implements Renderable {
constructor() {
menuPanel.on('keypress', (evt, key) => {
log.info('keypress', key);
if (key.full === 'delete') {
Game.current.removePawn(Game.current.selected);
} else if (key.full === 'up') {
Game.current.advanceSelection(-1);
} else if (key.full === 'down') {
Game.current.advanceSelection(1);
} else if (key.full === 'left') {
if (key.full === 'left') {
this.view = View[Object.keys(View)[Math.min(Math.max(Object.values(View).indexOf(this.view) - 1, 0), Object.keys(View).length - 1)]]
} else if (key.full === 'right') {
this.view = View[Object.keys(View)[Math.min(Math.max(Object.values(View).indexOf(this.view) + 1, 0), Object.keys(View).length - 1)]]
@ -50,6 +45,26 @@ export class Menu implements Renderable {
this.subMenu = SubMenu.NONE;
}
if(this.view === View.PAWNS) {
if (key.full === 'delete') {
Game.current.removePawn(Game.current.selected);
} else if (key.full === 'up') {
Game.current.advanceSelection(-1);
} else if (key.full === 'down') {
Game.current.advanceSelection(1);
}
}
if(this.view === View.MULTIPLAYER) {
if (key.full === 'enter') {
mdns.players[this.multiplayerSelected].sendItem(null);
} else if (key.full === 'up') {
this.multiplayerSelected --;
} else if (key.full === 'down') {
this.multiplayerSelected ++;
}
}
if(this.subMenu === SubMenu.TREES) {
if (key.full === '=') {
this.trees ++;
@ -148,9 +163,14 @@ export class Menu implements Renderable {
})()}`
}
multiplayerSelected = 0;
renderMultiplayer() {
if(mdns.players.length === 0) return `{center}${tags.bright}${tags.black.fg}No friends online{/center}`;
return mdns.players.map(player => player.toString()).join('\n');
return mdns.players.map((player, i) => {
if(i === this.multiplayerSelected) return '> ' + player.toString();
else return player.toString();
}).join('\n');
}
renderInv() {

View File

@ -4,10 +4,15 @@ import getPort from 'get-port';
import os from 'os'
import * as uuid from 'uuid';
import faker from 'faker';
import chalk from 'chalk';
import { Item, ItemState } from './Item.js';
import WebSocket from 'ws';
import { Popup } from './Popup.js';
import { inspect } from 'util'
const mdns = bonjour();
const ID = uuid.v4();
let devices = [];
let devices: Player[] = [];
class Player {
name: string;
@ -15,7 +20,24 @@ class Player {
port: number;
toString() {
return ` ${this.name}`;
return ` ${this.name} ${chalk.bold.black(`${this.host}:${this.port}`)}`;
}
sendItem(item: ItemState) {
return new Promise((res, rej) => {
const log = new ItemState(Item.LOG, 1, {});
const json = log.toJson();
const socket = new WebSocket(`ws://${this.host}:${this.port}`);
// new Popup(`opening ws://${this.host}:${this.port}`);
socket.on('open', () => {
socket.send(json);
socket.close();
res(undefined);
});
socket.on('error', () => {
rej(log);
});
});
}
}
@ -34,6 +56,12 @@ export async function ready(name, onThing?) {
name,
port: port
});
const wss = new WebSocket.Server({ port });
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
new Popup(inspect(message));
});
});
}
mdns.find({

View File

@ -235,6 +235,11 @@ uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
ws@^7.4.6:
version "7.4.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
yarn@^1.22.10:
version "1.22.10"
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.10.tgz#c99daa06257c80f8fa2c3f1490724e394c26b18c"