X-Git-Url: https://git.r.bdr.sh/rbdr/sumo/blobdiff_plain/6768cd461ec1a8ea87c0f64e1b3c29e36b0b02ed..43413defcb854c8706a84a6a54a61c7977b52614:/lib/sumo.js?ds=sidebyside diff --git a/lib/sumo.js b/lib/sumo.js index eef80d7..cdf8cc6 100644 --- a/lib/sumo.js +++ b/lib/sumo.js @@ -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);