Shaun пре 3 година
родитељ
комит
1067bc3a62
6 измењених фајлова са 88 додато и 27 уклоњено
  1. +11
    -0
      src/server/config/clientConfig.js
  2. +23
    -5
      src/server/package-lock.json
  3. +1
    -0
      src/server/package.json
  4. +2
    -2
      src/server/world/instancer.js
  5. +49
    -20
      src/server/world/map.js
  6. +2
    -0
      src/server/world/worker.js

+ 11
- 0
src/server/config/clientConfig.js Прегледај датотеку

@@ -31,6 +31,11 @@ const config = {
'bigObjects',
'bosses'
],
atlasTextures: [
'tiles',
'walls',
'objects'
],
uiLoginList: [
'login'
],
@@ -92,7 +97,13 @@ module.exports = {
events.emit('onBeforeGetTextureList', config.textureList);
},

//Used to send to clients
getClientConfig: function (msg) {
msg.callback(config);
},

//Just used by the server
get: function () {
return config;
}
};

+ 23
- 5
src/server/package-lock.json Прегледај датотеку

@@ -1,6 +1,6 @@
{
"name": "isleward_server",
"version": "0.6.0",
"version": "0.7.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -1537,10 +1537,12 @@
}
},
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
"optional": true
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.8.3.tgz",
"integrity": "sha512-SMtq1AJ+aqHB45c3FsB4ERK0UCiA2d3H1uq8s+8T0Pf8A3W4teyBQyaFaktH6xvZqh+npwlKU7i4fJo0r7TYTg==",
"requires": {
"queue": "6.0.1"
}
},
"import-fresh": {
"version": "3.2.1",
@@ -1829,6 +1831,14 @@
"promise": "^7.1.1",
"request": "^2.83.0",
"source-map": "~0.6.0"
},
"dependencies": {
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
"optional": true
}
}
},
"less-middleware": {
@@ -2312,6 +2322,14 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
"queue": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz",
"integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==",
"requires": {
"inherits": "~2.0.3"
}
},
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",


+ 1
- 0
src/server/package.json Прегледај датотеку

@@ -9,6 +9,7 @@
"express": "^4.17.1",
"express-minify": "^1.0.0",
"google-spreadsheet": "^3.0.10",
"image-size": "^0.8.3",
"less-middleware": "^3.1.0",
"rethinkdbdash": "^2.3.31",
"socket.io": "^2.3.0",


+ 2
- 2
src/server/world/instancer.js Прегледај датотеку

