1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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;
};
|