Ejemplo n.º 1
0
PlayerDriver.prototype.movePlayer = function(direction)
{
  if (this.collideFlag) return;

  var player = this.entities.queryTag('player')[0];
  var v = player.newtonian.velocity
  var h = player.steering.heading;

  var speed = 25;
  var v     = Vec2.aquire();
  switch (direction) {
    case PlayerDriver.directions.stop:
      h.set(0, 0);
      break;
    case PlayerDriver.directions.up:
      h.add( v.set(0, -speed));
      break;
    case PlayerDriver.directions.down:
      h.add( v.set(0, speed));
      break;
    case PlayerDriver.directions.left:
      h.add( v.set(-speed, 0));
      break;
    case PlayerDriver.directions.right:
      h.add( v.set(speed, 0));
      break;
  }

  h.limit(100);

  Vec2.release(v);
};
Ejemplo n.º 2
0
LevelSystem.prototype.onFinishLevel = function(player, fEntity)
{
  var finish = fEntity.finish;

  dist.assign(fEntity.position.location).sub(player.position.location);

  // constrain movement
  player.newtonian.acceleration
    .assign(dist)
    .smult(100);

  // constrain speed
  player.newtonian.velocity
    .normalize(dist.magnitude()*5);


  if (!finish.timeOut && !finish.finished) {
    finish.timeOut = 1500;
    this.messanger.trigger(fEntity, 'finish-start');
  }

  if (finish.finished) {
    this.currentLevel++;
    this.loadLevel();
  }

};
Ejemplo n.º 3
0
function bounceEntity(entity)
{
  var v      = Vec2.aquire();
  var aVel   = entity.newtonian.velocity;
  v.assign(aVel).rotate(Math.PI).smult(3);
  entity.newtonian.velocity.assign(v);
  entity.steering.heading.set(0, 0);
  Vec2.release(v);
}
Ejemplo n.º 4
0
CollisionSystem.prototype.update = function(dt, time)
{
  var entities = this.entities.queryComponents(FILTER);
  var player = this.entities.queryTag('player')[0];

  var pSpatial = player.spatial.hwidth;

  // brute force, only check player
  for (var n = 0; n < entities.length; n++) {
    var entity = entities[n];
    if (entity === player) continue;

    var coincident = Vec2.rectIntersect(
      entity.position.location,
      entity.spatial.hwidth,
      player.position.location,
      player.spatial.hwidth);

    if (coincident)
      this.messanger.trigger(player, CollisionSystem.COINCIDENT, entity);
  }

  // if we're hitting a wall
  var m = this.maps;
  var p = player;
  var onMap = Vec2.rectContains(
    p.position.location,
    p.spatial.hwidth,
    m.position,
    m.hwidth)

  if (!onMap) {
    this.messanger.trigger(player, CollisionSystem.OUT_OF_BOUNDS);
  }

};