-
Notifications
You must be signed in to change notification settings - Fork 0
/
bmgame.html
117 lines (85 loc) · 2.59 KB
/
bmgame.html
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<script>
var gamers = {}
var gameme
var map = new Map(@3@, @4@)
var starttime = 0
var lasttime = 0
function gettick() {
return (new Date().getTime() - starttime)/50
}
function run() {
var t = gettick()
step(t)
draw(t)
window.requestFrame(run)
}
function step(tick) {
var dt = tick-lasttime
lasttime = tick
gameme.move()
for (var i in gamers)
gamers[i].step(dt, i != gameme.id)
$('#fps').html('fps: ' + (dt>0?~~(20/dt):0))
}
function draw(tick) {
if (!tick) tick = gettick()
var bm = $('#bm')[0]
bm.width = pixel*map.width*16
bm.height = pixel*map.height*16
var ctx = bm.getContext('2d')
ctx.fillStyle = '#105830'
ctx.fillRect(0,0,bm.width,bm.height)
map.draw(ctx, tick)
for (var i in gamers)
gamers[i].draw(ctx, tick)
}
main = {
width: map.width*16*pixel,
down: {},
up: {},
net: {
'Start': function(data) {
var rem = function() {
for (var i=0; i<4; i++)
if (gameme.mov & (0x1<<i))
return i
return gameme.dir
}
main.down[38] = function() { gameme.mov |= 0x1; gameme.dir = 0 }
main.down[40] = function() { gameme.mov |= 0x2; gameme.dir = 1 }
main.down[37] = function() { gameme.mov |= 0x4; gameme.dir = 2 }
main.down[39] = function() { gameme.mov |= 0x8; gameme.dir = 3 }
main.up[38] = function() { gameme.mov &= ~0x1; gameme.dir = rem() }
main.up[40] = function() { gameme.mov &= ~0x2; gameme.dir = rem() }
main.up[37] = function() { gameme.mov &= ~0x4; gameme.dir = rem() }
main.up[39] = function() { gameme.mov &= ~0x8; gameme.dir = rem() }
startime =
lasttime = new Date().getTime()
run()
},
'End': function(data) {
$('#main').load('bmjoin.html', setmain)
},
'Move': function(data) {
for (var i in data)
if (i!=gameme.id && gamers[i]) gamers[i].sync(data[i])
socket.send({move: gameme.netcopy()})
}
},
onmouseup: function() {},
onresize: function() { draw() },
onload: function() {
var mp = @5@
for (var i=0; i<mp.length; i++)
map.set(i%map.width, ~~(i/map.width), mp[i])
var pl = @6@
for (var i in pl)
gamers[i] = new Gamer(i, pl[i])
gameme = gamers[me.id]
map.cache()
for (var i in gamers)
gamers[i].cache()
},
}
</script>
<canvas id=bm></canvas>