feat: Wielder.project
This commit is contained in:
parent
35515f5345
commit
df47fadfae
|
@ -9,6 +9,58 @@ export default function(Component) {
|
|||
const {Inventory, Wielder} = Component.ecs.get(this.entity);
|
||||
return Inventory.item(Wielder.activeSlot + 1);
|
||||
};
|
||||
Instance.prototype.project = function(position, projection) {
|
||||
const {Direction: {direction}} = Component.ecs.get(this.entity);
|
||||
let startX = position.x;
|
||||
let startY = position.y;
|
||||
switch (direction) {
|
||||
case 0:
|
||||
startX += projection.distance[1];
|
||||
startY -= projection.distance[0];
|
||||
break;
|
||||
case 1:
|
||||
startX += projection.distance[0];
|
||||
startY += projection.distance[1];
|
||||
break;
|
||||
case 2:
|
||||
startX -= projection.distance[1];
|
||||
startY += projection.distance[0];
|
||||
break;
|
||||
case 3:
|
||||
startX -= projection.distance[0];
|
||||
startY -= projection.distance[1];
|
||||
break;
|
||||
}
|
||||
const projected = [];
|
||||
for (const row in projection.grid) {
|
||||
const columns = projection.grid[row];
|
||||
for (const column in columns) {
|
||||
const targeted = projection.grid[row][column];
|
||||
if (targeted) {
|
||||
let axe;
|
||||
switch (direction) {
|
||||
case 0:
|
||||
axe = [column, row];
|
||||
break;
|
||||
case 1:
|
||||
axe = [-row, column];
|
||||
break;
|
||||
case 2:
|
||||
axe = [-column, -row];
|
||||
break;
|
||||
case 3:
|
||||
axe = [row, -column];
|
||||
break;
|
||||
}
|
||||
projected.push({
|
||||
x: startX + parseInt(axe[0]),
|
||||
y: startY + parseInt(axe[1]),
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
return projected;
|
||||
}
|
||||
return Instance;
|
||||
}
|
||||
static schema = new Schema({
|
||||
|
|
Loading…
Reference in New Issue
Block a user