Skip to content

Commit b382a0a

Browse files
authored
Add files via upload
1 parent 3603269 commit b382a0a

File tree

4 files changed

+50
-28
lines changed

4 files changed

+50
-28
lines changed

lang/en.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"levels.settings.hideAllUnowned.hint": "Hide all unowned tokens for players when there is no token controlled",
66

77
"levels.tilecoonfig.range.name": "Height Range",
8-
"levels.tilecoonfig.range.unit": "Elevation",
8+
"levels.tilecoonfig.range.unit": "Bottom,Top",
99
"levels.wallconfig.hb.name": "Height Bottom",
10-
"levels.wallconfig.ht.name": "Height Top"
10+
"levels.wallconfig.ht.name": "Height Top",
11+
"levels.drawingconfig.range.name": "Hole Range"
1112
}

scripts/config.js

+20
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,24 @@ const overh = html.find('input[name="angle"]');
6868
const formGroup = overh.closest(".form-group");
6969
formGroup.after(newHtml);
7070
app.setPosition({ height: "auto" });
71+
})
72+
73+
Hooks.on("renderDrawingConfig", (app, html, data) => {
74+
let heightRange = app.object.getFlag(
75+
_levelsModuleName,
76+
"heightRange"
77+
) || 0;
78+
79+
let newHtml = `
80+
<div class="form-group">
81+
<label for="heightRange">${game.i18n.localize("levels.drawingconfig.range.name")}<span class="units">(${game.i18n.localize("levels.tilecoonfig.range.unit")})</span></label>
82+
<div class="form-fields">
83+
<input type="text" name="flags.${_levelsModuleName}.heightRange" value="${heightRange}" step="1">
84+
</div>
85+
</div>
86+
`;
87+
const overh = html.find('input[name="z"]');
88+
const formGroup = overh.closest(".form-group");
89+
formGroup.after(newHtml);
90+
app.setPosition({ height: "auto" });
7191
})

scripts/levels.js

+26-23
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class Levels {
44
this.floorContainer = new PIXI.Container();
55
this.floorContainer.spriteIndex = {};
66
this.occlusionIndex = {};
7-
this.lastReleasedToken = undefined
7+
this.lastReleasedToken = undefined;
88
}
99

1010
/**********************************************
@@ -28,7 +28,7 @@ class Levels {
2828
{ x: tileZZ.x + tile.width, y: tileZZ.y + tile.height }, //br
2929
{ x: tileZZ.x, y: tileZZ.y + tile.height }, //bl
3030
];
31-
return new PIXI.Polygon(tileCorners)
31+
return new PIXI.Polygon(tileCorners);
3232
}
3333

3434
findRoomsTiles(token, allTiles) {
@@ -58,10 +58,10 @@ class Levels {
5858
let range0 = parseInt(range[0]);
5959
let range1 =
6060
range[1].toLowerCase() == "infinity" ? 10000 : parseInt(range[1]);
61-
if(range[1].toLowerCase()=="infinity"){
62-
tile.isLevel=false
63-
}else{
64-
tile.isLevel=true
61+
if (range[1].toLowerCase() == "infinity") {
62+
tile.isLevel = false;
63+
} else {
64+
tile.isLevel = true;
6565
}
6666
tiles.push({
6767
tile: tile,
@@ -104,7 +104,7 @@ class Levels {
104104
}
105105
}
106106

107-
refreshTokens(overrideToken=undefined) {
107+
refreshTokens(overrideToken = undefined) {
108108
let cToken = overrideToken || canvas.tokens.controlled[0];
109109
if (!cToken) return;
110110
let perfEnd, perfStart;
@@ -128,34 +128,34 @@ class Levels {
128128
tokensState
129129
);
130130
}
131-
return tokenPov
131+
return tokenPov;
132132
}
133133

134134
computeTokens(tokens, elevation, holes, cTokenElev, ctokenId) {
135-
let tokenPov = []
135+
let tokenPov = [];
136136
tokens.forEach((t) => {
137137
if (t.token.id != ctokenId && !t.token.data.hidden) {
138138
if (!(t.range[1] >= elevation && t.range[0] <= elevation)) {
139139
let isInHole = this.isTokenInHole(t, holes);
140140
if (!this.isInsideHoleRange(isInHole, t, cTokenElev)) {
141141
t.token.levelsHidden = true;
142142
t.token.icon.alpha = 0;
143-
tokenPov.push({token:t,visible:t.token.isVisible})
143+
tokenPov.push({ token: t, visible: t.token.isVisible });
144144
this.getTokenIconSprite(t.token);
145145
} else {
146146
t.token.visible = false;
147-
tokenPov.push({token:t,visible:false})
147+
tokenPov.push({ token: t, visible: false });
148148
this.removeTempToken(t.token);
149149
}
150150
} else {
151151
t.token.levelsHidden = false;
152152
t.token.icon.alpha = 1;
153-
tokenPov.push({token:t,visible:t.token.isVisible})
153+
tokenPov.push({ token: t, visible: t.token.isVisible });
154154
this.removeTempToken(t.token);
155155
}
156156
}
157157
});
158-
return tokenPov
158+
return tokenPov;
159159
}
160160

161161
isInsideHoleRange(isInHole, t, cTokenElev) {
@@ -198,7 +198,7 @@ class Levels {
198198
let elevation = token.data.elevation;
199199
let tilesIsIn = this.findRoomsTiles(token, allTiles);
200200
if (!tilesIsIn || tilesIsIn.length == 0) {
201-
return { token: token, range: [0, 1000] }; //return { token: token, range: [0, elevation] };
201+
return { token: token, range: [0, Infinity] }; //return { token: token, range: [0, elevation] };
202202
}
203203
let levelTile;
204204
tilesIsIn.forEach((t) => {
@@ -237,7 +237,7 @@ class Levels {
237237
this.floorContainer.addChild(sprite);
238238
}
239239

240-
_onElevationChangeUpdate(overrideElevation=undefined) {
240+
_onElevationChangeUpdate(overrideElevation = undefined) {
241241
let perfEnd, perfStart;
242242
if (_levels.DEBUG) perfStart = performance.now();
243243
let cToken = overrideElevation || canvas.tokens.controlled[0];
@@ -457,13 +457,16 @@ class Levels {
457457

458458
getHoles() {
459459
let holes = [];
460-
let holeDrawings = canvas.drawings.placeables.filter(
461-
(d) => d.data.text && d.data.text.includes("levelsHole")
462-
);
463-
holeDrawings.forEach((drawing) => {
464-
let p = new PIXI.Polygon(this.adjustPolygonPoints(drawing));
465-
let range = drawing.data.text.split("|")[1].split(",");
466-
holes.push({ poly: p, range: [parseInt(range[0]), parseInt(range[1])] });
460+
canvas.drawings.placeables.forEach((drawing) => {
461+
let flag = drawing.document.getFlag(_levelsModuleName, "heightRange");
462+
let range = flag ? flag.split(",") : undefined;
463+
if (flag && range.length == 2) {
464+
let p = new PIXI.Polygon(this.adjustPolygonPoints(drawing));
465+
holes.push({
466+
poly: p,
467+
range: [parseInt(range[0]), parseInt(range[1])],
468+
});
469+
}
467470
});
468471
return holes;
469472
}
@@ -548,7 +551,7 @@ class Levels {
548551
canvas.tokens.placeables.forEach((t) => {
549552
if (t.actor.testUserPermission(game.user, 2)) {
550553
t.visible = true;
551-
t.icon.alpha=1
554+
t.icon.alpha = 1;
552555
}
553556
});
554557
}

scripts/main.js

+1-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ Hooks.on("sightRefresh", () => {
1414
_levels.computeDoors(cToken);
1515
if(!canvas.tokens.controlled[0] && !game.user.isGM){
1616
let ownedTokens = canvas.tokens.placeables.filter(t => t.actor && t.actor.testUserPermission(game.user, 2))
17-
debugger
1817
let tokenPovs = []
1918
ownedTokens.forEach((t)=>{
2019
tokenPovs.push(_levels.refreshTokens(t));
@@ -76,13 +75,12 @@ Hooks.on("controlToken", (token, contorlled) => {
7675
} else {
7776
if (_levels && contorlled) _levels._onElevationChangeUpdate();
7877
if (_levels && !contorlled && token){ _levels._onElevationChangeUpdate(token);
79-
_levels.lastReleasedToken=token
78+
if(!game.user.isGM)_levels.lastReleasedToken=token
8079
}
8180
}
8281
});
8382

8483
Hooks.on("updateTile", (tile, updates) => {
85-
console.log("updatetile");
8684
if (canvas.tokens.controlled[0]) {
8785
if (_levels) {
8886
let tileIndex = { tile: tile };

0 commit comments

Comments
 (0)