mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
parent
89c5e4a5d8
commit
ed23753c04
17 changed files with 286 additions and 224 deletions
|
|
@ -37,6 +37,9 @@ function (Key) {
|
||||||
if(callback) this._playerController[callback]();
|
if(callback) this._playerController[callback]();
|
||||||
key.setActive(true);
|
key.setActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prevent tab from changing focus
|
||||||
|
if(e.keyCode == 9) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardInput.prototype._onKeyUp = function (e) {
|
KeyboardInput.prototype._onKeyUp = function (e) {
|
||||||
|
|
@ -46,6 +49,9 @@ function (Key) {
|
||||||
if(callback) this._playerController[callback]();
|
if(callback) this._playerController[callback]();
|
||||||
key.setActive(false);
|
key.setActive(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Prevent tab from changing focus
|
||||||
|
if(e.keyCode == 9) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return KeyboardInput;
|
return KeyboardInput;
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,9 @@ function (Parent, KeyboardInput, MouseInput, NotificationCenter) {
|
||||||
down: 40,
|
down: 40,
|
||||||
right: 39,
|
right: 39,
|
||||||
|
|
||||||
space: 32
|
space: 32,
|
||||||
|
|
||||||
|
tab: 9
|
||||||
}
|
}
|
||||||
|
|
||||||
this.init(keys);
|
this.init(keys);
|
||||||
|
|
@ -47,6 +49,8 @@ function (Parent, KeyboardInput, MouseInput, NotificationCenter) {
|
||||||
this.keyboardInput.registerKey(keys.w, 'jump');
|
this.keyboardInput.registerKey(keys.w, 'jump');
|
||||||
this.keyboardInput.registerKey(keys.up, 'jump');
|
this.keyboardInput.registerKey(keys.up, 'jump');
|
||||||
this.keyboardInput.registerKey(keys.space, 'jump');
|
this.keyboardInput.registerKey(keys.space, 'jump');
|
||||||
|
|
||||||
|
this.keyboardInput.registerKey(keys.tab, 'showInfo', 'hideInfo');
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerController.prototype.moveLeft = function () {
|
PlayerController.prototype.moveLeft = function () {
|
||||||
|
|
@ -80,5 +84,14 @@ function (Parent, KeyboardInput, MouseInput, NotificationCenter) {
|
||||||
NotificationCenter.trigger("sendGameCommand", "handActionRequest", options);
|
NotificationCenter.trigger("sendGameCommand", "handActionRequest", options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PlayerController.prototype.showInfo = function() {
|
||||||
|
NotificationCenter.trigger("game/toggleInfo", true);
|
||||||
|
};
|
||||||
|
|
||||||
|
PlayerController.prototype.hideInfo = function() {
|
||||||
|
NotificationCenter.trigger("game/toggleInfo", false);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return PlayerController;
|
return PlayerController;
|
||||||
});
|
});
|
||||||
|
|
@ -18,6 +18,8 @@ function (Parent, Box2D, PhysicsEngine, ViewManager, PlayerController, Notificat
|
||||||
this.view = ViewManager.createView();
|
this.view = ViewManager.createView();
|
||||||
this.me = null;
|
this.me = null;
|
||||||
|
|
||||||
|
NotificationCenter.on("game/toggleInfo", this.toggleInfo, this);
|
||||||
|
|
||||||
Parent.call(this);
|
Parent.call(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -136,6 +138,11 @@ function (Parent, Box2D, PhysicsEngine, ViewManager, PlayerController, Notificat
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GameController.prototype.onPlayerKill = function(playerId) {
|
||||||
|
var player = this.players[options.playerId];
|
||||||
|
player.kill();
|
||||||
|
};
|
||||||
|
|
||||||
GameController.prototype.loadLevel = function (path) {
|
GameController.prototype.loadLevel = function (path) {
|
||||||
Parent.prototype.loadLevel.call(this, path);
|
Parent.prototype.loadLevel.call(this, path);
|
||||||
}
|
}
|
||||||
|
|
@ -148,5 +155,56 @@ function (Parent, Box2D, PhysicsEngine, ViewManager, PlayerController, Notificat
|
||||||
Parent.prototype.userLeft.call(this, user);
|
Parent.prototype.userLeft.call(this, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GameController.prototype.toggleInfo = function(show) {
|
||||||
|
|
||||||
|
var playersArray = [];
|
||||||
|
for (var key in this.players) {
|
||||||
|
playersArray.push(this.players[key]);
|
||||||
|
};
|
||||||
|
|
||||||
|
var sortedPlayers = playersArray.sort(function(a,b) {
|
||||||
|
if(a.score > b.score) return 1;
|
||||||
|
if(a.score < b.score) return -1;
|
||||||
|
if(a.deaths < b.deaths) return 1;
|
||||||
|
if(a.deaths > b.deaths) return -1;
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
function pad(string, max, alignLeft) {
|
||||||
|
string = string.substring(0, max - 1);
|
||||||
|
|
||||||
|
var spaces = new Array( max - string.length + 1 ).join(" ");
|
||||||
|
if(alignLeft) {
|
||||||
|
return string + spaces;
|
||||||
|
} else {
|
||||||
|
return spaces + string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var string = "" +
|
||||||
|
pad("#", 2, false) + " " +
|
||||||
|
pad("Name", 12, true) +
|
||||||
|
pad("Score", 6, false) +
|
||||||
|
pad("Deaths", 7, false) +
|
||||||
|
pad("Health", 7, false) +
|
||||||
|
"\n-----------------------------------\n";
|
||||||
|
|
||||||
|
var lines = [];
|
||||||
|
sortedPlayers.forEach(function(player, i) {
|
||||||
|
var name = player == this.me ? "You" : "Player " + (Object.keys(this.players).indexOf(player.id) + 1);
|
||||||
|
lines.push(
|
||||||
|
pad("" + (i + 1) + ".", 2, false) + " " +
|
||||||
|
pad(name, 12, true) +
|
||||||
|
pad("" + player.stats.score, 6, false) +
|
||||||
|
pad("" + player.stats.deaths, 7, false) +
|
||||||
|
pad("" + parseInt(player.stats.health, 10), 7, false)
|
||||||
|
);
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
string += lines.join("\n");
|
||||||
|
|
||||||
|
this.view.toggleInfo(show, string);
|
||||||
|
};
|
||||||
|
|
||||||
return GameController;
|
return GameController;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,9 @@ function (Parent, Settings, NotificationCenter, Exception) {
|
||||||
|
|
||||||
NotificationCenter.trigger("view/createAnimatedMesh", texturePaths, callback, {
|
NotificationCenter.trigger("view/createAnimatedMesh", texturePaths, callback, {
|
||||||
visible: false,
|
visible: false,
|
||||||
pivot: "mb"
|
pivot: "mb",
|
||||||
|
width: 35,
|
||||||
|
height: 40
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -82,7 +84,11 @@ function (Parent, Settings, NotificationCenter, Exception) {
|
||||||
self.headMesh = mesh;
|
self.headMesh = mesh;
|
||||||
NotificationCenter.trigger("view/addMesh", mesh);
|
NotificationCenter.trigger("view/addMesh", mesh);
|
||||||
}
|
}
|
||||||
NotificationCenter.trigger("view/createMesh", texturePath, callback, { pivot: "mb" });
|
NotificationCenter.trigger("view/createMesh", texturePath, callback, {
|
||||||
|
pivot: "mb",
|
||||||
|
width: 10,
|
||||||
|
height: 12
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +136,8 @@ function (Parent, Settings, NotificationCenter, Exception) {
|
||||||
this.animatedMeshes[this.actionState],
|
this.animatedMeshes[this.actionState],
|
||||||
{
|
{
|
||||||
x: this.body.GetPosition().x * Settings.RATIO,
|
x: this.body.GetPosition().x * Settings.RATIO,
|
||||||
y: this.body.GetPosition().y * Settings.RATIO
|
y: this.body.GetPosition().y * Settings.RATIO,
|
||||||
|
rotation: this.body.GetAngle()
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ function (DomController, Settings, Exception, NotificationCenter) {
|
||||||
|
|
||||||
NotificationCenter.on("view/fullscreenChange", this.onFullscreenChange, this);
|
NotificationCenter.on("view/fullscreenChange", this.onFullscreenChange, this);
|
||||||
NotificationCenter.on("view/toggleDebugMode", this.onToggleDebugMode, this);
|
NotificationCenter.on("view/toggleDebugMode", this.onToggleDebugMode, this);
|
||||||
|
|
||||||
|
NotificationCenter.on("view/toggleInfo", this.onToggleInfo, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.isWebGlEnabled = function () {
|
AbstractView.prototype.isWebGlEnabled = function () {
|
||||||
|
|
@ -37,35 +39,35 @@ function (DomController, Settings, Exception, NotificationCenter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.loadPlayerMesh = function(player) {
|
AbstractView.prototype.loadPlayerMesh = function(player) {
|
||||||
throw new Exception('Abstract Function loadPlayerMesh not overwritten ');
|
throw new Exception('Abstract Function loadPlayerMesh not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.loadMeshes = function(objects) {
|
AbstractView.prototype.loadMeshes = function(objects) {
|
||||||
throw new Exception('Abstract Function loadMeshes not overwritten ');
|
throw new Exception('Abstract Function loadMeshes not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.render = function () {
|
AbstractView.prototype.render = function () {
|
||||||
throw new Exception('Abstract Function render not overwritten ');
|
throw new Exception('Abstract Function render not overwritten');
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.createMesh = function (texturePath, callback, options) {
|
AbstractView.prototype.createMesh = function (texturePath, callback, options) {
|
||||||
throw new Exception('Abstract Function createMesh not overwritten ');
|
throw new Exception('Abstract Function createMesh not overwritten');
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.createAnimatedMesh = function (texturePaths, callback, options) {
|
AbstractView.prototype.createAnimatedMesh = function (texturePaths, callback, options) {
|
||||||
throw new Exception('Abstract Function createAnimatedMesh not overwritten ');
|
throw new Exception('Abstract Function createAnimatedMesh not overwritten');
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.addMesh = function(mesh) {
|
AbstractView.prototype.addMesh = function(mesh) {
|
||||||
throw new Exception('Abstract Function addMesh not overwritten ');
|
throw new Exception('Abstract Function addMesh not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.removeMesh = function(mesh) {
|
AbstractView.prototype.removeMesh = function(mesh) {
|
||||||
throw new Exception('Abstract Function removeMesh not overwritten ');
|
throw new Exception('Abstract Function removeMesh not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.updateMesh = function(mesh, options) {
|
AbstractView.prototype.updateMesh = function(mesh, options) {
|
||||||
throw new Exception('Abstract Function updateMesh not overwritten ');
|
throw new Exception('Abstract Function updateMesh not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.setMe = function(player) {
|
AbstractView.prototype.setMe = function(player) {
|
||||||
|
|
@ -73,15 +75,15 @@ function (DomController, Settings, Exception, NotificationCenter) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.addPlayer = function(player) {
|
AbstractView.prototype.addPlayer = function(player) {
|
||||||
throw new Exception('Abstract Function addPlayer not overwritten ');
|
throw new Exception('Abstract Function addPlayer not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.removPlayer = function(player) {
|
AbstractView.prototype.removPlayer = function(player) {
|
||||||
throw new Exception('Abstract Function removPlayer not overwritten ');
|
throw new Exception('Abstract Function removPlayer not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.setCameraPosition = function (x, y) {
|
AbstractView.prototype.setCameraPosition = function (x, y) {
|
||||||
throw new Exception('Abstract Function setCameraPosition not overwritten ');
|
throw new Exception('Abstract Function setCameraPosition not overwritten');
|
||||||
}
|
}
|
||||||
|
|
||||||
AbstractView.prototype.calculateCameraPosition = function() {
|
AbstractView.prototype.calculateCameraPosition = function() {
|
||||||
|
|
@ -101,7 +103,7 @@ function (DomController, Settings, Exception, NotificationCenter) {
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.setCameraZoom = function (z) {
|
AbstractView.prototype.setCameraZoom = function (z) {
|
||||||
throw new Exception('Abstract Function setCameraZoom not overwritten ');
|
throw new Exception('Abstract Function setCameraZoom not overwritten');
|
||||||
};
|
};
|
||||||
|
|
||||||
AbstractView.prototype.onFullscreenChange = function(isFullScreen) {
|
AbstractView.prototype.onFullscreenChange = function(isFullScreen) {
|
||||||
|
|
@ -125,5 +127,9 @@ function (DomController, Settings, Exception, NotificationCenter) {
|
||||||
this.debugMode = debugMode;
|
this.debugMode = debugMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AbstractView.prototype.toggleInfo = function(show, string) {
|
||||||
|
throw new Exception('Abstract Function showInfo not overwritten');
|
||||||
|
};
|
||||||
|
|
||||||
return AbstractView;
|
return AbstractView;
|
||||||
});
|
});
|
||||||
|
|
@ -16,6 +16,9 @@ function (Parent, DomController, PIXI, Settings, NotificationCenter) {
|
||||||
this.camera = null;
|
this.camera = null;
|
||||||
this.stage = null;
|
this.stage = null;
|
||||||
this.container = null;
|
this.container = null;
|
||||||
|
this.infoContainer = null;
|
||||||
|
this.infoFilters = [];
|
||||||
|
this.infoBox = null;
|
||||||
this.init();
|
this.init();
|
||||||
this.pixi = PIXI;
|
this.pixi = PIXI;
|
||||||
}
|
}
|
||||||
|
|
@ -35,21 +38,40 @@ function (Parent, DomController, PIXI, Settings, NotificationCenter) {
|
||||||
this.stage = new PIXI.Stage(0x333333);
|
this.stage = new PIXI.Stage(0x333333);
|
||||||
|
|
||||||
this.initCamera();
|
this.initCamera();
|
||||||
|
this.initInfo();
|
||||||
/*
|
|
||||||
var blurFilter = new PIXI.BlurFilter();
|
|
||||||
blurFilter.blurX = 12;
|
|
||||||
blurFilter.blurY = 0;
|
|
||||||
var grayFilter = new PIXI.GrayFilter();
|
|
||||||
grayFilter.gray = .6;
|
|
||||||
this.stage.filters = [grayFilter];
|
|
||||||
*/
|
|
||||||
|
|
||||||
this.setCanvas(this.renderer.view);
|
this.setCanvas(this.renderer.view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PixiView.prototype.initCamera = function () {
|
||||||
|
this.container = new PIXI.DisplayObjectContainer();
|
||||||
|
this.stage.addChild(this.container);
|
||||||
|
}
|
||||||
|
|
||||||
|
PixiView.prototype.initInfo = function() {
|
||||||
|
this.infoContainer = new PIXI.DisplayObjectContainer();
|
||||||
|
this.stage.addChild(this.infoContainer);
|
||||||
|
|
||||||
|
var blurFilter = new PIXI.BlurFilter();
|
||||||
|
blurFilter.blurX = 12;
|
||||||
|
blurFilter.blurY = 12;
|
||||||
|
var grayFilter = new PIXI.GrayFilter();
|
||||||
|
grayFilter.gray = 0.85;
|
||||||
|
this.infoFilters = [blurFilter, grayFilter];
|
||||||
|
|
||||||
|
this.infoText = new PIXI.Text("", {font: "normal 20px monospace", fill: "red", align: "center"});
|
||||||
|
this.infoBox = new PIXI.Graphics();
|
||||||
|
this.infoBox.alpha = 0.7;
|
||||||
|
|
||||||
|
this.infoContainer.addChild(this.infoBox);
|
||||||
|
this.infoContainer.addChild(this.infoText);
|
||||||
|
|
||||||
|
this.infoContainer.visible = false;
|
||||||
|
};
|
||||||
|
|
||||||
PixiView.prototype.render = function () {
|
PixiView.prototype.render = function () {
|
||||||
if(this.me) {
|
if(this.me && this.me.isSpawned) {
|
||||||
var pos = this.calculateCameraPosition();
|
var pos = this.calculateCameraPosition();
|
||||||
this.setCameraPosition(pos.x, pos.y);
|
this.setCameraPosition(pos.x, pos.y);
|
||||||
}
|
}
|
||||||
|
|
@ -79,11 +101,15 @@ function (Parent, DomController, PIXI, Settings, NotificationCenter) {
|
||||||
var textures = [];
|
var textures = [];
|
||||||
for (var i = 0; i < texturePaths.length; i++) {
|
for (var i = 0; i < texturePaths.length; i++) {
|
||||||
var texture = PIXI.Texture.fromImage(texturePaths[i]);
|
var texture = PIXI.Texture.fromImage(texturePaths[i]);
|
||||||
|
texture.width = options.width;
|
||||||
|
texture.height = options.height;
|
||||||
|
PIXI.texturesToUpdate.push(texture);
|
||||||
textures.push(texture);
|
textures.push(texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
var mesh = new PIXI.MovieClip(textures);
|
var mesh = new PIXI.MovieClip(textures);
|
||||||
if(options) this.updateMesh(mesh, options);
|
if(options) this.updateMesh(mesh, options);
|
||||||
|
|
||||||
mesh.animationSpeed = 0.5;
|
mesh.animationSpeed = 0.5;
|
||||||
|
|
||||||
mesh.play();
|
mesh.play();
|
||||||
|
|
@ -117,12 +143,6 @@ function (Parent, DomController, PIXI, Settings, NotificationCenter) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
PixiView.prototype.initCamera = function () {
|
|
||||||
|
|
||||||
this.container = new PIXI.DisplayObjectContainer();
|
|
||||||
this.stage.addChild(this.container);
|
|
||||||
}
|
|
||||||
|
|
||||||
PixiView.prototype.calculateCameraPosition = function() {
|
PixiView.prototype.calculateCameraPosition = function() {
|
||||||
var zoom = this.container.scale.x;
|
var zoom = this.container.scale.x;
|
||||||
|
|
||||||
|
|
@ -161,5 +181,35 @@ function (Parent, DomController, PIXI, Settings, NotificationCenter) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
PixiView.prototype.toggleInfo = function(show, string) {
|
||||||
|
if(show) {
|
||||||
|
this.infoText.setText(string);
|
||||||
|
this.infoText.updateText();
|
||||||
|
this.infoText.dirty = false;
|
||||||
|
|
||||||
|
var x = Settings.STAGE_WIDTH / 2 - this.infoText.width / 2,
|
||||||
|
y = Settings.STAGE_HEIGHT / 2 - this.infoText.height / 2;
|
||||||
|
this.infoText.position = new PIXI.Point(x, y);
|
||||||
|
|
||||||
|
var borderWidth = 3;
|
||||||
|
var padding = 20;
|
||||||
|
this.infoBox.clear();
|
||||||
|
this.infoBox.beginFill(0x000000);
|
||||||
|
this.infoBox.lineStyle(borderWidth, 0xAA0000);
|
||||||
|
this.infoBox.drawRect(0, 0, this.infoText.width - borderWidth + 2 * padding * 2, this.infoText.height - borderWidth + 2 * padding);
|
||||||
|
this.infoBox.endFill();
|
||||||
|
this.infoBox.position.x = this.infoText.position.x + borderWidth/2 - padding * 2;
|
||||||
|
this.infoBox.position.y = this.infoText.position.y + borderWidth/2 - padding;
|
||||||
|
|
||||||
|
this.infoContainer.visible = true;
|
||||||
|
this.container.filters = this.infoFilters;
|
||||||
|
this.infoFilters.forEach(function(filter) { filter.dirty = true; });
|
||||||
|
} else {
|
||||||
|
this.infoText.setText("...");
|
||||||
|
this.infoContainer.visible = false;
|
||||||
|
this.container.filters = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return PixiView;
|
return PixiView;
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ define({
|
||||||
DEFAULT_LEVELS: ['stones2'],
|
DEFAULT_LEVELS: ['stones2'],
|
||||||
|
|
||||||
RATIO: 21, //35
|
RATIO: 21, //35
|
||||||
OBJECT_RATIO: 21 / 25,
|
OBJECT_RATIO: 20 / 25,
|
||||||
TILE_SIZE: 20, //15, 25 is original picture
|
TILE_SIZE: 20, //15, 25 is original picture
|
||||||
CAMERA_IS_ORTHOGRAPHIC: true,
|
CAMERA_IS_ORTHOGRAPHIC: true,
|
||||||
VIEW_CONTROLLER: 0 ? 'Three' : 'Pixi',
|
VIEW_CONTROLLER: 0 ? 'Three' : 'Pixi',
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,10 @@ function (Parent, Box2D, Settings, CollisionDetector, Item) {
|
||||||
this.setActionState("fall");
|
this.setActionState("fall");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Doll.prototype.kill = function() {
|
||||||
|
this.body.SetFixedRotation(false);
|
||||||
|
};
|
||||||
|
|
||||||
Doll.prototype.getPosition = function() {
|
Doll.prototype.getPosition = function() {
|
||||||
var pos = this.body.GetPosition();
|
var pos = this.body.GetPosition();
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@ function (Parent, Box2D, Settings, Exception) {
|
||||||
|
|
||||||
var bodyDef = new Box2D.Dynamics.b2BodyDef();
|
var bodyDef = new Box2D.Dynamics.b2BodyDef();
|
||||||
bodyDef.type = Box2D.Dynamics.b2Body.b2_staticBody;
|
bodyDef.type = Box2D.Dynamics.b2Body.b2_staticBody;
|
||||||
bodyDef.position.x = this.options.x * Settings.TILE_SIZE / Settings.RATIO;
|
bodyDef.position.x = (this.options.x * Settings.TILE_SIZE + Settings.TILE_SIZE / 2) / Settings.RATIO;
|
||||||
bodyDef.position.y = this.options.y * Settings.TILE_SIZE / Settings.RATIO;
|
bodyDef.position.y = (this.options.y * Settings.TILE_SIZE + Settings.TILE_SIZE / 2) / Settings.RATIO;
|
||||||
bodyDef.angle = (this.options.r || 0) * 90 * Math.PI / 180;
|
bodyDef.angle = (this.options.r || 0) * 90 * Math.PI / 180;
|
||||||
|
|
||||||
return bodyDef;
|
return bodyDef;
|
||||||
|
|
|
||||||
|
|
@ -36,45 +36,58 @@ function (Doll, Settings, NotificationCenter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.getPosition = function () {
|
Player.prototype.getPosition = function () {
|
||||||
if(!this.doll) return false;
|
|
||||||
return this.doll.getPosition();
|
return this.doll.getPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.getHeadPosition = function () {
|
Player.prototype.getHeadPosition = function () {
|
||||||
if(!this.doll) return false;
|
if(!this.isSpawned) return false;
|
||||||
return this.doll.getHeadPosition();
|
return this.doll.getHeadPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Player.prototype.move = function (direction) {
|
Player.prototype.move = function (direction) {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
this.doll.move(direction);
|
this.doll.move(direction);
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.stop = function () {
|
Player.prototype.stop = function () {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
this.doll.stop();
|
this.doll.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.jump = function () {
|
Player.prototype.jump = function () {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
this.doll.jump();
|
this.doll.jump();
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.lookAt = function (x, y) {
|
Player.prototype.lookAt = function (x, y) {
|
||||||
if(this.doll) this.doll.lookAt(x, y);
|
if(!this.isSpawned) return false;
|
||||||
|
this.doll.lookAt(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.grab = function(item) {
|
Player.prototype.grab = function(item) {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
item.beingGrabbed(this);
|
item.beingGrabbed(this);
|
||||||
this.doll.grab(item);
|
this.doll.grab(item);
|
||||||
this.holdingItem = item;
|
this.holdingItem = item;
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.throw = function(x, y, item) {
|
Player.prototype.throw = function(x, y, item) {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
item.beingReleased(this);
|
item.beingReleased(this);
|
||||||
this.doll.throw(item, x, y);
|
this.doll.throw(item, x, y);
|
||||||
this.holdingItem = null;
|
this.holdingItem = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.kill = function(killedBy) {
|
Player.prototype.kill = function(killedBy) {
|
||||||
|
if(!this.isSpawned) return false;
|
||||||
|
|
||||||
|
// FIXME: do something better then just respawn in GameController
|
||||||
|
if(this.holdingItem) {
|
||||||
|
this.throw(0, 0, this.holdingItem)
|
||||||
|
}
|
||||||
|
this.doll.kill();
|
||||||
|
this.isSpawned = false;
|
||||||
NotificationCenter.trigger("player/killed", this);
|
NotificationCenter.trigger("player/killed", this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -90,6 +103,9 @@ function (Doll, Settings, NotificationCenter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Player.prototype.destroy = function () {
|
Player.prototype.destroy = function () {
|
||||||
|
if(this.holdingItem) {
|
||||||
|
this.throw(0, 0, this.holdingItem);
|
||||||
|
}
|
||||||
this.doll.destroy();
|
this.doll.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,20 +55,23 @@ function (Parent, PhysicsEngine, Settings, PlayerController, requestAnimFrame, N
|
||||||
}
|
}
|
||||||
|
|
||||||
GameController.prototype.spawnPlayer = function(player) {
|
GameController.prototype.spawnPlayer = function(player) {
|
||||||
|
var self = this;
|
||||||
var spawnPoint = this.level.getRandomSpawnPoint();
|
var spawnPoint = this.level.getRandomSpawnPoint();
|
||||||
|
|
||||||
player.spawn(spawnPoint.x, spawnPoint.y);
|
setTimeout(function() {
|
||||||
this.gameObjects.animated.push(player.getDoll());
|
player.spawn(spawnPoint.x, spawnPoint.y);
|
||||||
|
self.gameObjects.animated.push(player.getDoll());
|
||||||
|
|
||||||
var message = {
|
var message = {
|
||||||
spawnPlayer: {
|
spawnPlayer: {
|
||||||
id: player.id,
|
id: player.id,
|
||||||
x: spawnPoint.x,
|
x: spawnPoint.x,
|
||||||
y: spawnPoint.y
|
y: spawnPoint.y
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
NotificationCenter.trigger("broadcastControlCommand", "gameCommand", message);
|
|
||||||
|
NotificationCenter.trigger("broadcastControlCommand", "gameCommand", message);
|
||||||
|
}, 5000);
|
||||||
};
|
};
|
||||||
|
|
||||||
GameController.prototype.createPlayer = function(user) {
|
GameController.prototype.createPlayer = function(user) {
|
||||||
|
|
|
||||||
|
|
@ -57,8 +57,10 @@ function (Parent, Item, Box2D, NotificationCenter) {
|
||||||
damage.Abs();
|
damage.Abs();
|
||||||
damage.Multiply(itemMass);
|
damage.Multiply(itemMass);
|
||||||
|
|
||||||
|
var player = item.lastMoved.player;
|
||||||
|
|
||||||
var callback = function() {
|
var callback = function() {
|
||||||
self.player.addDamage(damage.Length() * 2, item.lastMoved.player);
|
self.player.addDamage(damage.Length() * 2, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
NotificationCenter.trigger("engine/addToWorldQueue", callback)
|
NotificationCenter.trigger("engine/addToWorldQueue", callback)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ function (Parent, NotificationCenter) {
|
||||||
Player.prototype = Object.create(Parent.prototype);
|
Player.prototype = Object.create(Parent.prototype);
|
||||||
|
|
||||||
Player.prototype.handActionRequest = function(x, y) {
|
Player.prototype.handActionRequest = function(x, y) {
|
||||||
|
if(!this.doll) return false;
|
||||||
|
|
||||||
var item = null;
|
var item = null;
|
||||||
var isHolding = !!this.holdingItem;
|
var isHolding = !!this.holdingItem;
|
||||||
|
|
@ -56,31 +57,27 @@ function (Parent, NotificationCenter) {
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.addDamage = function(damage, enemy) {
|
Player.prototype.addDamage = function(damage, enemy) {
|
||||||
this.updateHealth(this.stats.health - damage);
|
this.stats.health -= damage;
|
||||||
|
|
||||||
if(this.stats.health <= 0) {
|
if(this.stats.health <= 0) {
|
||||||
enemy.score();
|
enemy.score();
|
||||||
this.kill();
|
this.kill();
|
||||||
|
} else {
|
||||||
|
this.broadcastStats();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.spawn = function(x, y) {
|
Player.prototype.spawn = function(x, y) {
|
||||||
Parent.prototype.spawn.call(this, x, y);
|
Parent.prototype.spawn.call(this, x, y);
|
||||||
this.updateHealth(100);
|
this.stats.health = 100;
|
||||||
};
|
this.broadcastStats();
|
||||||
|
|
||||||
Player.prototype.updateHealth = function(health) {
|
|
||||||
this.stats.health = health;
|
|
||||||
NotificationCenter.trigger("user/" + this.id + "/gameCommand", "updateStats", {
|
|
||||||
playerId: this.id,
|
|
||||||
stats: this.stats
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.kill = function() {
|
Player.prototype.kill = function() {
|
||||||
Parent.prototype.kill.call(this);
|
Parent.prototype.kill.call(this);
|
||||||
this.stats.deaths++;
|
this.stats.deaths++;
|
||||||
this.broadcastStats();
|
this.broadcastStats();
|
||||||
|
NotificationCenter.trigger("broadcastGameCommand", "playerKill", this.id);
|
||||||
};
|
};
|
||||||
|
|
||||||
Player.prototype.score = function() {
|
Player.prototype.score = function() {
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ function (Networker, SocketIO, Settings, Exception, PIXI) {
|
||||||
}
|
}
|
||||||
xhr.open("GET", url, true);
|
xhr.open("GET", url, true);
|
||||||
xhr.send(null);
|
xhr.send(null);
|
||||||
|
//callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
loadAssets(function() {
|
loadAssets(function() {
|
||||||
|
|
|
||||||
|
|
@ -1,75 +1,3 @@
|
||||||
static/img/Items/kitchen/cupboard_dishwasher.gif
|
|
||||||
static/img/Items/kitchen/herb_chopper.gif
|
|
||||||
static/img/Items/kitchen/tile.gif
|
|
||||||
static/img/Items/kitchen/pan.gif
|
|
||||||
static/img/Items/kitchen/cup.gif
|
|
||||||
static/img/Items/kitchen/cupboard_sink_right.gif
|
|
||||||
static/img/Items/kitchen/fork.gif
|
|
||||||
static/img/Items/kitchen/banana.gif
|
|
||||||
static/img/Items/kitchen/cleaver_small.gif
|
|
||||||
static/img/Items/kitchen/cupboard_sink_left.gif
|
|
||||||
static/img/Items/kitchen/plate.gif
|
|
||||||
static/img/Items/kitchen/fridge.gif
|
|
||||||
static/img/Items/kitchen/can.gif
|
|
||||||
static/img/Items/kitchen/vase.gif
|
|
||||||
static/img/Items/kitchen/cupboard_shelf.gif
|
|
||||||
static/img/Items/kitchen/tomato.gif
|
|
||||||
static/img/Items/kitchen/coffeemachine.gif
|
|
||||||
static/img/Items/kitchen/knife.gif
|
|
||||||
static/img/Items/kitchen/microwave.gif
|
|
||||||
static/img/Items/kitchen/window_curtain.gif
|
|
||||||
static/img/Items/kitchen/cleaver_large.gif
|
|
||||||
static/img/Items/kitchen/rolling_pin.gif
|
|
||||||
static/img/Items/kitchen/knife_big.gif
|
|
||||||
static/img/Items/kitchen/tap.gif
|
|
||||||
static/img/Items/kitchen/cupboard_oven.gif
|
|
||||||
static/img/Items/kitchen/spoon.gif
|
|
||||||
static/img/Items/kitchen/fork_meat.gif
|
|
||||||
static/img/Items/kitchen/toaster.gif
|
|
||||||
static/img/Items/kitchen/tong.gif
|
|
||||||
static/img/Items/kitchen/table.gif
|
|
||||||
static/img/Items/kitchen/cupboard_triple_draw.gif
|
|
||||||
static/img/Items/laundry/hamper.gif
|
|
||||||
static/img/Items/laundry/laundry_machine.gif
|
|
||||||
static/img/Items/laundry/laundry_powder.gif
|
|
||||||
static/img/Items/outdoor/fence.gif
|
|
||||||
static/img/Items/outdoor/fence_door.gif
|
|
||||||
static/img/Items/outdoor/skateboard.gif
|
|
||||||
static/img/Items/livingroom/flower_pot_triple.gif
|
|
||||||
static/img/Items/livingroom/telly_cabinet.gif
|
|
||||||
static/img/Items/livingroom/ventilator.gif
|
|
||||||
static/img/Items/livingroom/office_chair.gif
|
|
||||||
static/img/Items/livingroom/speaker.gif
|
|
||||||
static/img/Items/livingroom/bookshelf.gif
|
|
||||||
static/img/Items/livingroom/candleholder_full.gif
|
|
||||||
static/img/Items/livingroom/candleholder_empty.gif
|
|
||||||
static/img/Items/livingroom/book_blue.gif
|
|
||||||
static/img/Items/livingroom/stereo.gif
|
|
||||||
static/img/Items/livingroom/tuba.gif
|
|
||||||
static/img/Items/livingroom/book_red.gif
|
|
||||||
static/img/Items/livingroom/flower_pot.gif
|
|
||||||
static/img/Items/livingroom/couch.gif
|
|
||||||
static/img/Items/livingroom/television.gif
|
|
||||||
static/img/Items/livingroom/picture_omma.gif
|
|
||||||
static/img/Items/livingroom/plant.gif
|
|
||||||
static/img/Items/livingroom/piano.gif
|
|
||||||
static/img/Items/livingroom/cactus.gif
|
|
||||||
static/img/Items/livingroom/book_bible.gif
|
|
||||||
static/img/Weapons/elegtro_maknetizer.png
|
|
||||||
static/img/Weapons/hook_gun.png
|
|
||||||
static/img/Characters/Chuck/chest.png
|
|
||||||
static/img/Characters/Chuck/arm_back_top.png
|
|
||||||
static/img/Characters/Chuck/shorts_down_front.png
|
|
||||||
static/img/Characters/Chuck/arm_front_top.png
|
|
||||||
static/img/Characters/Chuck/chuck.png
|
|
||||||
static/img/Characters/Chuck/shorts.png
|
|
||||||
static/img/Characters/Chuck/leg_top.png
|
|
||||||
static/img/Characters/Chuck/leg_down.png
|
|
||||||
static/img/Characters/Chuck/head.png
|
|
||||||
static/img/Characters/Chuck/arm_down_front.png
|
|
||||||
static/img/Characters/Chuck/shorts_down_back.png
|
|
||||||
static/img/Characters/Chuck/shorts_top.png
|
|
||||||
static/img/Characters/Chuck/arm_down_back.png
|
|
||||||
static/img/Animation/WithArms/ChuckAnimations0071.png
|
static/img/Animation/WithArms/ChuckAnimations0071.png
|
||||||
static/img/Animation/WithArms/ChuckAnimations0060.png
|
static/img/Animation/WithArms/ChuckAnimations0060.png
|
||||||
static/img/Animation/WithArms/ChuckAnimations0062.png
|
static/img/Animation/WithArms/ChuckAnimations0062.png
|
||||||
|
|
@ -196,65 +124,3 @@ static/img/Animation/WithArms/ChuckAnimations0029.png
|
||||||
static/img/Animation/WithArms/ChuckAnimations0098.png
|
static/img/Animation/WithArms/ChuckAnimations0098.png
|
||||||
static/img/Animation/WithArms/ChuckAnimations0094.png
|
static/img/Animation/WithArms/ChuckAnimations0094.png
|
||||||
static/img/Animation/WithArms/ChuckAnimations0058.png
|
static/img/Animation/WithArms/ChuckAnimations0058.png
|
||||||
static/img/Tiles/Soil/53.gif
|
|
||||||
static/img/Tiles/Soil/32.gif
|
|
||||||
static/img/Tiles/Soil/63.gif
|
|
||||||
static/img/Tiles/Soil/73.gif
|
|
||||||
static/img/Tiles/Soil/41.gif
|
|
||||||
static/img/Tiles/Soil/10.gif
|
|
||||||
static/img/Tiles/Soil/22.gif
|
|
||||||
static/img/Tiles/Soil/61.gif
|
|
||||||
static/img/Tiles/Soil/72.gif
|
|
||||||
static/img/Tiles/Soil/83.gif
|
|
||||||
static/img/Tiles/Soil/51.gif
|
|
||||||
static/img/Tiles/Soil/43.gif
|
|
||||||
static/img/Tiles/Soil/23.gif
|
|
||||||
static/img/Tiles/Soil/60.gif
|
|
||||||
static/img/Tiles/Soil/21.gif
|
|
||||||
static/img/Tiles/Soil/62.gif
|
|
||||||
static/img/Tiles/Soil/82.gif
|
|
||||||
static/img/Tiles/Soil/20.gif
|
|
||||||
static/img/Tiles/Soil/52.gif
|
|
||||||
static/img/Tiles/Soil/71.gif
|
|
||||||
static/img/Tiles/Soil/31.gif
|
|
||||||
static/img/Tiles/Soil/33.gif
|
|
||||||
static/img/Tiles/Soil/42.gif
|
|
||||||
static/img/Tiles/Soil/81.gif
|
|
||||||
static/img/Tiles/Soil/70.gif
|
|
||||||
static/img/Tiles/Soil/40.gif
|
|
||||||
static/img/Tiles/Soil/80.gif
|
|
||||||
static/img/Tiles/Soil/30.gif
|
|
||||||
static/img/Tiles/Soil/50.gif
|
|
||||||
static/img/Tiles/GrassSoil/61c.gif
|
|
||||||
static/img/Tiles/GrassSoil/53.gif
|
|
||||||
static/img/Tiles/GrassSoil/32.gif
|
|
||||||
static/img/Tiles/GrassSoil/63.gif
|
|
||||||
static/img/Tiles/GrassSoil/73.gif
|
|
||||||
static/img/Tiles/GrassSoil/10c.gif
|
|
||||||
static/img/Tiles/GrassSoil/41.gif
|
|
||||||
static/img/Tiles/GrassSoil/10.gif
|
|
||||||
static/img/Tiles/GrassSoil/22.gif
|
|
||||||
static/img/Tiles/GrassSoil/61.gif
|
|
||||||
static/img/Tiles/GrassSoil/43c.gif
|
|
||||||
static/img/Tiles/GrassSoil/72.gif
|
|
||||||
static/img/Tiles/GrassSoil/83.gif
|
|
||||||
static/img/Tiles/GrassSoil/51.gif
|
|
||||||
static/img/Tiles/GrassSoil/43.gif
|
|
||||||
static/img/Tiles/GrassSoil/23.gif
|
|
||||||
static/img/Tiles/GrassSoil/60.gif
|
|
||||||
static/img/Tiles/GrassSoil/21.gif
|
|
||||||
static/img/Tiles/GrassSoil/62.gif
|
|
||||||
static/img/Tiles/GrassSoil/82.gif
|
|
||||||
static/img/Tiles/GrassSoil/13c.gif
|
|
||||||
static/img/Tiles/GrassSoil/20.gif
|
|
||||||
static/img/Tiles/GrassSoil/52.gif
|
|
||||||
static/img/Tiles/GrassSoil/71.gif
|
|
||||||
static/img/Tiles/GrassSoil/31.gif
|
|
||||||
static/img/Tiles/GrassSoil/33.gif
|
|
||||||
static/img/Tiles/GrassSoil/42.gif
|
|
||||||
static/img/Tiles/GrassSoil/81.gif
|
|
||||||
static/img/Tiles/GrassSoil/70.gif
|
|
||||||
static/img/Tiles/GrassSoil/40.gif
|
|
||||||
static/img/Tiles/GrassSoil/80.gif
|
|
||||||
static/img/Tiles/GrassSoil/30.gif
|
|
||||||
static/img/Tiles/GrassSoil/50.gif
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -745,13 +745,13 @@
|
||||||
<object x="1379" y="459">
|
<object x="1379" y="459">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
<object x="587" y="287">
|
<object x="578.5" y="386">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
<object x="253" y="186">
|
<object x="253" y="186">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
<object x="973.554" y="229.589">
|
<object x="974.054" y="235.589">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
<object x="1891.66" y="507.864" rotation="-26.5663">
|
<object x="1891.66" y="507.864" rotation="-26.5663">
|
||||||
|
|
@ -760,11 +760,11 @@
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
<layer name="collision" width="100" height="100">
|
<layer name="collision" width="100" height="100">
|
||||||
<data encoding="base64" compression="zlib">
|
<data encoding="base64" compression="zlib">
|
||||||
eJzt2D9L5EAYx/HHyvregIWFhVf4AlxPD+5URLCzEi0EGzsXTk4QQQSxUVHfiZXvwP+n4Aty5nYDMWaTyc6zk8n6/cDTLBP2GX6TySQiAIbVlam/HnURvuVK9sVtHpd1NajoXDpziZnt76zuJgJqQh5fSezzjb0/bbHPN/b+tMU+32x/15kaNk3LY9jFPt8Q/c2ZmlaoWYVeyKNjx/P6tkoX5BEbO9/TupsoYPs7qLuJPryZeimp15zr0t9bDk0dh2i2gqbeHyOOVeTE1JGUfyva02+/pybnoTGmTOhvXv38108pP/88mPonn99nHk3devSb+OYwZlThf6yY87BZtEytZ37Pnp+e5XMWST1Vb7NWofNwfZ73ymLYxXZ/rJpalDBZ3Ju6cRg3LuXvjz+Ueootj4TWO5mv76bGTK2V1IzoZBJrHrGYFLc8kkx8v9O0wkzrv6blYfcp1yw0K5Sy9aO1B2twycI+3zZNbXevsXusPfttlFxjx211r8kbH4rv/b4QoMcJU1NSnEWSQ5G8TNLnk+yZPT0+lGx/dl215eO62U6Ntz0mfbfF/7ttniX5uHdr7ie2Z/uuat9JXXqvI49kjaTX11bOWE2/pPj5Ocj93Z6p7xzH1pFHnkGs+yqSe9SnNN6VYskjBrvSfxZ/Kv5X0fO+KXn8NrUi/Z3p500te/z3IMSSB6X7fAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg5h2zV8bD
|
eJzt2M1KHEEUhuHjKmtvYBZZZGEWuQAniYIxIoHsspJkEZjN7DKgKARBAsGNiuZOsvIOjJo/yAWlKjMNPT09XdVTp6urJ+8DZyPV9qn5+qeqewJgWX0xdRhQl/FbruWj+M3jqq0GFV3IeC4ps/2dt91ERF3I43+S+nxT709b6vNNvT9tqc+32N/XQi2bruWx7FKfb4z+NkytK9RzhV7IY+xD4PEjlS7IIzV2vmdtN1HB9nfcdhML+GPql6N+lxyX/95yYupzjGZr6Or9seJZVU5NfRL3t6Ij/fbnajqPXkP/1/Vb+45xif3Na5FzbYp7/XNn6qfM7mfuTd0E9JtZ9RjzQOE8Vsp52Cz6pt4W/l5cP/2Q2Syy+l6/zVbFzsP3fT4vi2WX2v3xxtSOxMni1tS1x7iH4t4/PlPqKbU8Mlp7slCPZbxO2HPUU9HJJNU8UrEmfnlkmYR+p+nHmdY/XcvDPqd8s9CsWFzXj9YzWINPFvb99t7UcHKMfcbatd87xzF23GByTNn4WELv95cRenxk6olUZ5HlUKUsk/z6pLhmz4+Ppdifva5GMn3dDHPjbY9Z3yMJ/25bZlemn92azxPbs92r2j2pT+9t5JFdI/nra1AyVtOWVL8/m3y+2zX1N8+xbeRRponrvo7sHg0pjb1SKnmk4EAWz2K/5rmq3vddyeOFqdey2Jp+29SrgHM3IZU8KN33EwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/fwGIFcb/
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
<objectgroup name="items">
|
<objectgroup name="items">
|
||||||
<object x="959.274" y="215.422">
|
<object x="749.607" y="237.255">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="bounce" value="6"/>
|
<property name="bounce" value="6"/>
|
||||||
<property name="category" value="outdoor"/>
|
<property name="category" value="outdoor"/>
|
||||||
|
|
@ -778,7 +778,7 @@
|
||||||
<property name="width" value="10"/>
|
<property name="width" value="10"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</object>
|
||||||
<object x="843.274" y="207.148">
|
<object x="789.774" y="236.815">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="category" value="kitchen"/>
|
<property name="category" value="kitchen"/>
|
||||||
<property name="grabAngle" value="-0.5"/>
|
<property name="grabAngle" value="-0.5"/>
|
||||||
|
|
@ -791,7 +791,7 @@
|
||||||
<property name="width" value="31"/>
|
<property name="width" value="31"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</object>
|
||||||
<object x="1083" y="217.511">
|
<object x="538.333" y="388.678">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="category" value="kitchen"/>
|
<property name="category" value="kitchen"/>
|
||||||
<property name="grabAngle" value="0.3"/>
|
<property name="grabAngle" value="0.3"/>
|
||||||
|
|
@ -804,5 +804,17 @@
|
||||||
<property name="width" value="4"/>
|
<property name="width" value="4"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</object>
|
||||||
|
<object x="1309" y="461.5">
|
||||||
|
<properties>
|
||||||
|
<property name="category" value="outdoor"/>
|
||||||
|
<property name="grabAngle" value="-1,5"/>
|
||||||
|
<property name="height" value="6"/>
|
||||||
|
<property name="image" value="skateboard.gif"/>
|
||||||
|
<property name="name" value="Skateboard"/>
|
||||||
|
<property name="type" value="skateboard"/>
|
||||||
|
<property name="weight" value="1,5"/>
|
||||||
|
<property name="width" value="26"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue