diff options
| author | Rubén Beltrán del Río <ben@nsovocal.com> | 2018-05-29 02:34:38 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-05-29 02:34:38 -0500 |
| commit | 3100e0533cb89a185ea021dfb83c4f364750180f (patch) | |
| tree | a957c7efc0b1d1e5f1ddafd69e2bfd39c70b50df /lib/sumo.js | |
| parent | 43413defcb854c8706a84a6a54a61c7977b52614 (diff) | |
Add Naive Game Rules (#11)
* Add components for tracking points
* Add methods to create new entities
* Adds nodes for points
* Add system to detect points
* Adds system to detect a winner
* Add system to render points and winner
* Add points required to win to config
* Add it all to the engine
* Add mention of points to changelog
Diffstat (limited to 'lib/sumo.js')
| -rw-r--r-- | lib/sumo.js | 45 |
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); |