aboutsummaryrefslogtreecommitdiff
path: root/lib/factories/sumo.js
diff options
context:
space:
mode:
authorRubén Beltrán del Río <ben@nsovocal.com>2018-05-28 21:35:38 -0500
committerGitHub <noreply@github.com>2018-05-28 21:35:38 -0500
commit1676911c8a2621274bf75ff7271faa926cf58d6c (patch)
tree776613e919a5fae242ba65f0871028d4c678bcff /lib/factories/sumo.js
parent764ac76aa90b75cd5d79c217220654a6975069af (diff)
Add Grab System (#9)
* Remove unused code * Adds grab components * Adds grab nodes * Add sensors to the physics world * Add grab systems * Add new sprites * Attach grab components * Add grab system to engine * Update changelog
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'
+ }
}
]
}));