82 lines
1.5 KiB
JavaScript
82 lines
1.5 KiB
JavaScript
Crafty.c('Grid', {
|
|
init: function() {
|
|
this.attr({
|
|
w: Game.map_grid.tile.width,
|
|
h: Game.map_grid.tile.height
|
|
})
|
|
},
|
|
|
|
at: function(x, y) {
|
|
if (x === undefined && y === undefined) {
|
|
return {
|
|
x: this.x / Game.map_grid.tile.width,
|
|
y: this.y / Game.map_grid.tile.height
|
|
}
|
|
} else {
|
|
this.attr({
|
|
x: x * Game.map_grid.tile.width,
|
|
y: y * Game.map_grid.tile.height
|
|
});
|
|
return this;
|
|
}
|
|
}
|
|
});
|
|
|
|
Crafty.c('Actor', {
|
|
init: function() {
|
|
this.requires('2D, Canvas, Grid');
|
|
}
|
|
});
|
|
|
|
Crafty.c('Tree', {
|
|
init: function() {
|
|
this.requires('Actor, Color, Solid')
|
|
.color('rgb(20, 125, 40)');
|
|
}
|
|
});
|
|
|
|
Crafty.c('Bush', {
|
|
init: function() {
|
|
this.requires('Actor, Color, Solid')
|
|
.color('rgb(20, 185, 40)');
|
|
}
|
|
});
|
|
|
|
Crafty.c('PlayerCharacter', {
|
|
init: function() {
|
|
this.requires('Actor, Fourway, Color, Collision')
|
|
.fourway(4)
|
|
.color('rgb(20, 75, 40)')
|
|
.stopOnSolids()
|
|
.onHit('Village', this.visitVillage);
|
|
},
|
|
|
|
stopOnSolids: function() {
|
|
this.onHit('Solid', this.stopMovement);
|
|
return this;
|
|
},
|
|
|
|
stopMovement: function() {
|
|
this._speed = 0;
|
|
if (this._movement) {
|
|
this.x -= this._movement.x;
|
|
this.y -= this._movement.y;
|
|
}
|
|
},
|
|
|
|
visitVillage: function(data) {
|
|
data[0].obj.collect();
|
|
}
|
|
});
|
|
|
|
Crafty.c('Village', {
|
|
init: function() {
|
|
this.requires('Actor, Color')
|
|
.color('rgb(170, 125, 40)');
|
|
},
|
|
|
|
collect: function() {
|
|
this.destroy();
|
|
}
|
|
});
|