|
|
define(["webL10n","sugar-web/env"], function (webL10n,env) {
|
|
|
|
var settings = {};
|
|
|
|
settings.l10n = webL10n;
|
|
|
|
settings.load = function(callback) {
|
|
// Load settings
|
|
env.getEnvironment(function(err, environment) {
|
|
var defaultLanguage = (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) ? chrome.i18n.getUILanguage() : navigator.language;
|
|
var language = environment.user ? environment.user.language : defaultLanguage;
|
|
settings.language = language;
|
|
settings.l10n.language.code = language;
|
|
callback();
|
|
});
|
|
|
|
// Stop sound at end of game to sanitize media environment, specifically on Android
|
|
document.getElementById("stop-button").addEventListener('click', function (event) {
|
|
sound.pause();
|
|
});
|
|
}
|
|
|
|
// Get/Set state
|
|
settings.getState = function() {
|
|
var states = [];
|
|
for(var i = 0 ; i < this.levels.length ; i++) {
|
|
states.push(this.levels[i].completed);
|
|
}
|
|
return states;
|
|
}
|
|
settings.setState = function(states) {
|
|
if (states == null || states.length != this.levels.length)
|
|
return false;
|
|
for (var i = 0 ; i < this.levels.length ; i++) {
|
|
this.levels[i].completed = states[i];
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
// Game map
|
|
settings.gameMap = function(map) {
|
|
var width = constant.boardWidth, height = constant.boardHeight;
|
|
if (map == "grass") {
|
|
return "---HOH-----H---" + // - = Grass
|
|
"----H----------" + // H = Trees
|
|
"---------------" + // ^ = Mountain
|
|
"---------------" + // O = Lake
|
|
"---------------" +
|
|
"-----------H---" +
|
|
"-----H---------" +
|
|
"---------------" +
|
|
"---------H-H---";
|
|
} else if (map == "trees") {
|
|
return "------H--HHHH^-" +
|
|
"----H--H----HH-" +
|
|
"------H---H----" +
|
|
"---------------" +
|
|
"---------------" +
|
|
"---H-----------" +
|
|
"-------HH------" +
|
|
"-----H--H---H--" +
|
|
"---HHH---HH--H-";
|
|
} else if (map == "mountain") {
|
|
return "---HHH^^^HHH---" +
|
|
"----HHH^^HH--H-" +
|
|
"------H-HH-----" +
|
|
"---H-----------" +
|
|
"-------O-------" +
|
|
"-----------H---" +
|
|
"-----H-H-------" +
|
|
"-----HHH^H-H---" +
|
|
"----HHH^^^HHH--";
|
|
}
|
|
return new Array(width*height).join('-');
|
|
}
|
|
|
|
|
|
// Functions to generate tags
|
|
settings.typeNumber = function() {
|
|
var number = Math.floor(Math.random()*11);
|
|
return { tag: ""+number, result: number };
|
|
}
|
|
|
|
settings.generateFunctionAddFromTo = function(start, end) {
|
|
var difference = end-start+1;
|
|
return function() {
|
|
var number1 = start+Math.floor(Math.random()*difference);
|
|
var number2 = start+Math.floor(Math.random()*difference);
|
|
return { tag: ""+number1+"+"+number2, result: number1+number2 }
|
|
}
|
|
}
|
|
|
|
settings.missingNumbers = function() {
|
|
var number1 = Math.floor(Math.random()*11);
|
|
var number2 = Math.floor(Math.random()*11);
|
|
return { tag: ""+number1+"+?="+(number1+number2), result: number2 };
|
|
}
|
|
|
|
settings.generateFunctionSubstractFromTo = function(start, end, negative) {
|
|
var difference = end-start+1;
|
|
return function() {
|
|
var number1 = start+Math.floor(Math.random()*difference);
|
|
var number2 = start+Math.floor(Math.random()*difference);
|
|
if (!negative && Math.abs(number2) > Math.abs(number1)) {
|
|
var tmp = number1;
|
|
number1 = number2;
|
|
number2 = tmp;
|
|
}
|
|
return { tag: ""+number1+"-"+number2, result: number1-number2 }
|
|
}
|
|
}
|
|
|
|
settings.additionSubtraction = function() {
|
|
var number1 = Math.floor(Math.random()*21);
|
|
var number2 = Math.floor(Math.random()*11);
|
|
var sign = Math.floor(Math.random()*2);
|
|
if (sign == 0)
|
|
return { tag: ""+number1+"+"+number2, result: number1+number2 };
|
|
else {
|
|
if (Math.abs(number2) > Math.abs(number1)) {
|
|
var tmp = number1;
|
|
number1 = number2;
|
|
number2 = tmp;
|
|
}
|
|
return { tag: ""+number1+"-"+number2, result: number1-number2 }
|
|
}
|
|
}
|
|
|
|
|
|
// Play levels
|
|
settings.levels = [
|
|
{
|
|
id: "Type", // Id of level
|
|
name: "Type", // Name of level
|
|
map: "mountain", // Name of map, see in util.js
|
|
defense: [4, 0, 4, 0, 0], // Defense composition: #HQ, #Soldier, #Tank, #Canon, #Helo
|
|
attack: 22, // #Attacking units
|
|
stats: [10, 10, 0, 9, 10], // Attack stats composition a random number between 0-9 compared to array number for: HQ, Soldier, Tank, Canon, Helo
|
|
generator: settings.typeNumber, // Function to generate the value
|
|
completed: false // Use at runtime to see if completed
|
|
},
|
|
{
|
|
id: "ADD3",
|
|
name: "ADD3",
|
|
map: "trees",
|
|
defense: [4, 2, 2, 0, 0],
|
|
attack: 20,
|
|
stats: [10, 0, 8, 10, 10],
|
|
generator: settings.generateFunctionAddFromTo(1, 3),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "ADD5",
|
|
name: "ADD5",
|
|
map: "grass",
|
|
defense: [4, 3, 1, 0, 0],
|
|
attack: 30,
|
|
stats: [10, 0, 8, 10, 9],
|
|
generator: settings.generateFunctionAddFromTo(0, 5),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "SUM10",
|
|
name: "SUM10",
|
|
map: "mountain",
|
|
defense: [4, 0, 4, 0, 0],
|
|
attack: 30,
|
|
stats: [10, 10, 0, 8, 9],
|
|
generator: settings.generateFunctionAddFromTo(0, 10),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "SUM15",
|
|
name: "SUM15",
|
|
map: "trees",
|
|
defense: [4, 2, 2, 0, 0],
|
|
attack: 30,
|
|
stats: [10, 0, 7, 10, 10],
|
|
generator: settings.generateFunctionAddFromTo(0, 15),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "SUM20",
|
|
name: "SUM20",
|
|
map: "grass",
|
|
defense: [4, 3, 1, 0, 0],
|
|
attack: 40,
|
|
stats: [10, 0, 7, 10, 9],
|
|
generator: settings.generateFunctionAddFromTo(0, 20),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "TDN",
|
|
name: "TDN",
|
|
map: "mountain",
|
|
defense: [4, 4, 4, 0, 0],
|
|
attack: 40,
|
|
stats: [10, 0, 1, 8, 9],
|
|
generator: settings.generateFunctionAddFromTo(10, 20),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "Missing",
|
|
name: "Missing",
|
|
map: "trees",
|
|
defense: [4, 2, 2, 0, 0],
|
|
attack: 40,
|
|
stats: [10, 0, 7, 10, 10],
|
|
generator: settings.missingNumbers,
|
|
completed: false
|
|
},
|
|
{
|
|
id: "S010",
|
|
name: "S010",
|
|
map: "grass",
|
|
defense: [4, 0, 4, 0, 0],
|
|
attack: 40,
|
|
stats: [10, 10, 0, 9, 10],
|
|
generator: settings.generateFunctionSubstractFromTo(0, 10, false),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "S020",
|
|
name: "S020",
|
|
map: "trees",
|
|
defense: [4, 2, 2, 0, 0],
|
|
attack: 20,
|
|
stats: [10, 0, 8, 10, 10],
|
|
generator: settings.generateFunctionSubstractFromTo(0, 20, false),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "STW",
|
|
name: "STW",
|
|
map: "mountain",
|
|
defense: [4, 4, 4, 0, 0],
|
|
attack: 30,
|
|
stats: [10, 0, 1, 8, 9],
|
|
generator: settings.generateFunctionSubstractFromTo(10, 30, false),
|
|
completed: false
|
|
},
|
|
{
|
|
id: "AAS",
|
|
name: "AAS",
|
|
map: "trees",
|
|
defense: [4, 2, 2, 0, 0],
|
|
attack: 40,
|
|
stats: [10, 0, 7, 10, 10],
|
|
generator: settings.additionSubtraction,
|
|
completed: false
|
|
}
|
|
];
|
|
|
|
return settings;
|
|
});
|