Skip to content
This repository has been archived by the owner on Mar 2, 2022. It is now read-only.

Commit

Permalink
can't believe i am doing this
Browse files Browse the repository at this point in the history
  • Loading branch information
Toon Willems committed Apr 29, 2014
1 parent a838521 commit e293a1c
Showing 1 changed file with 33 additions and 2 deletions.
35 changes: 33 additions & 2 deletions boxxy/src/boxxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}

Expand Down

0 comments on commit e293a1c

Please sign in to comment.