@@ -20,7 +20,7 @@ module.exports = {

lastTime: 0,

init: function (args) {
init: async function (args) {
this.zoneId = args.zoneId;

spellCallbacks.init();
@@ -47,7 +47,7 @@ module.exports = {
spawners.init(fakeInstance);
scheduler.init();

map.create();
await map.create();
if (map.mapFile.properties.isRandom) {
if (!map.oldCollisionMap)
map.oldCollisionMap = map.collisionMap;


+ 49
- 20
src/server/world/map.js Прегледај датотеку

@@ -1,3 +1,5 @@
const imageSize = require('image-size');

let objects = require('../objects/objects');
let physics = require('./physics');
let spawners = require('./spawners');
@@ -25,6 +27,8 @@ const objectifyProperties = oldProperties => {
return newProperties;
};

const cachedImageDimensions = {};

module.exports = {
name: null,
path: null,
@@ -116,8 +120,8 @@ module.exports = {
this.spawn = [this.spawn];
}
},
create: function () {
this.getMapFile();
create: async function () {
await this.getMapFile();

this.clientMap = {
zoneId: -1,
@@ -128,8 +132,8 @@ module.exports = {
hiddenRooms: this.hiddenRooms
};
},
getMapFile: function () {
this.build();
getMapFile: async function () {
await this.build();

this.randomMap = extend({}, randomMap);
this.oldMap = this.layers;
@@ -207,7 +211,7 @@ module.exports = {
mapFile = null;
},

build: function () {
build: async function () {
const mapSize = {
w: mapFile.width,
h: mapFile.height
@@ -289,12 +293,38 @@ module.exports = {
info.cell = data[index];

events.emit('onBeforeBuildLayerTile', info);
builders.tile(info);
await builders.tile(info);
}
}
}
}
},

getImageDimensions: async function (path) {
let cachedDimensions = cachedImageDimensions[path];
if (!cachedDimensions) {
cachedDimensions = await imageSize(path);
cachedImageDimensions[path] = cachedDimensions;
}

return cachedDimensions;
},

getOffsetCellPos: async function (sheetName, cell) {
const atlasTextures = clientConfig.get().atlasTextures;
const indexInAtlas = atlasTextures.indexOf(sheetName);

let offset = 0;
for (let i = 0; i < indexInAtlas; i++) {
const path = '../client/images/' + atlasTextures[i] + '.png';
const dimensions = await this.getImageDimensions(path);

offset += (dimensions.width / 8) * (dimensions.height / 8);
}

return cell + offset;
},

builders: {
getCellInfo: function (cell) {
let flipX = null;
@@ -317,12 +347,13 @@ module.exports = {
cell = cell - firstGid + 1;

return {
sheetName: sheetName,
cell: cell,
flipX: flipX
sheetName,
cell,
flipX
};
},
tile: function (info) {

tile: async function (info) {
let { x, y, cell, layer: layerName } = info;

if (cell === 0) {
@@ -334,30 +365,28 @@ module.exports = {

let cellInfo = this.builders.getCellInfo(cell);
let sheetName = cellInfo.sheetName;
cell = cellInfo.cell;
if (sheetName === 'walls')
cell += 224;
else if (sheetName === 'objects')
cell += 480;

const offsetCell = await this.getOffsetCellPos(sheetName, cellInfo.cell);

if ((layerName !== 'hiddenWalls') && (layerName !== 'hiddenTiles')) {
let layer = this.layers;
if (this.oldLayers[layerName])
this.oldLayers[layerName][x][y] = cell;
layer[x][y] = (layer[x][y] === null) ? cell : layer[x][y] + ',' + cell;
this.oldLayers[layerName][x][y] = offsetCell;
layer[x][y] = (layer[x][y] === null) ? offsetCell : layer[x][y] + ',' + offsetCell;
} else if (layerName === 'hiddenWalls')
this.hiddenWalls[x][y] = cell;
this.hiddenWalls[x][y] = offsetCell;
else if (layerName === 'hiddenTiles')
this.hiddenTiles[x][y] = cell;
this.hiddenTiles[x][y] = offsetCell;

if (layerName.indexOf('walls') > -1)
this.collisionMap[x][y] = 1;
else if (layerName === 'tiles' && sheetName === 'tiles') {
//Check for water and water-like tiles
if ([6, 7, 54, 55, 62, 63, 154, 189, 190, 192, 193, 194, 195, 196, 197].indexOf(cell) > -1)
if ([6, 7, 54, 55, 62, 63, 154, 189, 190, 192, 193, 194, 195, 196, 197].includes(offsetCell))
this.collisionMap[x][y] = 1;
}
},

object: function (layerName, cell) {
//Fixes for newer versions of tiled
cell.properties = objectifyProperties(cell.properties);


+ 2
- 0
src/server/world/worker.js Прегледај датотеку

@@ -4,6 +4,7 @@ global._ = require('../misc/helpers');
global.consts = require('../config/consts');
global.instancer = require('./instancer');
global.eventManager = require('../events/events');
global.clientConfig = require('../config/clientConfig');

let components = require('../components/components');
let mods = require('../misc/mods');
@@ -33,6 +34,7 @@ let onCpnsReady = function () {
recipes.init();
sheets.init();
itemEffects.init();
clientConfig.init();

process.send({
method: 'onReady'


Loading…
Откажи
Сачувај