aboutsummaryrefslogtreecommitdiff
path: root/lib/factories/sumo.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/factories/sumo.js')
-rw-r--r--lib/factories/sumo.js25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/factories/sumo.js b/lib/factories/sumo.js
index e8417f9..7b50f8a 100644
--- a/lib/factories/sumo.js
+++ b/lib/factories/sumo.js
@@ -10,6 +10,9 @@ import CoupledEntitiesComponent from '../components/coupled_entities';
import DashComponent from '../components/dash';
import ElasticComponent from '../components/elastic';
import ForceComponent from '../components/force';
+import GrabAreaComponent from '../components/grab_area';
+import GrabbableComponent from '../components/grabbable';
+import GrabComponent from '../components/grab';
import MaxVelocityComponent from '../components/max_velocity';
import PositionComponent from '@serpentity/components.position';
import PixiContainerComponent from '../components/pixi_container';
@@ -96,6 +99,18 @@ export default {
});
entity.addComponent(new BodyComponent({ body }));
+ // GRAB
+
+ const areaSizeFactor = 2; // Multiplier vs the radius
+ const area = Bodies.circle(position.x / Config.meterSize, position.y / Config.meterSize, (radius * areaSizeFactor) / Config.meterSize, {
+ label: 'Sumo Grab Area',
+ isSensor: true
+ });
+
+ entity.addComponent(new GrabAreaComponent({ area }));
+ entity.addComponent(new GrabComponent({ body }));
+ entity.addComponent(new GrabbableComponent({ body }));
+
if (engine) {
engine.addEntity(entity);
}
@@ -235,6 +250,16 @@ export default {
component: DashComponent,
property: 'dashing'
}
+ },
+ {
+ source: {
+ type: 'keyboard',
+ index: 88 // X
+ },
+ target: {
+ component: GrabComponent,
+ property: 'grabbing'
+ }
}
]
}));