X-Git-Url: https://git.r.bdr.sh/rbdr/sumo/blobdiff_plain/7ade6f8d96825386bf2e89dea51f9297cbac8e9c..764ac76aa90b75cd5d79c217220654a6975069af:/lib/sumo.js diff --git a/lib/sumo.js b/lib/sumo.js index 2b6f085..4785087 100644 --- a/lib/sumo.js +++ b/lib/sumo.js @@ -1,10 +1,14 @@ import 'babel-polyfill'; +import Config from './config'; + // Systems + 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 DrawDashSystem from './systems/draw_dash'; import ElasticSystem from './systems/elastic'; import PhysicsWorldControlSystem from './systems/physics_world_control'; import PhysicsToAttributesSystem from './systems/physics_to_attributes'; @@ -31,13 +35,13 @@ const internals = { onLoad() { - const sumo = new internals.Sumo({ + const sumo = new internals.Sumo(Object.assign({ element: document.getElementById('sumo-app-entry-point') - }); + }, Config)); sumo.startLoop(); - internals.exports.sumo = sumo; + window.sumo = sumo; } }; @@ -61,6 +65,7 @@ internals.Sumo = class Sumo { constructor(config) { + // These defaults can get overridden by config this.fps = 60; this.aspectRatio = [2.76, 1]; this.verticalResolution = 224; @@ -206,6 +211,8 @@ internals.Sumo = class Sumo { this._engine.addSystem(new CreateCouplingLineSystem()); + this._engine.addSystem(new DrawDashSystem()); + this._engine.addSystem(new RenderSystem({ application: this._pixi })); @@ -215,24 +222,31 @@ internals.Sumo = class Sumo { _initializeEntities() { + SumoFactory.createArena(this._engine, { + position: { + x: this.horizontalResolution / 2, + y: this.verticalResolution / 2 + } + }); + const sumoA = SumoFactory.createSumo(null, { position: { - x: 50, - y: 50 + x: this.horizontalResolution / 2 - 100, + y: this.verticalResolution / 2 } }); const sumoB = SumoFactory.createControllableSumo(null, { position: { - x: 500, - y: 78 + x: this.horizontalResolution / 2 + 100, + y: this.verticalResolution / 2 } }); const harness = SumoFactory.createHarness(null, { position: { - x: 309, - y: 112 + x: this.horizontalResolution / 2, + y: this.verticalResolution / 2 } }); @@ -246,6 +260,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);