summaryrefslogtreecommitdiff
path: root/Homework/cs5410/bbiy/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'Homework/cs5410/bbiy/index.js')
-rw-r--r--Homework/cs5410/bbiy/index.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/Homework/cs5410/bbiy/index.js b/Homework/cs5410/bbiy/index.js
new file mode 100644
index 0000000..8b046c1
--- /dev/null
+++ b/Homework/cs5410/bbiy/index.js
@@ -0,0 +1,55 @@
+const express = require('express');
+const path = require('path');
+const fs = require('fs');
+
+const MAP_LAYERS=2;
+
+const app = express();
+app.route('/').get((req, res) => {
+ res.sendFile(path.join(__dirname, 'index.html'));
+});
+
+app.route('/levels').get((req, res) => {
+ fs.readFile(path.join(__dirname, 'levels-all.bbiy'), 'utf8', (err, data) => {
+ if (err) {
+ console.log(err);
+ return;
+ }
+
+ const levels = [];
+ const lines = data.split('\r\n');
+ do {
+ const levelName = lines.shift();
+ if (!levelName) {
+ break;
+ }
+ const [xDim, yDim] = lines.shift().split(' x ').map((x) => parseInt(x));
+
+ let level = Array(yDim).fill(null).map(() => Array(xDim).fill(null).map(() => []));
+ for (let i = 0; i < MAP_LAYERS; i++) {
+ for (let y = 0; y < yDim; y++) {
+ const line = lines.shift().split('');
+ for (let x = 0; x < xDim; x++) {
+ if (line[x] !== ' ') {
+ level[y][x].push(line[x]);
+ }
+ }
+ }
+ }
+ levels.push({
+ levelName,
+ gridSize: {xDim, yDim},
+ level,
+ });
+ } while (lines.length);
+
+ // Send the array of objects
+ res.send(levels);
+ });
+});
+
+app.use(express.static('.'));
+
+app.listen(3000, () => {
+ console.log('Listening on 3000');
+});