aboutsummaryrefslogtreecommitdiff
path: root/lib/sumo.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sumo.js')
-rw-r--r--lib/sumo.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/sumo.js b/lib/sumo.js
index cdf8cc6..835e910 100644
--- a/lib/sumo.js
+++ b/lib/sumo.js
@@ -8,13 +8,17 @@ import ApplyForceSystem from './systems/apply_force';
import CreateCouplingLineSystem from './systems/create_coupling_line';
import ControlMapperSystem from './systems/control_mapper';
import DashSystem from './systems/dash';
+import DetectPointsCollisionSystem from './systems/detect_points_collision';
+import DetectWinnerSystem from './systems/detect_winner';
import DrawDashSystem from './systems/draw_dash';
import DrawGrabSystem from './systems/draw_grab';
import ElasticSystem from './systems/elastic';
import GrabSystem from './systems/grab';
import PhysicsWorldControlSystem from './systems/physics_world_control';
import PhysicsToAttributesSystem from './systems/physics_to_attributes';
+import RenderPointsSystem from './systems/render_points';
import RenderSystem from './systems/render';
+import RenderWinnerSystem from './systems/render_winner';
import AttributesToRenderableSystem from './systems/attributes_to_renderable';
// Factories
@@ -209,6 +213,18 @@ internals.Sumo = class Sumo {
engine: this._matterJs
}));
+ this._engine.addSystem(new DetectPointsCollisionSystem());
+
+ this._engine.addSystem(new DetectWinnerSystem());
+
+ this._engine.addSystem(new RenderPointsSystem({
+ application: this._pixi
+ }));
+
+ this._engine.addSystem(new RenderWinnerSystem({
+ application: this._pixi
+ }));
+
this._engine.addSystem(new ElasticSystem());
this._engine.addSystem(new PhysicsToAttributesSystem());
@@ -268,6 +284,8 @@ internals.Sumo = class Sumo {
entityB: harness
});
+ // Walls
+
SumoFactory.createInvisibleBlock(this._engine, {
width: this.horizontalResolution * 2,
height: this.verticalResolution * 0.1,
@@ -286,6 +304,33 @@ internals.Sumo = class Sumo {
}
});
+ // Points Detector
+
+ SumoFactory.createPointsCollider(this._engine, {
+ collisionTarget: sumoA,
+ pointsTarget: 'red',
+ height: this.verticalResolution,
+ width: this.horizontalResolution,
+ position: {
+ x: this.horizontalResolution + this.horizontalResolution / 2,
+ y: this.verticalResolution / 2
+ }
+ });
+
+ SumoFactory.createPointsCollider(this._engine, {
+ collisionTarget: sumoB,
+ pointsTarget: 'blue',
+ height: this.verticalResolution,
+ width: this.horizontalResolution,
+ position: {
+ x: -this.horizontalResolution / 2,
+ y: this.verticalResolution / 2
+ }
+ });
+
+ // The game state
+ SumoFactory.createGameState(this._engine);
+
// To keep the coupling behind, we'll manually add the sumos later
this._engine.addEntity(sumoA);