From fe3c65666e53170c91537d21c08e61e40475186c Mon Sep 17 00:00:00 2001 From: Toon Willems Date: Tue, 29 Apr 2014 14:16:20 +0200 Subject: [PATCH 1/5] fix boxxy yet again --- boxxy/src/boxxy.js | 10 ++++++---- boxxy/src/server.js | 9 ++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/boxxy/src/boxxy.js b/boxxy/src/boxxy.js index 7b96d49..9f748d2 100644 --- a/boxxy/src/boxxy.js +++ b/boxxy/src/boxxy.js @@ -4,7 +4,8 @@ function Boxxy() { /* State */ this.frozen = false; - this.frozenScore = null; + this.frozenLaps = null; + this.frozenTeams = null; this.notification = null; this.circuitLength = 0; this.startTime = null; @@ -28,7 +29,8 @@ Boxxy.prototype.putState = function(stateDelta) { // This signifies the change melted -> frozen if(stateDelta.frozen != null && stateDelta.frozen && !this.frozen) { - this.frozenScore = this.teamsByScore(); + this.frozenLaps = this.laps; + this.frozenTeams = this.teams; this.frozen = true; } @@ -37,8 +39,8 @@ Boxxy.prototype.putState = function(stateDelta) { this.frozen = false; } - if(!this.frozen && stateDelta.teams) this.teams = stateDelta.teams; - if(!this.frozen && stateDelta.laps) this.laps = stateDelta.laps; + if(stateDelta.teams) this.teams = stateDelta.teams; + if(stateDelta.laps) this.laps = stateDelta.laps; this.onPutState(stateDelta); this.onUpdate(); diff --git a/boxxy/src/server.js b/boxxy/src/server.js index e9f735f..fb4fa63 100644 --- a/boxxy/src/server.js +++ b/boxxy/src/server.js @@ -29,7 +29,14 @@ var boxxyState = boxxy.initialize(); io.sockets.on('connection', function(socket) { if (boxxyState.frozen) { - socket.emit('/state', boxxyState.frozenScore); + state = {}; + state.circuitLength = boxxyState.circuitLength; + state.startTime = boxxyState.startTime; + state.stopTime = boxxyState.stopTime; + state.stations = boxxyState.stations; + state.laps = boxxyState.frozenLaps; + state.teams = boxxyState.frozenTeams; + socket.emit('/state', state); } else { socket.emit('/state', boxxyState); } From ad662c83451489cb3643b9d497e1d8d404b15d9d Mon Sep 17 00:00:00 2001 From: Toon Willems Date: Tue, 29 Apr 2014 14:24:08 +0200 Subject: [PATCH 2/5] this was necessary --- boxxy/src/boxxy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boxxy/src/boxxy.js b/boxxy/src/boxxy.js index 9f748d2..e275209 100644 --- a/boxxy/src/boxxy.js +++ b/boxxy/src/boxxy.js @@ -39,8 +39,8 @@ Boxxy.prototype.putState = function(stateDelta) { this.frozen = false; } - if(stateDelta.teams) this.teams = stateDelta.teams; - if(stateDelta.laps) this.laps = stateDelta.laps; + if(!this.frozen && stateDelta.teams) this.teams = stateDelta.teams; + if(!this.frozen && stateDelta.laps) this.laps = stateDelta.laps; this.onPutState(stateDelta); this.onUpdate(); From 38565f718f79b170dc21f8191739d0f9018ed4ae Mon Sep 17 00:00:00 2001 From: Toon Willems Date: Tue, 29 Apr 2014 14:28:13 +0200 Subject: [PATCH 3/5] even more ugly fixes --- boxxy/src/boxxy.js | 2 ++ boxxy/src/server.js | 1 + 2 files changed, 3 insertions(+) diff --git a/boxxy/src/boxxy.js b/boxxy/src/boxxy.js index e275209..2509fd4 100644 --- a/boxxy/src/boxxy.js +++ b/boxxy/src/boxxy.js @@ -29,6 +29,8 @@ Boxxy.prototype.putState = function(stateDelta) { // This signifies the change melted -> frozen if(stateDelta.frozen != null && stateDelta.frozen && !this.frozen) { + this.laps = stateDelta.laps; + this.teams = stateDelta.teams; this.frozenLaps = this.laps; this.frozenTeams = this.teams; this.frozen = true; diff --git a/boxxy/src/server.js b/boxxy/src/server.js index fb4fa63..0bf0e26 100644 --- a/boxxy/src/server.js +++ b/boxxy/src/server.js @@ -36,6 +36,7 @@ io.sockets.on('connection', function(socket) { state.stations = boxxyState.stations; state.laps = boxxyState.frozenLaps; state.teams = boxxyState.frozenTeams; + state.frozen = true; socket.emit('/state', state); } else { socket.emit('/state', boxxyState); From a8385218089a8a5d7877a83a976961c0ef5a88b6 Mon Sep 17 00:00:00 2001 From: Toon Willems Date: Tue, 29 Apr 2014 14:32:08 +0200 Subject: [PATCH 4/5] FUCKING JASPERVDJ --- boxxy/src/boxxy.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/boxxy/src/boxxy.js b/boxxy/src/boxxy.js index 2509fd4..f7ecd70 100644 --- a/boxxy/src/boxxy.js +++ b/boxxy/src/boxxy.js @@ -29,8 +29,10 @@ Boxxy.prototype.putState = function(stateDelta) { // This signifies the change melted -> frozen if(stateDelta.frozen != null && stateDelta.frozen && !this.frozen) { - this.laps = stateDelta.laps; - this.teams = stateDelta.teams; + if(stateDelta.laps && stateDelta.teams) { + this.laps = stateDelta.laps; + this.teams = stateDelta.teams; + } this.frozenLaps = this.laps; this.frozenTeams = this.teams; this.frozen = true; From e293a1c118f0d8c5306fdd0fd019fae5b3d6f83e Mon Sep 17 00:00:00 2001 From: Toon Willems Date: Tue, 29 Apr 2014 14:41:37 +0200 Subject: [PATCH 5/5] can't believe i am doing this --- boxxy/src/boxxy.js | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/boxxy/src/boxxy.js b/boxxy/src/boxxy.js index f7ecd70..af338b9 100644 --- a/boxxy/src/boxxy.js +++ b/boxxy/src/boxxy.js @@ -20,6 +20,37 @@ function Boxxy() { this.onUpdatePosition = function(position) {}; this.onUpdate = function() {}; } +function clone(obj) { + // Handle the 3 simple types, and null or undefined + if (null == obj || "object" != typeof obj) return obj; + + // Handle Date + if (obj instanceof Date) { + var copy = new Date(); + copy.setTime(obj.getTime()); + return copy; + } + + // Handle Array + if (obj instanceof Array) { + var copy = []; + for (var i = 0, len = obj.length; i < len; i++) { + copy[i] = clone(obj[i]); + } + return copy; + } + + // Handle Object + if (obj instanceof Object) { + var copy = {}; + for (var attr in obj) { + if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]); + } + return copy; + } + + throw new Error("Unable to copy obj! Its type isn't supported."); +} Boxxy.prototype.putState = function(stateDelta) { if(stateDelta.notification != null) this.notification = stateDelta.notification; @@ -33,8 +64,8 @@ Boxxy.prototype.putState = function(stateDelta) { this.laps = stateDelta.laps; this.teams = stateDelta.teams; } - this.frozenLaps = this.laps; - this.frozenTeams = this.teams; + this.frozenLaps = clone(this.laps); + this.frozenTeams = clone(this.teams); this.frozen = true; }