diff --git a/app/ecs-components/position.js b/app/ecs-components/position.js index a0e637a..c629f5f 100644 --- a/app/ecs-components/position.js +++ b/app/ecs-components/position.js @@ -1,4 +1,29 @@ -export default { - x: {type: 'float32'}, - y: {type: 'float32'}, -}; +import Schema from '@/ecs/schema.js'; + +export default function(Component) { + return class Wielder extends Component { + instanceFromSchema() { + const Instance = super.instanceFromSchema(); + const Component = this; + Object.defineProperty(Instance.prototype, 'tile', { + get: function () { + const {TileLayers} = Component.ecs.get(1); + const {Position: {x, y}} = Component.ecs.get(this.entity); + const {tileSize} = TileLayers.layers[0]; + return { + x: (x - (x % tileSize.x)) / tileSize.x, + y: (y - (y % tileSize.y)) / tileSize.y, + } + }, + }); + return Instance; + } + static schema = new Schema({ + type: 'object', + properties: { + x: {type: 'float32'}, + y: {type: 'float32'}, + }, + }); + } +}