diff --git a/jsiso/tile/Field.js b/jsiso/tile/Field.js index 3cac0c2..b006d05 100644 --- a/jsiso/tile/Field.js +++ b/jsiso/tile/Field.js @@ -929,61 +929,39 @@ function(EffectLoader, Emitter, utils) { var particle, subPart; distance = distance || tileHeight; - if (isometric) { - if (direction === "up") { - drawY += distance / 2 * curZoom; - drawX += distance * curZoom; - } - else if (direction === "down") { - drawY += distance / 2 * curZoom; - drawX -= distance * curZoom; - } - else if (direction === "left") { - drawY -= distance / 2 * curZoom; - drawX -= distance * curZoom; - } - else if (direction === "right") { - drawY -= distance / 2 * curZoom; - drawX += distance * curZoom; - } - } - else { - if (direction === "up") { - drawY += distance * curZoom; - // Offset moving for particle effect particles - for (particle in particleMapHolder) { - for (subPart in particleMapHolder[particle]) { - particleMapHolder[particle][subPart].ShiftBy(0, distance * curZoom); - } - } - } - else if (direction === "down") { - drawY -= distance * curZoom; - // Offset moving for particle effect particles - for (particle in particleMapHolder) { - for (subPart in particleMapHolder[particle]) { - particleMapHolder[particle][subPart].ShiftBy(0, -distance * curZoom); - } - } - } - else if (direction === "left") { - drawX += distance * curZoom; - // Offset moving for particle effect particles - for (particle in particleMapHolder) { - for (subPart in particleMapHolder[particle]) { - particleMapHolder[particle][subPart].ShiftBy(distance * curZoom, 0); - } - } + var scaled_step = distance * curZoom; + + var _delta = { + false: { + "up": {"x": 0, "y": 1}, + "down": {"x": 0, "y": -1}, + "left": {"x": 1, "y": 0}, + "right": {"x": -1, "y": 0} + }, + true: { + "up": {"x": 1, "y": 0.5}, + "down": {"x": -1, "y": 0.5}, + "left": {"x": -1, "y": -0.5}, + "right": {"x": 1, "y": -0.5} } - else if (direction === "right") { - drawX -= distance * curZoom; - // Offset moving for particle effect particles - for (particle in particleMapHolder) { - for (subPart in particleMapHolder[particle]) { - particleMapHolder[particle][subPart].ShiftBy(-distance * curZoom, 0); - } + }[!!isometric][direction]; + + if !(_delta) return; + + var _scaled_delta = { + "x": _delta.x * scaled_step, + "y": _delta.y * scaled_step + }; + drawX += _scaled_delta.x; + drawY += _scaled_delta.y; + + if (!isometric) { + // Offset moving for particle effect particles + for (particle in particleMapHolder) { + for (subPart in particleMapHolder[particle]) { + particleMapHolder[particle][subPart].ShiftBy(_scaled_delta.x, _scaled_delta.y); } - } + } } } };