From af3bcee14978104510292c7ae758c1eb208ed756 Mon Sep 17 00:00:00 2001 From: Alex Bezuska Date: Wed, 6 Apr 2016 09:47:14 -0400 Subject: [PATCH 1/3] add applyScale system --- lib/systems/apply-scale.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 lib/systems/apply-scale.js diff --git a/lib/systems/apply-scale.js b/lib/systems/apply-scale.js new file mode 100644 index 0000000..247aa57 --- /dev/null +++ b/lib/systems/apply-scale.js @@ -0,0 +1,27 @@ +"use strict"; + +module.exports = function(ecs, game) { // eslint-disable-line no-unused-vars + game.entities.registerSearch("applyScale", ["scale", "size"]); + ecs.addEach(function applyScale(entity, elapsed) { // eslint-disable-line no-unused-vars + var percent = game.entities.get(entity, "scale"); + if (game.entities.get(entity, "lastScale")) { + if (game.entities.get(entity, "lastScale") !== percent) { + scaleEntity(game, entity, percent); + game.entities.set(entity, "lastScale", percent); + } + } else { + var size = game.entities.get(entity, "size"); + game.entities.set(entity, "originalSize", size); + scaleEntity(game, entity, percent); + game.entities.set(entity, "lastScale", percent); + } + }, "applyScale"); +}; + +function scaleEntity(game, entity, percent) { + var originalSize = game.entities.get(entity, "originalSize"); + game.entities.set(entity, "size", { + "width": originalSize.width * percent, + "height": originalSize.height * percent + }); +} From 035dc598da78822d927746ae1482f204b41a7267 Mon Sep 17 00:00:00 2001 From: Alex Bezuska Date: Wed, 6 Apr 2016 10:18:31 -0400 Subject: [PATCH 2/3] add max to scaling --- lib/systems/apply-scale.js | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/lib/systems/apply-scale.js b/lib/systems/apply-scale.js index 247aa57..af4cbe4 100644 --- a/lib/systems/apply-scale.js +++ b/lib/systems/apply-scale.js @@ -3,25 +3,28 @@ module.exports = function(ecs, game) { // eslint-disable-line no-unused-vars game.entities.registerSearch("applyScale", ["scale", "size"]); ecs.addEach(function applyScale(entity, elapsed) { // eslint-disable-line no-unused-vars - var percent = game.entities.get(entity, "scale"); - if (game.entities.get(entity, "lastScale")) { - if (game.entities.get(entity, "lastScale") !== percent) { - scaleEntity(game, entity, percent); - game.entities.set(entity, "lastScale", percent); + var scale = game.entities.get(entity, "scale"); + console.log(game.entities.get(entity, "scale")); + if (scale.last) { + if (scale.last !== scale.current) { + scaleEntity(game, entity, scale); + scale.last = scale.current; } } else { var size = game.entities.get(entity, "size"); game.entities.set(entity, "originalSize", size); - scaleEntity(game, entity, percent); - game.entities.set(entity, "lastScale", percent); + scaleEntity(game, entity, scale); + scale.last = scale.current; } }, "applyScale"); }; -function scaleEntity(game, entity, percent) { - var originalSize = game.entities.get(entity, "originalSize"); - game.entities.set(entity, "size", { - "width": originalSize.width * percent, - "height": originalSize.height * percent - }); +function scaleEntity(game, entity, scale) { + if (scale.current < scale.max) { + var originalSize = game.entities.get(entity, "originalSize"); + game.entities.set(entity, "size", { + "width": originalSize.width * scale.current, + "height": originalSize.height * scale.current + }); + } } From c804b8a1b76a746974f80f5329fa2fb67d43eed2 Mon Sep 17 00:00:00 2001 From: Alex Bezuska Date: Wed, 6 Apr 2016 10:29:11 -0400 Subject: [PATCH 3/3] make scale max not required --- lib/systems/apply-scale.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/systems/apply-scale.js b/lib/systems/apply-scale.js index af4cbe4..e7f1806 100644 --- a/lib/systems/apply-scale.js +++ b/lib/systems/apply-scale.js @@ -4,27 +4,33 @@ module.exports = function(ecs, game) { // eslint-disable-line no-unused-vars game.entities.registerSearch("applyScale", ["scale", "size"]); ecs.addEach(function applyScale(entity, elapsed) { // eslint-disable-line no-unused-vars var scale = game.entities.get(entity, "scale"); - console.log(game.entities.get(entity, "scale")); if (scale.last) { if (scale.last !== scale.current) { - scaleEntity(game, entity, scale); - scale.last = scale.current; + scaleWithMax(game, entity, scale); } } else { var size = game.entities.get(entity, "size"); game.entities.set(entity, "originalSize", size); - scaleEntity(game, entity, scale); - scale.last = scale.current; + scaleWithMax(game, entity, scale); } }, "applyScale"); }; -function scaleEntity(game, entity, scale) { - if (scale.current < scale.max) { - var originalSize = game.entities.get(entity, "originalSize"); - game.entities.set(entity, "size", { - "width": originalSize.width * scale.current, - "height": originalSize.height * scale.current - }); +function scaleWithMax(game, entity, scale) { + if (scale.max) { + if (scale.current < scale.max) { + scaleEntity(game, entity, scale); + } + } else { + scaleEntity(game, entity, scale); } } + +function scaleEntity(game, entity, scale) { + var originalSize = game.entities.get(entity, "originalSize"); + game.entities.set(entity, "size", { + "width": originalSize.width * scale.current, + "height": originalSize.height * scale.current + }); + scale.last = scale.current; +}