Example #1
0
var drawCrossHair = exports.drawCrossHair = function (display, target) {
   if (!CROSSHAIR_MOVE) {
      CROSSHAIR_MOVE = gamejs.image.load('images/circle-02.png');
   }
   display.blit(CROSSHAIR_MOVE, $v.subtract(target, $v.divide(CROSSHAIR_MOVE.getSize(),2)));
   return;
}
Example #2
0
Bomb.prototype.draw = function(display, viewRect) {
	if (!viewRect.collideRect(this.rect)) {
		return false;
	}
	if (this.dying === true) {
		display.blit(
			this.animation.image,
			$v.subtract(
				$v.subtract(this.rect.topleft, $v.multiply(this.animation.image.getSize(),0.6)),
				viewRect.topleft
			)
		);
	} else {
		display.blit(this.image, $v.subtract(this.rect.topleft, viewRect.topleft));
	}
}
Example #3
0
   /**
    * tick
    */
   function tick () {
      // event handling
      gamejs.event.get().forEach(function(event) {
         var direction = {};
         direction[gamejs.event.K_UP] = [0, -1];
         direction[gamejs.event.K_DOWN] = [0, 1];
         direction[gamejs.event.K_LEFT] = [-1, 0];
         direction[gamejs.event.K_RIGHT] = [1, 0];
         if (event.type === gamejs.event.KEY_DOWN) {
            var delta = direction[event.key];
            if (delta) {
               spearPosition = $v.add(spearPosition, delta);
            }
         } else if (event.type === gamejs.event.MOUSE_MOTION) {
            if (display.rect.collidePoint(event.pos)) {
               spearPosition = $v.subtract(event.pos, spear.getSize());
            }
         }
      });

      // draw
      display.clear();
      display.blit(unit, unitPosition);
      display.blit(spear, spearPosition);
      // collision
      // the relative offset is automatically calculated by
      // the higher-level gamejs.sprite.collideMask(spriteA, spriteB)
      var relativeOffset = $v.subtract(spearPosition, unitPosition);
      var hasMaskOverlap = mUnit.overlap(mSpear, relativeOffset);
      if (hasMaskOverlap) {
         display.blit(font.render('COLLISION', '#ff0000'), [250, 50]);
      }
      display.blit(font.render('Move with mouse or cursor keys.'), [10, 250])

   };
Example #4
0
	this.AI = function(){
		var dist = $v.distance(self.game.player.position, self.position);
		//Player is far - try to catch him
		if(dist > 32){
			var delta = $v.divide($v.subtract(self.game.player.position, self.position), dist/self.speed);
			self.move(delta);
		}
		else{
			self.attack(self.game.player);
		}
		
	};
Camera.prototype.updatePosition = function(char) {
    var t = $v.subtract(char.pos, this.pos);

    if(t[0] !== this.cameraCenterPos[0]) {
        this.pos[0] = char.pos[0] - this.cameraCenterPos[0];

        if(this.pos[0] > (this.sizeOfWorld[0] - this.cameraWidth))  this.pos[0] = (this.sizeOfWorld[0] - this.cameraWidth);
        if(this.pos[0] < 0) this.pos[0] = 0;
    }

    if(t[1] !== this.cameraCenterPos[1]) {
        this.pos[1] = char.pos[1] - this.cameraCenterPos[1];

        if(this.pos[1] > this.sizeOfWorld[1] - this.cameraHeight) this.pos[1] = (this.sizeOfWorld[1] - this.cameraHeight);
        if(this.pos[1] < 0) this.pos[1] = 0;
    }
};
Example #6
0
 gamejs.event.get().forEach(function(event) {
    var direction = {};
    direction[gamejs.event.K_UP] = [0, -1];
    direction[gamejs.event.K_DOWN] = [0, 1];
    direction[gamejs.event.K_LEFT] = [-1, 0];
    direction[gamejs.event.K_RIGHT] = [1, 0];
    if (event.type === gamejs.event.KEY_DOWN) {
       var delta = direction[event.key];
       if (delta) {
          spearPosition = $v.add(spearPosition, delta);
       }
    } else if (event.type === gamejs.event.MOUSE_MOTION) {
       if (display.rect.collidePoint(event.pos)) {
          spearPosition = $v.subtract(event.pos, spear.getSize());
       }
    }
 });
Example #7
0
	this.AI = function(){
		var direction = {};
		direction[0] = [0, -1];
		direction[1] = [0, 1];
		direction[2] = [-1, 0];
		direction[3] = [1, 0];
				
		var dist = $v.distance(self.game.player.position, self.position);
		//Player is far enough, do random things
		if(dist > 100){
			var delta = $v.multiply(direction[Math.floor(Math.random() * 4)], self.speed);
			self.move(delta);
		}
		else{
			var delta = $v.divide($v.subtract(self.position, self.game.player.position), dist/self.speed);
			self.move(delta);
		}
	};
