board can now be loaded

This commit is contained in:
leca 2023-08-01 11:53:03 +03:00
parent fea05a3f01
commit d227202cb9
2 changed files with 26 additions and 9 deletions

View File

@ -19,5 +19,5 @@ That's it!
1. Server settings are located in `./settings.json`, you need to change serverAddress in order to deploy 1. Server settings are located in `./settings.json`, you need to change serverAddress in order to deploy
2. When catches SIGUSR1, server will save a board with name read from settings file. SIGINT (CTRL + C) does the same but exit server when board is saved 2. When catches SIGUSR1, server will save a board with name read from settings file. SIGINT (CTRL + C) does the same but exit server when board is saved **KILL WITH SIGTERM WILL NOT SAVE THE BOARD!**

View File

@ -4,6 +4,7 @@ const http = express();
const path = require('path'); const path = require('path');
const pug = require('pug'); const pug = require('pug');
const Jimp = require('jimp'); const Jimp = require('jimp');
const fs = require('fs');
http.use(express.static(path.join(__dirname, 'html'))); http.use(express.static(path.join(__dirname, 'html')));
http.set('view engine', 'pug'); http.set('view engine', 'pug');
@ -19,7 +20,30 @@ const boardHeight = config.boardHeight;
var toQuit = false; var toQuit = false;
var board = new Array(boardWidth * boardHeight * 4); var board = new Array(boardWidth * boardHeight * 4);
board.fill(255);
if (!fs.existsSync(saveFile)) {
console.log("No save file found, creating blank board.");
board.fill(255);
} else {
console.log("Save file found, loading")
let image = Jimp.read(`./${saveFile}`, (err, image) => {
for (let x = 0; x < boardWidth; x ++) {
for (let y = 0; y < boardHeight; y ++) {
pixelNumber = evaulatePixelNumber(x * 4, y * 4);
let pixel = Jimp.intToRGBA(image.getPixelColor(x, y))
board[pixelNumber + 0] = pixel.r
board[pixelNumber + 1] = pixel.g
board[pixelNumber + 2] = pixel.b
board[pixelNumber + 3] = 255;
}
}
console.log("Loaded")
});
}
const server = new WebSocket.Server({ const server = new WebSocket.Server({
port: appPort port: appPort
@ -88,13 +112,6 @@ http.listen(httpPort, "0.0.0.0", () => {
console.log(`Starting pixelbattle http server on port ${httpPort}`); console.log(`Starting pixelbattle http server on port ${httpPort}`);
}) })
const rgbToHex = (r, g, b) => '#' + [r, g, b].map(x => {
const hex = x.toString(16)
return hex.length === 1 ? '0' + hex : hex
}).join('')
function d2h(d) { return (+d).toString(16).toUpperCase(); }
const save = (err, image) => { const save = (err, image) => {
if (err) throw err; if (err) throw err;
console.log() console.log()