62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
var Game = (function() {
|
|
'use strict';
|
|
|
|
var Game = function() {
|
|
this.lab = new GameObjects.Lab();
|
|
this.research = null;
|
|
this.workers = null;
|
|
this.upgrades = null;
|
|
this.achievements = null;
|
|
this.allObjects = {lab : this.lab};
|
|
this.loaded = false;
|
|
};
|
|
|
|
Game.prototype.load = function() {
|
|
if (this.loaded) {
|
|
return;
|
|
}
|
|
|
|
// I know synchronous requests are bad as they will block the browser.
|
|
// However, I don't see any other reasonable way to do this in order to
|
|
// make it work with Angular. If you know a way, let me know, and I'll
|
|
// give you a beer. - Kevin
|
|
this.research = Helpers.loadFile('json/research.json');
|
|
this.workers = Helpers.loadFile('json/workers.json');
|
|
this.upgrades = Helpers.loadFile('json/upgrades.json');
|
|
this.achievements = Helpers.loadFile('json/achievements.json');
|
|
|
|
// Turn JSON files into actual game objects and fill map of all objects
|
|
var _this = this;
|
|
var makeGameObject = function(type, object) {
|
|
// It's okay to define this function here since load is only called
|
|
// once anyway...
|
|
var o = new type(object);
|
|
_this.allObjects[o.key] = o;
|
|
return o;
|
|
};
|
|
this.research = this.research.map(
|
|
function(r) { return makeGameObject(GameObjects.Research, r); });
|
|
this.workers = this.workers.map(
|
|
function(w) { return makeGameObject(GameObjects.Worker, w); });
|
|
this.upgrades = this.upgrades.map(
|
|
function(u) { return makeGameObject(GameObjects.Upgrade, u); });
|
|
this.achievements = this.achievements.map(
|
|
function(a) { return makeGameObject(GameObjects.Achievement, a); });
|
|
// Load states from local store
|
|
for (var key in this.allObjects) {
|
|
var o = this.allObjects[key];
|
|
o.loadState(ObjectStorage.load(key));
|
|
}
|
|
this.loaded = true;
|
|
};
|
|
|
|
Game.prototype.save = function() {
|
|
// Save every object's state to local storage
|
|
for (var key in this.allObjects) {
|
|
ObjectStorage.save(key, this.allObjects[key].state);
|
|
}
|
|
};
|
|
|
|
return {Game : Game};
|
|
}());
|