not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

125 lines
3.6 KiB

// Utility functions
// Force Enyo to process ondragover event
document.ondragover = enyo.dispatch;
// Namespace
FoodChain = {};
// Game context handling
FoodChain.context = {
score: 0,
game: "",
level: 0,
language: "en",
object: null
};
FoodChain.saveContext = function() {
var datastoreObject = FoodChain.activity.getDatastoreObject();
var jsonData = JSON.stringify({
score: FoodChain.context.score,
game: FoodChain.context.game,
level: FoodChain.context.level,
language: l10n.language.code
});
datastoreObject.setDataAsText(jsonData);
datastoreObject.save(function() {
});
};
FoodChain.loadContext = function(callback) {
var datastoreObject = FoodChain.activity.getDatastoreObject();
datastoreObject.loadAsText(function (error, metadata, data) {
var context = JSON.parse(data);
if (context == null) return;
if (context.score) FoodChain.context.score = parseInt(context.score);
if (context.game) FoodChain.context.game = context.game;
if (context.level) FoodChain.context.level = parseInt(context.level);
if (context.language) FoodChain.context.language = l10n.language.code = context.language;
callback();
});
};
// Home handling
FoodChain.goHome = function() {
if (FoodChain.context.home != null) {
FoodChain.context.game = "";
FoodChain.context.home.setLocale()
FoodChain.context.home.renderInto(document.getElementById("body"));
}
};
// Sugar interface
FoodChain.setLocale = function() {
document.getElementById("en-button").classList.remove('active');
document.getElementById("fr-button").classList.remove('active');
document.getElementById("pt_BR-button").classList.remove('active');
if (l10n.language.code.indexOf("en") == 0) { document.getElementById("en-button").classList.add('active'); }
else if (l10n.language.code.indexOf("fr") == 0) { document.getElementById("fr-button").classList.add('active'); }
else if (l10n.language.code.indexOf("pt_BR") == 0) { document.getElementById("pt_BR-button").classList.add('active'); }
if (FoodChain.context.object != null)
FoodChain.context.object.setLocale();
}
FoodChain.log = function(msg) {
console.log(msg);
};
// Add and remove a class to an element
FoodChain.addRemoveClass = function(element, toAdd, toRemove) {
element.removeClass(toRemove);
element.addClass(toAdd);
};
// "Old style" sleep function
FoodChain.sleep = function(delay) {
var start = new Date().getTime();
while (new Date().getTime() < start + delay);
};
// Create a object respecting a condition on a set of object
FoodChain.createWithCondition = function(create, condition, set) {
var conditionValue;
var newObject;
var time = 0;
do {
conditionValue = true;
newObject = create();
for (var i = 0; conditionValue && i < set.length ; i++) {
conditionValue = condition(newObject, set[i]);
}
time++;
} while (!conditionValue && time < 12); // time to avoid infinite or too long loop in very complex situation
if (!conditionValue)
FoodChain.log("WARNING: out of pre-requisite creating "+newObject.id);
return newObject;
};
// Test if two sound strings matchs ignoring audio directory
FoodChain.soundMatch = function(s1, s2) {
var l1 = s1.length-1;
while (l1 > 0 && s1[l1] != '/') l1--;
var l2 = s2.length-1;
while (l2 > 0 && s2[l2] != '/') l2--;
return s1.substring(l1) == s2.substring(l2);
};
// Get zoom level
FoodChain.getZoomLevel = function() {
var wsize = window.innerWidth;
var zoom;
if (wsize <= 480) {
zoom = 0.4;
} else if (wsize <= 640) {
zoom = 0.5;
} else if (wsize <= 854) {
zoom = 0.62;
} else if (wsize <= 960) {
zoom = 0.72;
} else if (wsize <= 1024) {
zoom = 0.88;
} else {
zoom = 1;
}
return zoom;
};