Browse Source

refactor[#1671]: Fixed confusing, ugly and redundant code that deals with setting sprite textures and positions

tags/v0.8.4^2
Shaun 3 years ago
parent
commit
5e76ec31d4
3 changed files with 47 additions and 71 deletions
  1. +11
    -25
      src/client/js/objects/objBase.js
  2. +0
    -7
      src/client/js/objects/objects.js
  3. +36
    -39
      src/client/js/rendering/renderer.js

+ 11
- 25
src/client/js/objects/objBase.js View File

@@ -82,44 +82,30 @@ define([
},

setSpritePosition: function () {
if (!this.sprite)
return;

this.sprite.x = (this.x * scale) + (this.flipX ? scale : 0) + this.offsetX;
const oldY = this.sprite.y;
this.sprite.y = (this.y * scale) + this.offsetY;

if (this.sprite.width > scale) {
if (this.flipX)
this.sprite.x += scale;
else
this.sprite.x -= scale;
const { sprite, chatter, stats, x, y } = this;

this.sprite.y -= (scale * 2);
}

if (oldY !== this.sprite.y)
renderer.reorder();
if (!sprite)
return;

this.sprite.scale.x = this.flipX ? -scaleMult : scaleMult;
renderer.setSpritePosition(this);

['nameSprite', 'chatSprite'].forEach((s, i) => {
const sprite = this[s];
if (!sprite)
const subSprite = this[s];
if (!subSprite)
return;

let yAdd = scale;
if (i === 1) {
yAdd *= -0.8;
yAdd -= (this.chatter.msg.split('\r\n').length - 1) * scale * 0.8;
yAdd -= (chatter.msg.split('\r\n').length - 1) * scale * 0.8;
}

sprite.x = (this.x * scale) + (scale / 2) - (sprite.width / 2);
sprite.y = (this.y * scale) + yAdd;
subSprite.x = (x * scale) + (scale / 2) - (subSprite.width / 2);
subSprite.y = (y * scale) + yAdd;
});

if (this.stats)
this.stats.updateHpSprite();
if (stats)
stats.updateHpSprite();
},

setVisible: function (visible) {


+ 0
- 7
src/client/js/objects/objects.js View File

@@ -239,7 +239,6 @@ define([
let oldX = obj.x;

let sprite = obj.sprite;
let moved = false;
for (let p in template) {
let value = template[p];
let type = typeof (value);
@@ -247,9 +246,6 @@ define([
if (type !== 'object')
obj[p] = value;

if ((p === 'x') || (p === 'y'))
moved = true;

if (p === 'casting') {
if (obj === window.player)
events.emit('onGetSelfCasting', value);
@@ -267,9 +263,6 @@ define([
}
}

if (moved)
obj.setSpritePosition();

if (((template.sheetName) || (template.cell)) && (sprite))
renderer.setSprite(obj);
if (sprite) {


+ 36
- 39
src/client/js/rendering/renderer.js View File

@@ -707,45 +707,21 @@ define([
},

buildObject: function (obj) {
const { sheetName } = obj;
const { sheetName, parent: container, layerName, visible = true } = obj;

let w = 8;
let h = 8;
if (obj.w) {
w = obj.w / scaleMult;
h = obj.h / scaleMult;
}
const sprite = new pixi.Sprite();

const bigSheets = globals.clientConfig.bigTextures;
if (bigSheets.includes(sheetName)) {
obj.layerName = 'mobs';
w = 24;
h = 24;
obj.w = w * scaleMult;
obj.h = h * scaleMult;
}
obj.sprite = sprite;

let sprite = new pixi.Sprite(this.getTexture(obj.sheetName, obj.cell, w));
sprite.x = obj.x * scale;
sprite.y = obj.y * scale;
sprite.width = obj.w || scale;
sprite.height = obj.h || scale;
sprite.visible = obj.has('visible') ? obj.visible : true;
this.setSprite(obj);

if (bigSheets.includes(sheetName)) {
sprite.x -= scale;
sprite.y -= (scale * 2);
}
sprite.visible = visible;

if (obj.flipX) {
sprite.scale.x *= -1;
if (bigSheets.indexOf(obj.sheetName) > -1)
sprite.x += (scale * 2);
else
sprite.x += scale;
}
const spriteContainer = container || this.layers[layerName || sheetName] || this.layers.objects;
spriteContainer.addChild(sprite);

(obj.parent || this.layers[obj.layerName || obj.sheetName] || this.layers.objects).addChild(sprite);
obj.w = sprite.width;
obj.h = sprite.height;

return sprite;
},
@@ -800,20 +776,41 @@ define([
const bigSheets = globals.clientConfig.bigTextures;
const isBigSheet = bigSheets.includes(sheetName);

const size = isBigSheet ? 24 : 8;
const newSize = isBigSheet ? 24 : 8;

obj.w = size * scaleMult;
obj.h = size * scaleMult;
obj.w = newSize * scaleMult;
obj.h = obj.w;

sprite.width = obj.w;
sprite.height = obj.h;
sprite.texture = this.getTexture(sheetName, cell, newSize);

if (newSize !== sprite.size) {
sprite.size = newSize;
this.setSpritePosition(obj);
}
},

setSpritePosition: function (obj) {
const { sprite, x, y, flipX, offsetX, offsetY } = obj;

sprite.x = (x * scale) + (flipX ? scale : 0) + offsetX;
const oldY = sprite.y;
sprite.y = (y * scale) + offsetY;

if (sprite.width > scale) {
if (flipX)
sprite.x += scale;
else
sprite.x -= scale;

if (isBigSheet) {
sprite.x -= scale;
sprite.y -= (scale * 2);
}

sprite.texture = this.getTexture(sheetName, cell, size);
if (oldY !== sprite.y)
this.reorder();

sprite.scale.x = flipX ? -scaleMult : scaleMult;
},

reorder: function () {


Loading…
Cancel
Save