Skip to content

Commit

Permalink
Sync with published result of episode 24.
Browse files Browse the repository at this point in the history
  • Loading branch information
pomle committed May 9, 2020
1 parent 974f747 commit 988e17f
Show file tree
Hide file tree
Showing 13 changed files with 25 additions and 30 deletions.
2 changes: 1 addition & 1 deletion public/js/Entity.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {Vec2} from './math.js';
import Trait from './Trait.js';
import AudioBoard from './AudioBoard.js';
import BoundingBox from './BoundingBox.js';
import EventBuffer from './EventBuffer.js';
import Trait from './Trait.js';

export const Sides = {
TOP: Symbol('top'),
Expand Down
4 changes: 2 additions & 2 deletions public/js/entities/Bullet.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import Entity, {Sides} from '../Entity.js';
import Entity from '../Entity.js';
import Trait from '../Trait.js';
import Killable from '../traits/Killable.js';
import Stomper from '../traits/Stomper.js';
import Gravity from '../traits/Gravity.js';
import Stomper from '../traits/Stomper.js';
import Velocity from '../traits/Velocity.js';
import {loadSpriteSheet} from '../loaders/sprite.js';

Expand Down
5 changes: 3 additions & 2 deletions public/js/entities/Goomba.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import Entity, {Sides} from '../Entity.js';
import Entity from '../Entity.js';
import Trait from '../Trait.js';
import Killable from '../traits/Killable.js';
import PendulumMove from '../traits/PendulumMove.js';
import Physics from '../traits/Physics.js';
import Solid from '../traits/Solid.js';
import Stomper from '../traits/Stomper.js';
import {loadSpriteSheet} from '../loaders/sprite.js';

export function loadGoomba() {
Expand All @@ -18,7 +19,7 @@ class Behavior extends Trait {
return;
}

if (them.stomper) {
if (them.traits.has(Stomper)) {
if (them.vel.y > us.vel.y) {
us.traits.get(Killable).kill();
us.traits.get(PendulumMove).speed = 0;
Expand Down
4 changes: 2 additions & 2 deletions public/js/entities/Koopa.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Entity, {Sides} from '../Entity.js';
import Entity from '../Entity.js';
import Trait from '../Trait.js';
import Killable from '../traits/Killable.js';
import Stomper from '../traits/Stomper.js';
import PendulumMove from '../traits/PendulumMove.js';
import Physics from '../traits/Physics.js';
import Solid from '../traits/Solid.js';
import Stomper from '../traits/Stomper.js';
import {loadSpriteSheet} from '../loaders/sprite.js';

export function loadKoopa() {
Expand Down
10 changes: 4 additions & 6 deletions public/js/entities/Mario.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,12 @@ function createMarioFactory(sprite, audio) {
return 'jump';
}

const go = mario.traits.get(Go);
if (go.distance > 0) {
if ((mario.vel.x > 0 && go.dir < 0) || (mario.vel.x < 0 && go.dir > 0)) {
if (mario.traits.get(Go).distance > 0) {
if ((mario.vel.x > 0 && mario.traits.get(Go).dir < 0) || (mario.vel.x < 0 && mario.traits.get(Go).dir > 0)) {
return 'break';
}

return runAnim(go.distance);
return runAnim(mario.traits.get(Go).distance);
}

return 'idle';
Expand All @@ -46,8 +45,7 @@ function createMarioFactory(sprite, audio) {
}

function drawMario(context) {
const go = this.traits.get(Go);
sprite.draw(routeFrame(this), context, 0, 0, go.heading < 0);
sprite.draw(routeFrame(this), context, 0, 0, this.traits.get(Go).heading < 0);
}

return function createMario() {
Expand Down
2 changes: 1 addition & 1 deletion public/js/input.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Keyboard from './KeyboardState.js';
import InputRouter from './InputRouter.js';
import Go from './traits/Go.js';
import Jump from './traits/Jump.js';
import Go from './traits/Go.js';

export function setupKeyboard(window) {
const input = new Keyboard();
Expand Down
2 changes: 1 addition & 1 deletion public/js/layers/player-progress.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import Player from "../traits/Player.js";
import {findPlayers} from "../player.js";
import Player from "../traits/Player.js";

function getPlayer(entities) {
for (const entity of findPlayers(entities)) {
Expand Down
4 changes: 2 additions & 2 deletions public/js/layers/text.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
export function createTextLayer(font, text) {
const size = font.size;

return function drawText(context) {
const textW = text.length;
const screenW = Math.floor(context.canvas.width / size);
const screenH = Math.floor(context.canvas.height / size);
const x = screenW / 2 - textW / 2;
const y = 12;
const y = screenH / 2;
font.print(text, context, x * size, y * size);
};
}
8 changes: 2 additions & 6 deletions public/js/loaders/level.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,6 @@ function createTimer() {
return timer;
}

function createTrigger() {
const entity = new Entity();
entity.addTrait(new Trigger());
return entity;
}

function loadPattern(name) {
return loadJSON(`/sprites/patterns/${name}.json`);
}
Expand Down Expand Up @@ -65,9 +59,11 @@ function setupTriggers(levelSpec, level) {

for (const triggerSpec of levelSpec.triggers) {
const trigger = new Trigger();

trigger.conditions.push((entity, touches, gc, level) => {
level.events.emit(Level.EVENT_TRIGGER, triggerSpec, entity, touches);
});

const entity = new Entity();
entity.addTrait(trigger);
entity.size.set(64, 64);
Expand Down
7 changes: 4 additions & 3 deletions public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import {createColorLayer} from './layers/color.js';
import {createTextLayer} from './layers/text.js';
import {createCollisionLayer} from './layers/collision.js';
import {createDashboardLayer} from './layers/dashboard.js';
import { createPlayerProgressLayer } from './layers/player-progress.js';
import SceneRunner from './SceneRunner.js';
import Scene from './Scene.js';
import { createPlayerProgressLayer } from './layers/player-progress.js';
import TimedScene from './TimedScene.js';

async function main(canvas) {
Expand All @@ -29,7 +29,8 @@ async function main(canvas) {
const sceneRunner = new SceneRunner();

const mario = entityFactory.mario();
makePlayer(mario, 'MARIO');
makePlayer(mario, "MARIO");
window.mario = mario;

const inputRouter = setupKeyboard(window);
inputRouter.addReceiver(mario);
Expand Down Expand Up @@ -90,7 +91,7 @@ async function main(canvas) {

timer.start();

runLevel('debug-progression');
runLevel('1-1');
}

const canvas = document.getElementById('screen');
Expand Down
2 changes: 1 addition & 1 deletion public/js/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export function createPlayerEnv(playerEntity) {

export function makePlayer(entity, name) {
const player = new Player();
player.name = name;
player.name = "MARIO";
entity.addTrait(player);
}

Expand Down
1 change: 0 additions & 1 deletion public/js/traits/Killable.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import {Sides} from '../Entity.js';
import Trait from '../Trait.js';

export default class Killable extends Trait {
Expand Down
4 changes: 2 additions & 2 deletions public/js/traits/Stomper.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Sides} from '../Entity.js';
import Trait from '../Trait.js';
import Killable from './Killable.js';

export default class Stomper extends Trait {
static EVENT_STOMP = Symbol('stomp');
Expand All @@ -15,7 +15,7 @@ export default class Stomper extends Trait {
}

collides(us, them) {
if (!them.killable || them.killable.dead) {
if (!them.traits.has(Killable) || them.traits.get(Killable).dead) {
return;
}

Expand Down

0 comments on commit 988e17f

Please sign in to comment.