]> git.r.bdr.sh - rbdr/sumo/blobdiff - lib/sumo.js
Add gamepad support (#10)
[rbdr/sumo] / lib / sumo.js
index eef80d759ef547ab807163a7a3b7fa50c403411c..cdf8cc65bdb73e98e8d70ad659dd9756178bc7b0 100644 (file)
@@ -9,7 +9,9 @@ import CreateCouplingLineSystem from './systems/create_coupling_line';
 import ControlMapperSystem from './systems/control_mapper';
 import DashSystem from './systems/dash';
 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 RenderSystem from './systems/render';
@@ -197,6 +199,10 @@ internals.Sumo = class Sumo {
 
     this._engine.addSystem(new DashSystem());
 
+    this._engine.addSystem(new GrabSystem({
+      engine: this._matterJs
+    }));
+
     this._engine.addSystem(new ApplyForceSystem());
 
     this._engine.addSystem(new PhysicsWorldControlSystem({
@@ -213,6 +219,8 @@ internals.Sumo = class Sumo {
 
     this._engine.addSystem(new DrawDashSystem());
 
+    this._engine.addSystem(new DrawGrabSystem());
+
     this._engine.addSystem(new RenderSystem({
       application: this._pixi
     }));
@@ -229,14 +237,14 @@ internals.Sumo = class Sumo {
       }
     });
 
-    const sumoA = SumoFactory.createSumo(null, {
+    const sumoA = SumoFactory.createPlayer1Sumo(null, {
       position: {
         x: this.horizontalResolution / 2 - 100,
         y: this.verticalResolution / 2
       }
     });
 
-    const sumoB = SumoFactory.createControllableSumo(null, {
+    const sumoB = SumoFactory.createPlayer2Sumo(null, {
       position: {
         x: this.horizontalResolution / 2 + 100,
         y: this.verticalResolution / 2
@@ -260,6 +268,24 @@ internals.Sumo = class Sumo {
       entityB: harness
     });
 
+    SumoFactory.createInvisibleBlock(this._engine, {
+      width: this.horizontalResolution * 2,
+      height: this.verticalResolution * 0.1,
+      position: {
+        x: this.horizontalResolution / 2,
+        y: -this.verticalResolution * 0.1
+      }
+    });
+
+    SumoFactory.createInvisibleBlock(this._engine, {
+      width: this.horizontalResolution * 2,
+      height: this.verticalResolution * 0.1,
+      position: {
+        x: this.horizontalResolution / 2,
+        y: this.verticalResolution + this.verticalResolution * 0.1
+      }
+    });
+
     // To keep the coupling behind, we'll manually add the sumos later
 
     this._engine.addEntity(sumoA);