Skip to content
Snippets Groups Projects
Commit 523b5dcc authored by Tim Repke's avatar Tim Repke
Browse files
parents 565895a7 15a7d6e9
No related branches found
No related tags found
No related merge requests found
......@@ -109,25 +109,26 @@ Char.prototype.animate = function() {
};
Char.prototype.physics = function() {
if (this.moveTarget && this.moveTarget.length == 0) return;
if (Vec.equals(this.translation, this.moveTarget[0])) {
this.moveTarget.shift();
return;
}
var v = Vec.add(Vec.flipSign(this.translation), this.moveTarget[0]);
var d = Vec.length(v);
} else {
var stuckFixer = 0;
do {
var v = Vec.add(Vec.flipSign(this.translation), this.moveTarget[0]);
var d = Vec.length(v);
if (d > this.maxSpeed) {
var n = Vec.mul(v, 1/d); // normalized
v = Vec.mul(n, this.maxSpeed);
}
if (d > this.maxSpeed) {
var n = Vec.mul(v, 1 / d); // normalized
v = Vec.mul(n, this.maxSpeed + stuckFixer);
}
stuckFixer += 0.5;
var nextPosition = (d < g_smallValue) ? this.moveTarget[0] : Vec.add(this.translation, v);
var nextPosition = (d < g_smallValue) ? this.moveTarget[0] : Vec.add(this.translation, v);
} while (!this.pathFinder.canWalkOn(nextPosition[0], nextPosition[1]));
if (this.pathFinder.canWalkOn(nextPosition[0], nextPosition[1]))
Vec.assign(this.translation, nextPosition);
else
this.moveTarget.shift();
}
Game.eventHandler.triggerEventOn('walkon', this.translation[0], this.translation[1]);
......
......@@ -32,18 +32,28 @@ EventHandler.prototype.hasEventOn = function (trigger, x, y) {
return this.getEventOn(trigger, x, y) !== undefined;
};
EventHandler.prototype.getEventOn = function(trigger, x, y) {
EventHandler.prototype.getEventOn = function(trigger, x, y, callback) {
if (!this.walkOnEvents) this.walkOnEvents = {}; // currently active events
for (var i = 0; i < this.eventNodes[trigger].length; ++i) {
if (this.eventNodes[trigger][i].path.isInside(x, y)) {
return this.eventNodes[trigger][i];
var node = this.eventNodes[trigger][i];
if (node.path.isInside(x, y)) {
if (!this.walkOnEvents[node.id]) {
this.walkOnEvents[node.id] = true;
callback(node, true);
}
} else {
delete this.walkOnEvents[node.id];
}
}
return undefined;
};
EventHandler.prototype.triggerEventOn = function (trigger, x, y) {
var event = this.getEventOn(trigger, x, y);
if (event) this.handleEvent(event, {trigger: trigger, x: x, y: y});
var self = this;
this.getEventOn(trigger, x, y, function(event, bEnter) {
self.handleEvent(event, {trigger: trigger, x: x, y: y, bEnter: bEnter});
});
};
/**
......@@ -58,12 +68,10 @@ EventHandler.prototype.triggerEventOn = function (trigger, x, y) {
* @param event
*/
EventHandler.prototype.handleEvent = function (event, context) {
if (context.trigger == 'walkon')
console.log('walkon');
switch (event.type) {
case 'achievement':
Game.achievements.triggerAchievement(event.id, context);
if (context.bEnter)
Game.achievements.triggerAchievement(event.id, context);
break;
case 'mapchange':
Game.instance.nextMap(event.destination, event.target);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment