Skip to content

Commit 0e9a1db

Browse files
committed
Wrapped client fn runGame in global object for gamesync lib
1 parent 6f978b3 commit 0e9a1db

File tree

1 file changed

+61
-56
lines changed

1 file changed

+61
-56
lines changed

gamesync-client.js

Lines changed: 61 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,66 @@
1-
function runGame (game, render, getInput, renderLag) {
1+
;window.gamesync = (function(){
22
'use strict';
3-
var socket = io.connect (document.URL);
4-
5-
if (typeof renderLag === 'undefined') renderLag = 0;
6-
7-
socket.on ('connect', function () {
8-
var inputId = null;
9-
var latestInput = game.defaultInput;
10-
var storedInputs = [];
11-
12-
socket.on ('message', function (data) {
13-
if (data.error) {
14-
alert (data.error);
15-
return;
16-
}
17-
if (data.notifyInputId) {
18-
inputId = data.notifyInputId;
19-
return;
20-
}
21-
22-
var newInputTime = data.pastTime + data.knownInputs.length - 1;
23-
24-
var readInput = getInput ();
25-
26-
if (readInput) {
27-
latestInput = readInput;
28-
socket.json.send ({
29-
input: readInput,
30-
time: newInputTime
31-
});
32-
}
333

34-
storedInputs.unshift ({
35-
input: latestInput,
36-
time: newInputTime
37-
});
4+
return {
5+
runGame: function (game, render, getInput, renderLag) {
6+
var socket = io.connect (document.URL);
7+
8+
if (typeof renderLag === 'undefined') renderLag = 0;
9+
10+
socket.on ('connect', function () {
11+
var inputId = null;
12+
var latestInput = game.defaultInput;
13+
var storedInputs = [];
14+
15+
socket.on ('message', function (data) {
16+
if (data.error) {
17+
alert (data.error);
18+
return;
19+
}
20+
if (data.notifyInputId) {
21+
inputId = data.notifyInputId;
22+
return;
23+
}
24+
25+
var newInputTime = data.pastTime + data.knownInputs.length - 1;
3826

39-
var frame = {};
40-
frame.state = data.pastState;
41-
frame.time = data.pastTime;
42-
while (data.knownInputs.length > renderLag) {
43-
var frameInputs = data.knownInputs.pop();
44-
for (var i = 0; i < storedInputs.length; ++i) {
45-
if (storedInputs[i].time === frame.time) {
46-
frameInputs[inputId] = storedInputs[i].input;
47-
break;
27+
var readInput = getInput ();
28+
29+
if (readInput) {
30+
latestInput = readInput;
31+
socket.json.send ({
32+
input: readInput,
33+
time: newInputTime
34+
});
35+
}
36+
37+
storedInputs.unshift ({
38+
input: latestInput,
39+
time: newInputTime
40+
});
41+
42+
var frame = {};
43+
frame.state = data.pastState;
44+
frame.time = data.pastTime;
45+
while (data.knownInputs.length > renderLag) {
46+
var frameInputs = data.knownInputs.pop();
47+
for (var i = 0; i < storedInputs.length; ++i) {
48+
if (storedInputs[i].time === frame.time) {
49+
frameInputs[inputId] = storedInputs[i].input;
50+
break;
51+
}
52+
}
53+
frame.state = game.step (JSON.parse (JSON.stringify (frameInputs)), frame.state);
54+
frame.time++;
4855
}
49-
}
50-
frame.state = game.step (JSON.parse (JSON.stringify (frameInputs)), frame.state);
51-
frame.time++;
52-
}
53-
54-
render (frame.state);
55-
56-
// TODO Replace magic number with science number
57-
if (storedInputs.length > 50) storedInputs.pop ();
58-
});
59-
});
60-
}
56+
57+
render (frame.state);
58+
59+
// TODO Replace magic number with science number
60+
if (storedInputs.length > 50) storedInputs.pop ();
61+
});
62+
});
63+
}
64+
}
65+
})();
6166

0 commit comments

Comments
 (0)