summaryrefslogtreecommitdiff
path: root/utils/tele.js
diff options
context:
space:
mode:
Diffstat (limited to 'utils/tele.js')
-rw-r--r--utils/tele.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/utils/tele.js b/utils/tele.js
new file mode 100644
index 0000000..6794af2
--- /dev/null
+++ b/utils/tele.js
@@ -0,0 +1,108 @@
+// this file deals with linked teleporters,
+// not directional teleporters
+
+
+
+/*
+the corresponding tile is 0x9b
+
+
+generate
+[x] make new entry in global door registry
+[x] set tile 0x9b
+0x9b crackend
+[x] put item in inventory
+place
+[x] set tile 0x9b
+[x] remove from inventory
+inventory UI
+[ ]
+0x9b onstep
+[ ]
+go through first time
+[ ] get new coord
+[ ] generate new chunk
+[ ] generate new tele
+*/
+
+const doorPath = "doors.txt";
+
+
+
+let fs = require("fs");
+let doors; {
+ try {
+ let data = fs.readFileSync(doorPath, 'utf8', function(e, data) {
+ if (e) console.log('ladsjflajksfj');
+ console.log(data);
+ });
+ doors = JSON.parse(data.toString());
+ } catch (e) {
+ doors = [];
+ }
+}
+let dirty = false;
+
+let doorUtils = {};
+module.exports = doorUtils;
+
+let Pos, createPosFromJson; {
+ let t = require("models/pos");
+ Pos = t.Pos;
+ createPosFromJson = t.createPosFromJson;
+}
+let chunkUtils = require("utils/chunk.js");
+
+doorUtils.moveDoorToPlayer = function(doorid, inventory, username) {
+ let door = doors[doorid];
+ door.postype = "player";
+ door.pos = username;
+ let m = inventory.tileCountMap[0x9b];
+ if (!m) inventory.tileCountMap[0x9b] = [doorid];
+ else m.push(doorid);
+};
+
+doorUtils.findDoorIdWithPos = function(pos) {
+ for (let i = 0; i < doors.length; i++) {
+ if (doors[i].postype != "coordinate") continue;
+ if (pos.equals(doors[i].pos)) {
+ return i;
+ }
+ }
+ return null;
+};
+
+doorUtils.removeDoorFromInventory = function(inv, doorid) {
+ let m = inv.tileCountMap[0x9b];
+ for (let i = 0; i < m.length; i++) {
+ if (m[i] === doorid) {
+ m.splice(i, 1);
+ return true;
+ }
+ }
+ return false;
+};
+
+doorUtils.placeDoor = function(doorid, pos) {
+ chunkUtils.setTile(pos, 0x9b);
+ doors[doorid].postype = "coordinate";
+ doors[doorid].pos = pos;
+};
+
+doorUtils.registerDoor = function(pos) {
+ let doorId = doors.length;
+ doors.push({
+ id: doorId,
+ postype: "coordinate",
+ pos: pos,
+ destId: null
+ });
+ return doorId;
+};
+
+
+
+doorUtils.persistAllDoors = function() {
+ fs.writeFileSync(doorPath, JSON.stringify(doors));
+ dirty = false;
+};