Files
memory-manager-concurrent/games/mario/frog/tiles.js
2026-01-21 18:11:33 +08:00

164 lines
5.2 KiB
JavaScript

(function() {
/**
*
* Backbone Game Engine - An elementary HTML5 canvas game engine using Backbone.
*
* Copyright (c) 2014 Martin Drapeau
* https://github.com/martindrapeau/backbone-game-engine
*
*/
Backbone.Tile = Backbone.Sprite.extend({
defaults: {
type: "tile",
width: 32,
height: 32,
spriteSheet: "tiles",
state: "idle",
static: true,
persist: true
},
initialize: function(attributes, options) {
options || (options = {});
this.world = options.world;
this.lastSequenceChangeTime = 0;
}
});
function extendSprite(cls, name, attributes, animations) {
var newCls = _.classify(name);
Backbone[newCls] = Backbone[cls].extend({
defaults: _.extend(
_.deepClone(Backbone[cls].prototype.defaults),
{name: name},
attributes || {}
),
animations: _.extend(
_.deepClone(Backbone[cls].prototype.animations),
animations || {}
)
});
return Backbone[newCls];
}
extendSprite("Tile", "land1", {collision: true}, {idle: {sequences: [353]}});
extendSprite("Tile", "land2", {collision: true}, {idle: {sequences: [354]}});
extendSprite("Tile", "land3", {collision: true}, {idle: {sequences: [355]}});
extendSprite("Tile", "land4", {collision: true}, {idle: {sequences: [237]}});
extendSprite("Tile", "land5", {collision: true}, {idle: {sequences: [238]}});
extendSprite("Tile", "land6", {collision: true}, {idle: {sequences: [239]}});
extendSprite("Tile", "land7", {collision: true}, {idle: {sequences: [208]}});
extendSprite("Tile", "land8", {collision: true}, {idle: {sequences: [34]}});
extendSprite("Tile", "mush1", {collision: true}, {idle: {sequences: [382]}});
extendSprite("Tile", "mush2", {collision: true}, {idle: {sequences: [383]}});
extendSprite("Tile", "mush3", {collision: true}, {idle: {sequences: [384]}});
extendSprite("Tile", "mush4", {collision: true}, {idle: {sequences: [266]}});
extendSprite("Tile", "mush5", {collision: true}, {idle: {sequences: [267]}});
extendSprite("Tile", "mush6", {collision: true}, {idle: {sequences: [268]}});
extendSprite("Tile", "ground", {collision: true}, {idle: {sequences: [0]}});
extendSprite("Tile", "ground2", {collision: true}, {idle: {sequences: [31]}});
extendSprite("Tile", "block", {collision: true}, {idle: {sequences: [3]}});
extendSprite("Tile", "block2", {collision: true}, {idle: {sequences: [29]}});
extendSprite("Tile", "cloud-small", {collision: true}, {idle: {sequences: [613]}});
extendSprite("Tile", "water1", {collision: false}, {idle: {sequences: [583]}});
extendSprite("Tile", "water2", {collision: false}, {idle: {sequences: [612]}});
extendSprite("Tile", "cloud1", {collision: false}, {idle: {sequences: [580]}});
extendSprite("Tile", "cloud2", {collision: false}, {idle: {sequences: [581]}});
extendSprite("Tile", "cloud3", {collision: false}, {idle: {sequences: [582]}});
extendSprite("Tile", "cloud-happy1", {collision: false}, {idle: {sequences: [585]}});
extendSprite("Tile", "cloud-happy2", {collision: false}, {idle: {sequences: [586]}});
extendSprite("Tile", "cloud-happy3", {collision: false}, {idle: {sequences: [587]}});
extendSprite("Tile", "cloud4", {collision: false}, {idle: {sequences: [609]}});
extendSprite("Tile", "cloud5", {collision: false}, {idle: {sequences: [610]}});
extendSprite("Tile", "cloud6", {collision: false}, {idle: {sequences: [611]}});
extendSprite("Tile", "cloud-happy4", {collision: false}, {idle: {sequences: [614]}});
extendSprite("Tile", "cloud-happy5", {collision: false}, {idle: {sequences: [615]}});
extendSprite("Tile", "cloud-happy6", {collision: false}, {idle: {sequences: [616]}});
extendSprite("Tile", "cloud-platform1", {collision: true}, {idle: {sequences: [588]}});
extendSprite("Tile", "cloud-platform2", {collision: true}, {idle: {sequences: [589]}});
extendSprite("Tile", "cloud-platform3", {collision: true}, {idle: {sequences: [590]}});
extendSprite("Tile", "cloud-platform4", {collision: true}, {idle: {sequences: [704]}});
extendSprite("Tile", "cloud-platform5", {collision: true}, {idle: {sequences: [705]}});
extendSprite("Tile", "cloud-platform6", {collision: true}, {idle: {sequences: [706]}});
Backbone.Platform = Backbone.Character.extend({
defaults: {
type: "character",
name: "platform",
width: 96,
height: 32,
spriteSheet: "tiles",
tileX: 256,
tileY: 640,
state: "idle",
static: false,
collision: true
},
initialize: function(attributes, options) {
options || (options = {});
this.world = options.world;
},
update: function(dt) {
return true;
},
draw: function(context, options) {
options || (options = {});
var x = this.get("x") + (options.offsetX || 0),
y = this.get("y") + (options.offsetY || 0),
tileX = this.get("tileX"),
tileY = this.get("tileY"),
tileWidth = this.get("width"),
tileHeight = this.get("height");
context.drawImage(
this.spriteSheet.img,
tileX, tileY, tileWidth, tileHeight,
Math.round(x), Math.round(y), tileWidth, tileHeight
);
return this;
}
});
}).call(this);