Browse Source

fixes #1283

tags/v0.4^2
Big Bad Waffle 4 years ago
parent
commit
7525bfc91c
4 changed files with 108 additions and 29 deletions
  1. +55
    -19
      src/client/js/rendering/renderer.js
  2. +2
    -0
      src/client/js/rendering/spritePool.js
  3. +40
    -4
      src/server/config/maps/sewer/map.json
  4. +11
    -6
      src/server/world/map.js

+ 55
- 19
src/client/js/rendering/renderer.js View File

@@ -514,38 +514,71 @@ define([

let rendered = spriteRow[j];
let isHidden = checkHidden(i, j);
if (rendered.length > 0) {
if (!isHidden)
continue;
else {

if (isHidden) {
const nonFakeRendered = rendered.filter(r => !r.isFake);

let rLen = nonFakeRendered.length;
for (let k = 0; k < rLen; k++) {
let sprite = nonFakeRendered[k];

sprite.visible = false;
spritePool.store(sprite);
rendered.spliceWhere(s => s === sprite);
}

if (rLen) {
newHidden.push({
x: i,
y: j
});
}

let rLen = rendered.length;
for (let k = 0; k < rLen; k++) {
let sprite = rendered[k];
sprite.visible = false;
spritePool.store(sprite);
}
spriteRow[j] = [];
const hasFake = cell.some(c => c[0] === '-');
if (hasFake) {
const isFakeRendered = rendered.some(r => r.isFake);
if (isFakeRendered)
continue;
}
} else {
const fakeRendered = rendered.filter(r => r.isFake);

continue;
let rLen = fakeRendered.length;
for (let k = 0; k < rLen; k++) {
let sprite = fakeRendered[k];

sprite.visible = false;
spritePool.store(sprite);
rendered.spliceWhere(s => s === sprite);
}
} else if (isHidden)
continue;
newVisible.push({
x: i,
y: j
});

if (rLen) {
newVisible.push({
x: i,
y: j
});
}

const hasNonFake = rendered.some(r => !r.isFake);
if (hasNonFake) {
const isNonFakeRendered = rendered.some(r => !r.isFake);
if (isNonFakeRendered)
continue;
}
}

for (let k = 0; k < cLen; k++) {
let c = cell[k];
if (c === '0' || c === '')
continue;

const isFake = +c < 0;
if (isFake && !isHidden)
continue;

if (isFake)
c = -c;

c--;

let flipped = '';
@@ -569,6 +602,9 @@ define([
tile.visible = true;
}

if (isFake)
tile.isFake = isFake;

tile.z = k;

rendered.push(tile);


+ 2
- 0
src/client/js/rendering/spritePool.js View File

@@ -28,6 +28,8 @@ define([
if (!list)
list = pool[type] = [];

delete sprite.isFake;

list.push(sprite);
}
};


+ 40
- 4
src/server/config/maps/sewer/map.json
File diff suppressed because it is too large
View File


+ 11
- 6
src/server/world/map.js View File

@@ -115,8 +115,6 @@ module.exports = {
this.clientMap = {
zoneId: -1,
map: this.layers,
hiddenWalls: this.hiddenWalls,
hiddenTiles: this.hiddenTiles,
collisionMap: this.collisionMap,
clientObjects: this.objBlueprints,
padding: padding,
@@ -155,10 +153,17 @@ module.exports = {
newCell += ',';
}

if (this.hiddenWalls[i][j])
this.hiddenWalls[i][j] = randomMap.randomizeTile(this.hiddenWalls[i][j]);
if (this.hiddenTiles[i][j])
this.hiddenTiles[i][j] = randomMap.randomizeTile(this.hiddenTiles[i][j]);
let fakeContents = [];
const hiddenWall = this.hiddenWalls[i][j];
const hiddenTile = this.hiddenTiles[i][j];

if (hiddenTile)
fakeContents.push(-randomMap.randomizeTile(hiddenTile));
if (hiddenWall)
fakeContents.push(-randomMap.randomizeTile(hiddenWall));

if (fakeContents.length)
newCell += ',' + fakeContents.join(',');

row[j] = newCell;
}


Loading…
Cancel
Save