From 4627aecd1707f996531b7dea6b858b364863b14b Mon Sep 17 00:00:00 2001 From: jomo Date: Sun, 22 Nov 2015 05:33:48 +0100 Subject: [PATCH] clean up uses 'parts' object instead of tons of variables --- lib/renders.js | 86 +++++++++++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 33 deletions(-) diff --git a/lib/renders.js b/lib/renders.js index 5759156..9aa5cce 100644 --- a/lib/renders.js +++ b/lib/renders.js @@ -43,29 +43,49 @@ exp.draw_model = function(rid, img, scale, helm, is_body, callback) { var skin = new Image(); skin.onload = function() { - var old_type = skin.height === 32; var arm_width = 4; - var face = getPart(skin, 8, 8, 8, 8, scale); - var head_right = getPart(skin, 0, 8, 8, 8, scale); - var head_top = getPart(skin, 8, 0, 8, 8, scale); - var body = getPart(skin, 20, 20, 8, 12, scale); - var right_arm = getPart(skin, 44, 20, arm_width, 12, scale); - var right_arm_side = getPart(skin, 40, 20, 4, 12, scale); - var right_leg = getPart(skin, 4, 20, 4, 12, scale); - var right_leg_side = getPart(skin, 0, 20, 4, 12, scale); - var right_shoulder = getPart(skin, 44, 16, arm_width, 4, scale); - var left_leg; - var left_arm; - var left_shoulder; - if (old_type) { - left_arm = flip(right_arm); - left_leg = flip(right_leg); - left_shoulder = flip(right_shoulder); + var parts = { + head: { + front: getPart(skin, 8, 8, 8, 8, scale), + right: getPart(skin, 0, 8, 8, 8, scale), + top: getPart(skin, 8, 0, 8, 8, scale), + }, + arm: { + right: { + front: getPart(skin, 44, 20, arm_width, 12, scale), + side: getPart(skin, 40, 20, 4, 12, scale), + }, + left: { + front: null, + }, + }, + leg: { + right: { + front: getPart(skin, 4, 20, 4, 12, scale), + side: getPart(skin, 0, 20, 4, 12, scale), + }, + left: { + front: null, + } + }, + shoulder: { + right: getPart(skin, 44, 16, arm_width, 4, scale), + left: null, + }, + body: getPart(skin, 20, 20, 8, 12, scale), + }; + + if (skin.height === 32) { + // old skin + parts.arm.left.front = flip(parts.arm.right.front); + parts.leg.left.front = flip(parts.leg.right.front); + parts.shoulder.left = flip(parts.shoulder.right); } else { - left_arm = getPart(skin, 36, 52, arm_width, 12, scale); - left_leg = getPart(skin, 20, 52, 4, 12, scale); - left_shoulder = getPart(skin, 36, 48, arm_width, 4, scale); + // 1.8 skin - has separate left/right arms & legs + parts.arm.left.front = getPart(skin, 36, 52, arm_width, 12, scale); + parts.leg.left.front = getPart(skin, 20, 52, 4, 12, scale); + parts.shoulder.left = getPart(skin, 36, 48, arm_width, 4, scale); } var x = 0; @@ -83,33 +103,33 @@ exp.draw_model = function(rid, img, scale, helm, is_body, callback) { var frontc = front.getContext("2d"); frontc.patternQuality = "fast"; - frontc.drawImage(right_arm, (4 - arm_width) * scale, 0 * scale, arm_width * scale, 12 * scale); - frontc.drawImage(left_arm, 12 * scale, 0 * scale, arm_width * scale, 12 * scale); - frontc.drawImage(body, 4 * scale, 0 * scale, 8 * scale, 12 * scale); - frontc.drawImage(right_leg, 4 * scale, 12 * scale, 4 * scale, 12 * scale); - frontc.drawImage(left_leg, 8 * scale, 12 * scale, 4 * scale, 12 * scale); + frontc.drawImage(parts.arm.right.front, (4 - arm_width) * scale, 0 * scale, arm_width * scale, 12 * scale); + frontc.drawImage(parts.arm.left.front, 12 * scale, 0 * scale, arm_width * scale, 12 * scale); + frontc.drawImage(parts.body, 4 * scale, 0 * scale, 8 * scale, 12 * scale); + frontc.drawImage(parts.leg.right.front, 4 * scale, 12 * scale, 4 * scale, 12 * scale); + frontc.drawImage(parts.leg.left.front, 8 * scale, 12 * scale, 4 * scale, 12 * scale); // top x = x_offset + scale * 2; y = scale * -arm_width; z = z_offset + scale * 8; ctx.setTransform(1, -skew_a, 1, skew_a, 0, 0); - ctx.drawImage(right_shoulder, y - z - 0.5, x + z, right_shoulder.width + 1, right_shoulder.height + 1); + ctx.drawImage(parts.shoulder.right, y - z - 0.5, x + z, parts.shoulder.right.width + 1, parts.shoulder.right.height + 1); - y = scale * (4 + arm_width); - ctx.drawImage(left_shoulder, y - z, x + z, 4 * scale, 4 * scale + 1); + y = scale * 8; + ctx.drawImage(parts.shoulder.left, y - z, x + z, parts.shoulder.left.width, parts.shoulder.left.height + 1); // right side ctx.setTransform(1, skew_a, 0, skew_b, 0, 0); x = x_offset + scale * 2; y = 0; z = z_offset + scale * 20; - ctx.drawImage(right_leg_side, x + y, z - y, right_leg_side.width, right_leg_side.height); + ctx.drawImage(parts.leg.right.side, x + y, z - y, parts.leg.right.side.width, parts.leg.right.side.height); x = x_offset + scale * 2; y = scale * -arm_width; z = z_offset + scale * 8; - ctx.drawImage(right_arm_side, x + y, z - y - 0.5, right_arm_side.width, right_arm_side.height + 1); + ctx.drawImage(parts.arm.right.side, x + y, z - y - 0.5, parts.arm.right.side.width, parts.arm.right.side.height + 1); // front z = z_offset + scale * 12; @@ -123,21 +143,21 @@ exp.draw_model = function(rid, img, scale, helm, is_body, callback) { y = -0.5; z = z_offset; ctx.setTransform(1, -skew_a, 1, skew_a, 0, 0); - ctx.drawImage(head_top, y - z, x + z, head_top.width, head_top.height + 1); + ctx.drawImage(parts.head.top, y - z, x + z, parts.head.top.width, parts.head.top.height + 1); // head front x = x_offset + 8 * scale; y = 0; z = z_offset - 0.5; ctx.setTransform(1, -skew_a, 0, skew_b, 0, skew_a); - ctx.drawImage(face, y + x, x + z, face.width, face.height); + ctx.drawImage(parts.head.front, y + x, x + z, parts.head.front.width, parts.head.front.height); // head right x = x_offset; y = 0; z = z_offset; ctx.setTransform(1, skew_a, 0, skew_b, 0, 0); - ctx.drawImage(head_right, x + y, z - y - 0.5, head_right.width, head_right.height + 1); + ctx.drawImage(parts.head.right, x + y, z - y - 0.5, parts.head.right.width, parts.head.right.height + 1); canvas.toBuffer(function(err, buf) { if (err) {