-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
100 lines (87 loc) · 2.44 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* Author: Rob Righter
*/
$(document).ready(function() {
var scene = sjs.Scene({w:540, h:380, autoPause: false});
var sps = {
lando: scene.Sprite("/images/sprites/lando.png"),
luke: scene.Sprite("/images/sprites/luke.png")
}
_.each(_.keys(sps), function(item){
sp = sps[item];
sp.size(32, 48);
sp.offset(0, 0);
sp.move(100, 100);
sp.update();
});
var socket = io.connect();
socket.on('server_move_character', function(data){
sps[data.character].xv = data.xv;
sps[data.character].yv = data.yv;
if(data.direction){
spriteAnimateDirection(sps[data.character], data.direction);
}
});
//"/images/sprites/lando.png" 128x192 32x48
var image = 'lando.png';
var inmotion = false;
var input = sjs.Input(scene);
var ticker = scene.Ticker(gameTick, {tickDuration: 130});
ticker.run();
function updateAllSprites(){
_.each(_.keys(sps), function(item){
sp = sps[item];
sp.applyVelocity();
sp.update();
})
}
function gameTick(ticker){
var character = {xv: 0, yv: 0, direction: null};
var speed = 5;
if (input.keyboard.left){
character.xv = speed*-1;
character.direction = 'left';
}else if (input.keyboard.right){
character.xv = speed;
character.direction = 'right';
}
else{
character.xv = 0;
}
if (input.keyboard.up){
character.yv = speed*-1;
character.direction = 'up';
}else if (input.keyboard.down){
character.yv = speed;
character.direction = 'down';
}
else{
character.yv = 0;
}
if(character.direction){
inmotion = true;
socket.emit('move_character', {character: 'lando', xv: character.xv, yv: character.yv, direction: character.direction });
}
else if(inmotion){
inmotion=false;
socket.emit('move_character', {character: 'lando', xv: 0, yv: 0, direction: null });
}
updateAllSprites();
}
function spriteAnimateDirection(sprite, direction){
var width = 32;
var height = 48;
var prop = 'rrcustomizedanimation';
var spritekey = {down: 0*height, left: 1*height, right: 2*height, up: 3*height};
if(!sprite.hasOwnProperty(prop)){
sprite[prop] = {
down: 0,
left: 0,
right: 0,
up: 0
};
}
sprite[prop][direction]++;
sprite[prop][direction] = sprite[prop][direction]%4;
sprite.offset(sprite[prop][direction]*width, spritekey[direction]);
}
});