Преглед изворни кода

Merge remote-tracking branch 'upstream/master' into 1733-exalted-bar

tags/v0.10.6.12^2
kckckc пре 2 година
родитељ
комит
1e9821ac80
23 измењених фајлова са 599 додато и 600 уклоњено
  1. +1
    -0
      src/client/index.html
  2. +2
    -11
      src/client/js/app.js
  3. +6
    -7
      src/client/js/components/player.js
  4. +15
    -6
      src/client/js/input.js
  5. +1
    -0
      src/client/js/objects/objBase.js
  6. +6
    -1
      src/client/js/objects/objects.js
  7. +16
    -17
      src/client/js/rendering/renderer.js
  8. +4
    -6
      src/client/js/rendering/shaders/outline.js
  9. +4
    -4
      src/client/package.json
  10. +1
    -1
      src/client/plugins/pixi.particles.js
  11. +1
    -1
      src/client/plugins/pixi.particles.min.js
  12. +1
    -6
      src/client/ui/shared/renderItem.js
  13. +2
    -2
      src/client/ui/templates/login/template.html
  14. +7
    -9
      src/server/components/auth.js
  15. +1
    -1
      src/server/components/stats.js
  16. +2
    -2
      src/server/components/trade.js
  17. +2
    -1
      src/server/config/clientConfig.js
  18. +10
    -1
      src/server/config/maps/cave/zone.js
  19. +1
    -1
      src/server/config/serverConfig.js
  20. +486
    -513
      src/server/package-lock.json
  21. +6
    -6
      src/server/package.json
  22. +1
    -1
      src/server/world/map.js
  23. +23
    -3
      src/server/world/spawners.js

+ 1
- 0
src/client/index.html Прегледај датотеку

@@ -11,6 +11,7 @@
<link rel="stylesheet" href="css/main.css">
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="js/system/addons.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.1.2/browser/pixi.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="js/app"></script>
<script>if (window.module) module = window.module;</script>
<link rel="icon" href="images/favicon.ico">


+ 2
- 11
src/client/js/app.js Прегледај датотеку

@@ -2,15 +2,14 @@ require.config({
baseUrl: '',
waitSeconds: 120,
paths: {
socket: 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.slim',
jquery: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.slim.min',
socket: 'https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.3/socket.io.min',
jquery: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.slim.min',
text: 'https://cdnjs.cloudflare.com/ajax/libs/require-text/2.0.12/text.min',
html: 'plugins/html',
css: 'https://cdnjs.cloudflare.com/ajax/libs/require-css/0.1.10/css.min',
main: 'js/main',
helpers: 'js/misc/helpers',
particles: 'plugins/pixi.particles.min',
pixi: 'https://cdnjs.cloudflare.com/ajax/libs/pixi.js/5.1.3/pixi.min',
howler: 'https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.3/howler.core.min',
longPress: 'plugins/long.press.min'
},
@@ -29,14 +28,6 @@ require.config({
'jquery'
]
},
pixi: {
exports: 'PIXI'
},
particles: {
deps: [
'pixi'
]
},
main: {
deps: [
'helpers',


+ 6
- 7
src/client/js/components/player.js Прегледај датотеку

@@ -20,13 +20,12 @@ define([
init: function () {
const obj = this.obj;

if (isMobile)
obj.addComponent('keyboardMover');
obj.addComponent('mouseMover');

if (isMobile)
obj.addComponent('touchMover');
else {
obj.addComponent('keyboardMover');
obj.addComponent('mouseMover');
}

obj.addComponent('serverActions');
obj.addComponent('pather');

@@ -72,7 +71,7 @@ define([
renderer.setPosition({
x: (x - (renderer.width / (scale * 2))) * scale,
y: (y - (renderer.height / (scale * 2))) * scale
}, instant);
}, instant);
},

onRespawn: function ({ x, y }) {


+ 15
- 6
src/client/js/input.js Прегледај датотеку

@@ -22,6 +22,14 @@ define([
'shift', 'ctrl'
],

numericalKeyCodeMappings: {
Digit1: 49,
Digit2: 50,
Digit3: 51,
Digit4: 52,
Digit5: 53
},

mappings: {
8: 'backspace',
9: 'tab',
@@ -73,7 +81,7 @@ define([
onLoadShake: function (shake) {
let shaker = new shake({
threshold: 5,
timeout: 1000
timeout: 1000
});

shaker.start();
@@ -81,7 +89,7 @@ define([
},

resetKeys: function () {
for (let k in this.keys)
for (let k in this.keys)
events.emit('onKeyUp', k);

this.keys = {};
@@ -103,7 +111,7 @@ define([
return true;

let down = this.keys[key];
this.keys[key] = 2;
return (down === 1);
} return false;
@@ -138,7 +146,8 @@ define([
if (!this.enabled)
return;

let key = this.getMapping(e.which);
let code = this.numericalKeyCodeMappings[e.code] || e.which;
let key = this.getMapping(code);
let isModifier = this.modifiers.indexOf(key) > -1;
let isBody = e.target === document.body;

@@ -176,7 +185,7 @@ define([
let key = this.getMapping(e.which);
let isModifier = this.modifiers.indexOf(key) > -1;
let isBody = e.target === document.body;
if (!isModifier && !isBody)
return;

@@ -271,7 +280,7 @@ define([
let el = $(e.target);
if ((!el.hasClass('ui-container')) || (el.hasClass('blocking')))
return;
events.emit('onTouchCancel');
}
},


+ 1
- 0
src/client/js/objects/objBase.js Прегледај датотеку

@@ -117,6 +117,7 @@ define([
this.self ||
(
renderer.sprites[x] &&
renderer.sprites[x][y] &&
renderer.sprites[x][y].length > 0 &&
!renderer.isHidden(x, y)
)


+ 6
- 1
src/client/js/objects/objects.js Прегледај датотеку

@@ -243,13 +243,18 @@ define([
if ((!obj.sprite) && (template.sheetName))
obj.sprite = renderer.buildObject(obj);

if ((!obj.nameSprite) && (template.name)) {
if (template.name) {
if (obj.nameSprite)
renderer.destroyObject({ sprite: obj.nameSprite });

obj.nameSprite = renderer.buildText({
layerName: 'effects',
text: template.name,
x: (obj.x * scale) + (scale / 2),
y: (obj.y * scale) + scale
});

obj.nameSprite.visible = config.showNames;
}

if ((template.x !== 0) || (template.y !== 0)) {


+ 16
- 17
src/client/js/rendering/renderer.js Прегледај датотеку

@@ -21,7 +21,6 @@ define([
globals,
renderLoginBackground
) {
let pixi = PIXI;
let mRandom = Math.random.bind(Math);

return {
@@ -98,11 +97,11 @@ define([

$(this.renderer.view).appendTo('.canvas-container');

this.stage = new pixi.Container();
this.stage = new PIXI.Container();

let layers = this.layers;
Object.keys(layers).forEach(l => {
layers[l] = new pixi.Container();
layers[l] = new PIXI.Container();
layers[l].layer = (l === 'tileSprites') ? 'tiles' : l;

this.stage.addChild(layers[l]);
@@ -112,8 +111,8 @@ define([
const sprites = resources.sprites;

textureList.forEach(t => {
this.textures[t] = new pixi.BaseTexture(sprites[t]);
this.textures[t].scaleMode = pixi.SCALE_MODES.NEAREST;
this.textures[t] = new PIXI.BaseTexture(sprites[t]);
this.textures[t].scaleMode = PIXI.SCALE_MODES.NEAREST;
});

particles.init({
@@ -128,12 +127,12 @@ define([
buildSpritesTexture: function () {
const { clientConfig: { atlasTextureDimensions, atlasTextures } } = globals;

let container = new pixi.Container();
let container = new PIXI.Container();

let totalHeight = 0;
atlasTextures.forEach(t => {
let texture = this.textures[t];
let tile = new pixi.Sprite(new pixi.Texture(texture));
let tile = new PIXI.Sprite(new PIXI.Texture(texture));
tile.width = texture.width;
tile.height = texture.height;
tile.x = 0;
@@ -149,11 +148,11 @@ define([
totalHeight += tile.height;
});

let renderTexture = pixi.RenderTexture.create(this.textures.tiles.width, totalHeight);
let renderTexture = PIXI.RenderTexture.create(this.textures.tiles.width, totalHeight);
this.renderer.render(container, renderTexture);

this.textures.sprites = renderTexture;
this.textures.scaleMult = pixi.SCALE_MODES.NEAREST;
this.textures.scaleMult = PIXI.SCALE_MODES.NEAREST;
},

toggleScreen: function () {
@@ -213,7 +212,7 @@ define([
if (!cached) {
let y = ~~(cell / 8);
let x = cell - (y * 8);
cached = new pixi.Texture(this.textures[baseTex], new pixi.Rectangle(x * size, y * size, size, size));
cached = new PIXI.Texture(this.textures[baseTex], new PIXI.Rectangle(x * size, y * size, size, size));
textureCache[textureName] = cached;
}

@@ -222,14 +221,14 @@ define([

clean: function () {
this.stage.removeChild(this.layers.hiders);
this.layers.hiders = new pixi.Container();
this.layers.hiders = new PIXI.Container();
this.layers.hiders.layer = 'hiders';
this.stage.addChild(this.layers.hiders);

let container = this.layers.tileSprites;
this.stage.removeChild(container);

this.layers.tileSprites = container = new pixi.Container();
this.layers.tileSprites = container = new PIXI.Container();
container.layer = 'tiles';
this.stage.addChild(container);

@@ -250,7 +249,7 @@ define([
let alpha = tileOpacity.map(c);
let canFlip = tileOpacity.canFlip(c);

let tile = new pixi.Sprite(this.getTexture('sprites', c));
let tile = new PIXI.Sprite(this.getTexture('sprites', c));

tile.alpha = alpha;
tile.position.x = i * scale;
@@ -672,14 +671,14 @@ define([
},

buildContainer: function (obj) {
let container = new pixi.Container();
let container = new PIXI.Container();
this.layers[obj.layerName || obj.sheetName].addChild(container);

return container;
},

buildRectangle: function (obj) {
let graphics = new pixi.Graphics();
let graphics = new PIXI.Graphics();

let alpha = obj.alpha;
if (obj.has('alpha'))
@@ -716,7 +715,7 @@ define([
buildObject: function (obj) {
const { sheetName, parent: container, layerName, visible = true } = obj;

const sprite = new pixi.Sprite();
const sprite = new PIXI.Sprite();

obj.sprite = sprite;

@@ -751,7 +750,7 @@ define([
},

buildText: function (obj) {
let textSprite = new pixi.Text(obj.text, {
let textSprite = new PIXI.Text(obj.text, {
fontFamily: 'bitty',
fontSize: (obj.fontSize || 14),
fill: obj.color || 0xF2F5F5,


+ 4
- 6
src/client/js/rendering/shaders/outline.js Прегледај датотеку

@@ -1,15 +1,13 @@
define([
'pixi',
'js/rendering/shaders/outline/vert',
'js/rendering/shaders/outline/frag'
], function (
pixi,
vert,
frag
) {
let OutlineFilter = function (viewWidth, viewHeight, thickness, color) {
thickness = thickness || 1;
pixi.Filter.call(this,
PIXI.Filter.call(this,
vert,
frag.replace(/%THICKNESS%/gi, (1.0 / thickness).toFixed(7))
);
@@ -23,16 +21,16 @@ define([
this.color = color;
};

OutlineFilter.prototype = Object.create(pixi.Filter.prototype);
OutlineFilter.prototype = Object.create(PIXI.Filter.prototype);
OutlineFilter.prototype.constructor = OutlineFilter;

Object.defineProperties(OutlineFilter.prototype, {
color: {
get: function () {
return pixi.utils.rgb2hex(this.uniforms.outlineColor);
return PIXI.utils.rgb2hex(this.uniforms.outlineColor);
},
set: function (value) {
pixi.utils.hex2rgb(value, this.uniforms.outlineColor);
PIXI.utils.hex2rgb(value, this.uniforms.outlineColor);
}
},



+ 4
- 4
src/client/package.json Прегледај датотеку

@@ -1,12 +1,12 @@
{
"name": "isleward_client",
"version": "0.9.1",
"version": "0.10.1",
"description": "isleward",
"dependencies": {},
"devDependencies": {
"babel-eslint": "^10.1.0",
"eslint": "^7.12.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-requirejs": "^4.0.0"
"eslint": "^7.32.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-requirejs": "^4.0.1"
}
}

+ 1
- 1
src/client/plugins/pixi.particles.js Прегледај датотеку

@@ -688,7 +688,7 @@ if (!Array.prototype.random) {
let i;
for (i = art.length; i >= 0; --i) {
if (typeof art[i] === 'string')
art[i] = PIXI.Texture.fromImage(art[i]);
art[i] = PIXI.Texture.from(art[i]);
}
//particles from different base textures will be slower in WebGL than if they
//were from one spritesheet


+ 1
- 1
src/client/plugins/pixi.particles.min.js
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 6
src/client/ui/shared/renderItem.js Прегледај датотеку

@@ -125,17 +125,12 @@ define([
}

let size = 64;
let margin = '0px';

if (item.type === 'skin') {
if (item.type === 'skin')
size = 8;
margin = '16px';
}

if (item.spriteSize)
size = item.spriteSize;
if (item.spriteMargin)
margin = item.margin;

if (spriteSizes[spritesheet])
size = spriteSizes[spritesheet];


+ 2
- 2
src/client/ui/templates/login/template.html Прегледај датотеку

@@ -11,11 +11,11 @@
</div>
<div class="message"></div>
</div>
<div class="news" location="https://gitlab.com/Isleward/play.isleward.com/-/wikis/v0.9.1-Release-Notes">[ Latest Release Notes ]</div>
<div class="news" location="https://gitlab.com/Isleward/play.isleward.com/-/wikis/v0.10.1-Release-Notes">[ Latest Release Notes ]</div>
<div class="extra">
<div class="el btn btnPatreon monetization" location="https://patreon.com/bigbadwaffle">Pledge on Patreon</div>
<div class="el btn btnPaypal monetization" location="https://www.paypal.com/donate?hosted_button_id=NEQAV3NG9PWXA">Donate on Paypal</div>
<div class="el btn btnWiki" location="http://wiki.isleward.com/Main_Page">Access the Wiki</div>
</div>
<div class="version" location="https://gitlab.com/Isleward/play.isleward.com/-/wikis/v0.9.1-Release-Notes">v0.9.1</div>
<div class="version" location="https://gitlab.com/Isleward/play.isleward.com/-/wikis/v0.10.1-Release-Notes">v0.10.1</div>
</div>

+ 7
- 9
src/server/components/auth.js Прегледај датотеку

@@ -47,8 +47,6 @@ const getCreateLock = async () => {
module.exports = {
type: 'auth',

accountLevel: 1,

username: null,
charname: null,
characters: {},
@@ -178,7 +176,7 @@ module.exports = {
await this.getCustomChannels(character);
await this.getStash();

this.verifySkin(character);
await this.verifySkin(character);

data.callback(character);
},
@@ -212,8 +210,8 @@ module.exports = {
});
},

verifySkin: function (character) {
const doesOwn = this.doesOwnSkin(character.skinId);
verifySkin: async function (character) {
const doesOwn = await this.doesOwnSkin(character.skinId);

if (doesOwn)
return;
@@ -225,7 +223,7 @@ module.exports = {
character.sheetName = skins.getSpritesheet(defaultTo);
},

doesOwnSkin: function (skinId) {
doesOwnSkin: async function (skinId) {
const allSkins = skins.getList();
const filteredSkins = allSkins.filter(({ default: isDefaultSkin }) => isDefaultSkin);

@@ -235,7 +233,7 @@ module.exports = {
filteredSkins
};

eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);
await eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);

const result = filteredSkins.some(f => f.id === skinId);

@@ -252,7 +250,7 @@ module.exports = {
filteredSkins
};

eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);
await eventEmitter.emit('onBeforeGetAccountSkins', msgSkinList);

callback(filteredSkins);
},
@@ -445,7 +443,7 @@ module.exports = {

let simple = this.obj.getSimple(true);

this.verifySkin(simple);
await this.verifySkin(simple);
let prophecies = (data.prophecies || []).filter(p => p);


+ 1
- 1
src/server/components/stats.js Прегледај датотеку

@@ -724,7 +724,7 @@ module.exports = {
if (!lootStats)
this.stats.lootStats[mob.name] = time;
else
return ((lootStats.day !== time.day), (lootStats.month !== time.month));
return ((lootStats.day !== time.day) || (lootStats.month !== time.month));
},

events: {


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

@@ -152,7 +152,7 @@ module.exports = {
this.buyback(msg);
},

buy: function (msg) {
buy: async function (msg) {
let target = this.target;
if (!target)
return;
@@ -191,7 +191,7 @@ module.exports = {
}

if (item.type === 'skin') {
let haveSkin = this.obj.auth.doesOwnSkin(item.skinId);
let haveSkin = await this.obj.auth.doesOwnSkin(item.skinId);

if (haveSkin) {
sendMessage(this.obj, 'color-redA', 'You have already unlocked that skin.');


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

@@ -42,7 +42,8 @@ const config = {
spriteSizes: {
'images/tiles.png': 8,
'images/walls.png': 8,
'images/objects.png': 8
'images/objects.png': 8,
'images/mobs.png': 8
},
blockingTileIndices: [
6, 7, 54, 55, 62, 63, 154, 189, 190, 192, 193, 194, 195, 196, 197


+ 10
- 1
src/server/config/maps/cave/zone.js Прегледај датотеку

@@ -177,7 +177,16 @@ module.exports = {
drops: {
chance: 100,
rolls: 5,
magicFind: [2000, 200]
noRandom: true,
alsoRandom: true,
magicFind: [2000, 200],
blueprints: [{
chance: 100,
name: 'Digested Crystal',
quality: 0,
quest: true,
sprite: [1, 1]
}]
}
},
rare: {


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

@@ -1,5 +1,5 @@
module.exports = {
version: '0.9.1',
version: '0.10.1',
port: 4000,
startupMessage: 'Server: ready',
defaultZone: 'fjolarok',


+ 486
- 513
src/server/package-lock.json
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


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

@@ -1,6 +1,6 @@
{
"name": "isleward_server",
"version": "0.9.1",
"version": "0.10.1",
"description": "isleward",
"dependencies": {
"axios": "^0.21.1",
@@ -8,16 +8,16 @@
"compression": "^1.7.4",
"express": "^4.17.1",
"express-minify": "^1.0.0",
"image-size": "^0.9.2",
"image-size": "^1.0.0",
"rethinkdbdash": "^2.3.31",
"socket.io": "^2.4.1",
"socket.io": "^4.1.3",
"universal-analytics": "^0.4.23"
},
"devDependencies": {
"babel-eslint": "^10.1.0",
"eslint": "^7.12.0",
"eslint-plugin-prettier": "^3.1.4",
"eslint": "^7.32.0",
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-requirejs": "^4.0.1",
"sqlite3": "^5.0.0"
"sqlite3": "^4.2.0"
}
}

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

@@ -309,7 +309,7 @@ module.exports = {
msgBuild.cell = data[index];

events.emit('onBeforeBuildLayerTile', msgBuild);
const tile = builders.tile(msgBuild);
builders.tile(msgBuild);
events.emit('onAfterBuildLayerTile', msgBuild);
}
}


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

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

update: function () {
this.list.forEach(l => {
const spawners = this.list;
let count = spawners.length;

for (let i = 0; i < count; i++) {
const l = spawners[i];

if (l.destroyed) {
spawners.splice(i, 1);
i--;
count--;

continue;
}

if (l.lifetime && l.mob) {
if (!l.age)
l.age = 1;
@@ -143,7 +156,7 @@ module.exports = {

const mob = this.spawn(l);
if (!mob)
return;
continue;

const name = (l.blueprint.objZoneName || l.blueprint.name).toLowerCase();

@@ -159,7 +172,7 @@ module.exports = {

l.mob = mob;
}
});
}
},

setupMob: function (mob, blueprint) {
@@ -201,5 +214,12 @@ module.exports = {
if (cpn.simplify)
builtCpn.simplify = cpn.simplify.bind(builtCpn);
}
},

destroySpawnerForObject: function (obj) {
const spawner = this.list.find(l => l.mob === obj);

if (spawner)
spawner.destroyed = true;
}
};

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