|
|
|
@ -237,6 +237,10 @@ function CharacterStorageService($http) { |
|
|
|
|
/**** Class BurningDataService (Angular Service) ****/ |
|
|
|
|
// This service is used to load the lifepaths, skills, traits, etc. from the server.
|
|
|
|
|
function BurningDataService($http) { |
|
|
|
|
|
|
|
|
|
// Used to reference the object from within functions and callbacks
|
|
|
|
|
var myself = this; |
|
|
|
|
|
|
|
|
|
/* JSON Data structure representing lifepaths. The structure is: |
|
|
|
|
stock: |
|
|
|
|
setting_name: |
|
|
|
@ -264,43 +268,10 @@ function BurningDataService($http) { |
|
|
|
|
// A hash of StartingStatPoints objects keyed by stock.
|
|
|
|
|
this.startingStatPts = {}; |
|
|
|
|
|
|
|
|
|
this.events = { |
|
|
|
|
stocksLoaded: { triggered : false, callbacks : [] }, |
|
|
|
|
traitsLoaded: { triggered : false, callbacks : [] }, |
|
|
|
|
skillsLoaded: { triggered : false, callbacks : [] }, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.registerEvent = function(eventName, callback){ |
|
|
|
|
if(this.events[eventName].triggered) |
|
|
|
|
callback(); |
|
|
|
|
this.events[eventName].callbacks.push(callback); |
|
|
|
|
} |
|
|
|
|
this.triggerEvent = function(eventName) { |
|
|
|
|
myself.events[eventName].triggered = true; |
|
|
|
|
for(var callback of myself.events[eventName].callbacks) { |
|
|
|
|
callback(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
/* Loading of stocks, skills, and traits begins on initializing the service |
|
|
|
|
|
|
|
|
|
this.stockEvents = {}; |
|
|
|
|
this.defineStockEvent = function(stockName, eventName) { |
|
|
|
|
if(!(stockName in myself.stockEvents)) myself.stockEvents[stockName] = {}; |
|
|
|
|
myself.stockEvents[stockName][eventName] = { triggered : false, callbacks : [] } ; |
|
|
|
|
} |
|
|
|
|
this.registerStockEvent = function(stockName, eventName, callback){ |
|
|
|
|
if(myself.stockEvents[stockName][eventName].triggered) |
|
|
|
|
callback(); |
|
|
|
|
myself.stockEvents[stockName][eventName].callbacks.push(callback); |
|
|
|
|
} |
|
|
|
|
this.triggerStockEvent = function(stockName, eventName) { |
|
|
|
|
myself.stockEvents[stockName][eventName].triggered = true; |
|
|
|
|
for(var callback of myself.stockEvents[stockName][eventName].callbacks) { |
|
|
|
|
callback(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fetch("/stocks") |
|
|
|
|
/* Load stocks from server */ |
|
|
|
|
this.whenStocksLoaded = fetch("/stocks") |
|
|
|
|
.then((response) => response.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
if(DEBUG) |
|
|
|
@ -308,64 +279,67 @@ function BurningDataService($http) { |
|
|
|
|
myself.stocks = data; |
|
|
|
|
for (var stock of Object.keys(data)) { |
|
|
|
|
myself.startingStatPts[stock] = new StartingStatPoints(myself.stocks[stock].starting_stats); |
|
|
|
|
myself.defineStockEvent(stock, "lifepathsLoaded"); |
|
|
|
|
myself.defineStockEvent(stock, "resourcesLoaded"); |
|
|
|
|
} |
|
|
|
|
myself.triggerEvent("stocksLoaded"); |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
console.log("Error: Getting stocks from server failed: "+error); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/* Load skills from server */ |
|
|
|
|
fetch("/skills") |
|
|
|
|
this.whenSkillsLoaded = fetch("/skills") |
|
|
|
|
.then((response) => response.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
myself.skills = data; |
|
|
|
|
myself.triggerEvent("skillsLoaded"); |
|
|
|
|
if(DEBUG) |
|
|
|
|
console.log("Loaded skill data: "+data); |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
console.log("Error: Getting skills from server failed: "+error); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/* Load traits from server */ |
|
|
|
|
fetch("/traits") |
|
|
|
|
this.whenTraitsLoaded = fetch("/traits") |
|
|
|
|
.then((response) => response.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
myself.traits = data; |
|
|
|
|
myself.triggerEvent("traitsLoaded"); |
|
|
|
|
if(DEBUG) |
|
|
|
|
console.log("Loaded trait data: "+data); |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
console.log("Error: Getting traits from server failed: "+error); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/* Lifepaths and resources defer until their stock is selected */ |
|
|
|
|
|
|
|
|
|
this.whenLifePathsLoadedForStock = {}; |
|
|
|
|
/* Load lifepaths from server */ |
|
|
|
|
this.loadLifepathsForStock = function(stock){ |
|
|
|
|
fetch("/lifepaths/" + stock) |
|
|
|
|
return myself.whenLifePathsLoadedForStock[stock] = fetch("/lifepaths/" + stock) |
|
|
|
|
.then((response) => response.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
myself.lifepaths[stock] = data; |
|
|
|
|
myself.triggerStockEvent(stock, "lifepathsLoaded"); |
|
|
|
|
console.log("Loaded "+stock+" lifepaths. " + Object.keys(myself.lifepaths[stock]).length + " settings"); |
|
|
|
|
if(DEBUG) |
|
|
|
|
console.log("Loaded "+stock+" lifepaths. " + Object.keys(myself.lifepaths[stock]).length + " settings"); |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
console.log("Error: Getting "+stock+" lifepaths from server failed: "+error); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
/* Load resources from server */ |
|
|
|
|
this.whenResourcesLoadedForStock = {}; |
|
|
|
|
this.loadResourcesForStock = function(stock){ |
|
|
|
|
fetch("/resources/" + stock) |
|
|
|
|
return myself.whenResourcesLoadedForStock[stock] = fetch("/resources/" + stock) |
|
|
|
|
.then((response) => response.json()) |
|
|
|
|
.then((data) => { |
|
|
|
|
myself.resources[stock] = data; |
|
|
|
|
myself.triggerStockEvent(stock, "resourcesLoaded"); |
|
|
|
|
console.log("Loaded "+stock+" resources. "); |
|
|
|
|
if(DEBUG) |
|
|
|
|
console.log("Loaded "+stock+" resources. "); |
|
|
|
|
}) |
|
|
|
|
.catch((error) => { |
|
|
|
|
console.log("Error: Getting "+stock+" stat points from server failed: "+error); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
/**** End BurningDataService ****/ |
|
|
|
|
|
|
|
|
|