From 8595b062fc9453854695af75b47e37c3644115a1 Mon Sep 17 00:00:00 2001 From: cha0s Date: Wed, 23 Mar 2022 04:05:31 -0500 Subject: [PATCH] refactor: remove FACTOR --- packages/entity/src/traits/dom-node.js | 21 +++++++++++++++++---- packages/topdown/src/components/room.jsx | 11 ++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packages/entity/src/traits/dom-node.js b/packages/entity/src/traits/dom-node.js index daabc70..0e8d890 100644 --- a/packages/entity/src/traits/dom-node.js +++ b/packages/entity/src/traits/dom-node.js @@ -3,14 +3,17 @@ import {StateProperty, Trait} from '@avocado/traits'; import {compose} from '@flecks/core'; const decorate = compose( + StateProperty('domScaleX', { + track: true, + }), + StateProperty('domScaleY', { + track: true, + }), StateProperty('parentNode', { track: true, }), ); -// TODO... -const FACTOR = 5; - export default () => class DomNode extends decorate(Trait) { #scheduledRuleApplication = true; @@ -25,6 +28,8 @@ export default () => class DomNode extends decorate(Trait) { static defaultState() { return { + domScaleX: 1, + domScaleY: 1, parentNode: null, }; } @@ -64,6 +69,14 @@ export default () => class DomNode extends decorate(Trait) { this.#scheduledRuleApplication = true; }, + domScaleXChanged: () => { + this.#scheduledRuleApplication = true; + }, + + domScaleYChanged: () => { + this.#scheduledRuleApplication = true; + }, + parentNodeChanged: (oldParentNode, newParentNode) => { oldParentNode?.removeChild(this.entity.node); newParentNode?.appendChild(this.entity.node); @@ -79,7 +92,7 @@ export default () => class DomNode extends decorate(Trait) { rotation, visibleScale, } = this.entity; - const [x, y] = Vector.scale(position, FACTOR); + const [x, y] = Vector.mul(position, [this.entity.domScaleX, this.entity.domScaleY]); this.entity.node.style.transform = [ `translate(${x}px, ${y}px)`, `rotate(${360 * (rotation / (Math.PI * 2))}deg)`, diff --git a/packages/topdown/src/components/room.jsx b/packages/topdown/src/components/room.jsx index bea2bbc..6343cf9 100644 --- a/packages/topdown/src/components/room.jsx +++ b/packages/topdown/src/components/room.jsx @@ -8,6 +8,7 @@ import { } from '@flecks/react'; const Room = ({ + domScale, left, room, top, @@ -19,8 +20,10 @@ const Room = ({ } const onEntityAdded = async (entity) => { if (entity.is('DomNode')) { - // eslint-disable-next-line no-param-reassign + /* eslint-disable no-param-reassign */ + [entity.domScaleX, entity.domScaleY] = domScale; entity.parentNode = ref.current.querySelector('.entities'); + /* eslint-enable no-param-reassign */ } }; Object.values(room.entities).forEach(onEntityAdded); @@ -28,13 +31,13 @@ const Room = ({ return () => { room.off('entityAdded', onEntityAdded); }; - }, [ref, room]); + }, [domScale, ref, room]); useEffect(() => { if (!ref.current || !room) { return; } const entities = ref.current.querySelector('.entities'); - entities.style.transform = `translate(${left}px, ${top}px)`; + entities.style.transform = `translate(${left * domScale[0]}px, ${top * domScale[1]}px)`; }); return (