MultiplayerMinesweeper/log.js

131 lines
2.9 KiB
JavaScript

const os = require("os")
var mode = 0
var logs = []
var rightView = [0,1,2,3,4,5,6]
var info = [[],[]]
function setMode(type) {
mode = type
}
function updateLog() {
if (mode) return
let templogs = logs;
console.clear()
const columns = process.stdout.columns;
const rows = process.stdout.rows;
const vertSplit = Math.round(rows/4)
for (var i = 0; i < vertSplit; i++) {
process.stdout.cursorTo(Math.round(columns/2),i);
process.stdout.clearLine();
process.stdout.write(`|`)
}
for (var i = 0; i < columns; i++) {
process.stdout.cursorTo(i+1, vertSplit)
process.stdout.write(`=`)
}
process.stdout.cursorTo(0,0)
process.stdout.write("Players:")
const games = info[0]
var pointer = 0
for (i = 0; i < games.length; i++) {
process.stdout.cursorTo(0,pointer+1)
process.stdout.write(`\x1b[46mGameName: \x1b[1m${games[i].name}\x1b[0m`)
const players = games[i].players;
for (var j = 0; j < players.length; j++) {
process.stdout.cursorTo(0,pointer+2)
process.stdout.write(`--Name: \x1b[1m${players[j].name}\x1b[0m -\x1b[1m ID:${players[j].id}\x1b[0m`)
pointer++;
}
pointer++;
}
if (templogs.length > Math.round(3*rows/4)-3) {
templogs.splice(0, logs.length-Math.round(3*rows/4)+2);
}
for (var i = 0; i < templogs.length; i++ ) {
process.stdout.cursorTo(0,vertSplit+1+i)
process.stdout.write(`${templogs[i]}${os.EOL}` )
}
}
function logRight(line, text) {
rightView[line] = text;
updateLog();
}
function log(string, color) {
if (mode) return console.log(string)
if (string == undefined) return;
var prefix = '';
switch (color) {
case "reset":
prefix = "\x1b[0m"
break;
case "bright":
prefix = "\x1b[1m"
break;
case "dim":
prefix = "\x1b[2m"
break;
case "underscore":
prefix = "\x1b[4m"
break;
case "reverse":
prefix = "\x1b[7m"
break;
case "FgBlack":
prefix = "\x1b[30m"
break;
case "FgRed":
prefix = "\x1b[31m"
break;
case "FgGreen":
prefix = "\x1b[32m"
break;
case "FgYellow":
prefix = "\x1b[33m"
break;
case "FgBlue":
prefix = "\x1b[34m"
break;
case "FgMagenta":
prefix = "\x1b[35m"
break;
case "FgCyan":
prefix = "\x1b[36m"
break;
case "FgWhite":
prefix = "\x1b[37m"
break;
}
// BgBlack = "\x1b[40m"
// BgRed = "\x1b[41m"
// BgGreen = "\x1b[42m"
// BgYellow = "\x1b[43m"
// BgBlue = "\x1b[44m"
// BgMagenta = "\x1b[45m"
// BgCyan = "\x1b[46m"
// BgWhite = "\x1b[47m"
const newString = prefix + string + "\x1b[0m"
logs.push(newString)
updateLog();
}
function setInfo (players){
if (mode) return false
if (players != undefined) {
info[0] = players;
updateLog()
}
}
module.exports = {log, updateLog, setInfo, setMode, logRight}