Example #8
0
Room.prototype.update = function(ms) {
  this._update_room_map();
  for (var i = 0; i < this._robots.length; i++) {
    var r = this._robots[i];
    var rz = new gamejs.Rect(r.rect);
    if (r.state == enemy.Enemy.StateEnum.DEAD) continue;
    r.update(ms);
  }
  var GRAVITY = 800.0;
  var eps = 1e-2;
  var limit = 100;
  var forces = new Array();
  for (var i = 0; i < this._robots.length; i++) {
    var sum = [0,0];
    for (var j = 0; j < this._robots.length; j++) if (i != j) {
      var r1 = this._robots[i];
      var r2 = this._robots[j];
      var dir = vectors.subtract(r1.center(), r2.center());
      var d = vectors.len(dir);
      var zz = false;
      if (d <= eps) {
        zz = true;
        var ang = Math.random() * 3.141592653589879 * 2;
        dir = [Math.sin(ang), Math.cos(ang)];
      }
      if (d < limit) d = limit;
      dir = vectors.unit(dir);
      var add_force = vectors.multiply(dir, GRAVITY / (d*d));
      sum = vectors.add(sum, add_force);
    }
    forces[i] = sum;
  }
  for (var i = 0; i < this._robots.length; i++) {
    this._robots[i]._make_sliding_move(forces[i][0], forces[i][1]);
  }
}
Example #9
0
 function handle (event) {
    /** MOUSE 0 DOWN **/
    if ((event.type === gamejs.event.MOUSE_DOWN) &&
       (event.button === 0)) {
       selectDown = event.pos;
    /** MOUSE 0 UP **/
    } else if ((event.type === gamejs.event.MOUSE_UP) &&
         (event.button === 0) ) {
       var pos = event.pos;
       var vehiclesClicked = vehicles.collidePoint(event.pos);
       if (selectRect) {
          selectedVehicles = vehicles.sprites().filter(function(v) {
             return (v.rect.collideRect(selectRect));
          });
       } else if (vehiclesClicked && vehiclesClicked.length) {
          // vehicle select?
          selectedVehicles = [vehiclesClicked[0]];
          sounds.unitSelected();
          gamejs.log('vehicle selected ', selectedVehicles);
       } else if (selectedVehicles) {
          var centers = selectedVehicles.map(function(v) {
             return v.rect.center;
          });
          // put selected vehicles on a line
          var centroid = $m.centroid(centers);
          var path = $v.subtract(centroid, pos);
          var targetDelta = $v.unit($v.rotate(path, Math.PI/2));
          var poses = [];
          if (selectedVehicles.length) {
             for (var i=0;i<selectedVehicles.length;i++) {
                var f = i - selectedVehicles.length/2;
                var t = $v.add(pos, $v.multiply(targetDelta, f * 50));
                poses.push(t);
             }
          }
          selectedVehicles.forEach(function(v, idx) {
             v.behaviour.type = 'arrival';
             v.behaviour.target = poses[idx]
          });
          sounds.unitMove();
          gamejs.log('Vehicle order confirmed ', pos);
       }
       selectRect = null;
       selectDown = null;
    /** MOUSE MOTION **/
    } else if ((event.type === gamejs.event.MOUSE_MOTION) && selectDown) {
       var delta = [event.pos[0] - selectDown[0], event.pos[1] - selectDown[1]];
       if ($v.len(delta) > 10) {
          selectRect = new gamejs.Rect(selectDown, [event.pos[0] - selectDown[0], event.pos[1] - selectDown[1]]);
          selectedVehicles = null;
       } else {
          selectRect = null;
       }
    /** MOUSE 0 UP **/
    } else if((event.type === gamejs.event.MOUSE_UP) && event.button === 2) {
       selectRect = null;
       selectDown = null;
       selectedVehicles = null;
       sounds.unitDeselect();
    /** KEY UP **/
    } else if((event.type === gamejs.event.KEY_UP)) {
       if (selectedVehicles) {
          var fireWeapon = false;
          selectedVehicles.forEach(function(v) {
             v.weapons.forEach(function(w) {
                if (w.key === event.key && w.cooldownStatus >= w.cooldownDuration) {
                   if (w.type === 'ProjectileCloud') {
                      custom({type: 'spawnProjectileCloud', arguments: [v.rect.center, v.orientationVector]});
                      w.cooldownStatus = 0;
                      fireWeapon = true;
                   } else if(w.type.indexOf('Laser') > -1) {
                      // FIXME custom({type: '
                      w.cooldownStatus = 0;
                      w.isActive = true;
                      fireWeapon = true;
                   }
                }
             });
          });
          if (!fireWeapon) {
             if (event.key == gamejs.event.K_s) {
                selectedVehicles.forEach(function(v) {
                   v.behaviour.type = 'stop';
                });
             }
          }
       }
    }
 };
Example #10
0
Ship.prototype.point_to = function(coords) {
   var diff = $v.subtract(coords, [this._x, this._y]);
   console.log(diff)
   // this.rotation = Math.atan2(diff[1], diff[0]) * 180 / Math.PI
   // this.image = gamejs.transform.rotate(this.originalImage, this.rotation);
};