-
Notifications
You must be signed in to change notification settings - Fork 0
/
game.js
96 lines (79 loc) · 2.96 KB
/
game.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
var puts = require( "sys" ).puts;
var players = [];
with ( require( "fab" ) )
( fab )
( listen, 0xFAB )
( /move/ )
( function() {
var out = this;
return function listener( obj ) {
if ( !obj ) out();
else if ( obj.body ) {
puts(obj.body);
broadcast(obj);
}
return listener;
};
} )
( /^\/comet_view/ )
( init_comet )
( player_from_querystring )
(/^\/(javascript|stylesheets)/)
(/^\/([_\w]+)\.(js|css)$/)
(fab.nodejs.fs)
( fab.tmpl, "<%= this[0] %>/<%= this[1] %>.<%= this[2] %>" )
( fab.capture )
(404)
(/^\/([_\w]+)$/)
(fab.nodejs.fs)
( fab.tmpl, "html/<%= this %>.html" )
( fab.capture.at, 0 )
( 404 );
function broadcast(obj) {
puts("broadcasting to "+players.length+" players");
players.forEach(
function(player) {
var body = '<script type="text/javascript">' +
'window.parent.player_list.walk_player('+ obj.body +');' +
'</script>' + "\n";
player({body: body});
}
);
}
function init_comet (app) {
return function () {
var out = this;
return app.call( function listener(obj) {
if (obj && obj.body) {
players.push(out);
out({ headers: { "content-type": "text/html" },
body: "<html><body>\n" })
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"})
({body: "<script type=\"text/javascript\">\"123456789 123456789 123456789 123456789 123456789 12345\";</script>\n"});
}
return listener;
});
};
}
function player_from_querystring() {
var out = this;
return function(head) {
if (head.url.search) {
var search = head.url.search.substring(1);
var q = require('querystring').parse(search);
var app = out({ body: {id: q.id, x: q.x || 0, y: q.y || 0} });
if ( app ) app();
}
else {
out();
}
};
}