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.
 
 
 
 
 

119 lines
4.0 KiB

/* Start of the app, we require everything that is needed */
define(function (require) {
requirejs(['domReady!', "sugar-web/activity/activity", "sugar-web/graphics/presencepalette", 'activity/memorize-app'], function (doc, activity, presencePalette, memorizeApp) {
window.memorizeApp = memorizeApp;
memorizeApp.activity = activity;
memorizeApp.activity.setup();
if (window.top.sugar.environment.sharedId) {
memorizeApp.initUI(function () {
initPresence(memorizeApp.activity, memorizeApp, presencePalette);
})
} else {
memorizeApp.initUI(function () {
initPresence(memorizeApp.activity, memorizeApp, presencePalette);
memorizeApp.computeCards(true);
memorizeApp.drawGame();
loadData(memorizeApp.activity, memorizeApp, function () {
memorizeApp.drawGame();
});
})
}
});
});
function loadData(activity, memorizeApp, callback) {
var timeout = 0;
if (typeof chrome != 'undefined' && chrome.app && chrome.app.runtime) {
chrome.storage.local.get('sugar_settings', function (values) {
timeout = 500;
});
} else {
timeout = 0;
}
setTimeout(function () {
activity.getDatastoreObject().loadAsText(function (error, metadata, jsonData) {
if (jsonData == null) {
return;
}
var data = JSON.parse(jsonData);
if (data == null) {
return;
}
if (data.game) {
memorizeApp.game = data.game;
memorizeApp.game.multiplayer = false;
memorizeApp.game.selectedCards = [];
memorizeApp.game.currentPlayer = "";
memorizeApp.game.players = []
}
if (callback) {
callback();
}
});
}, timeout);
}
function initPresence(activity, memorizeApp, presencepalette, callback) {
activity.getPresenceObject(function (error, presence) {
memorizeApp.presence = presence;
var networkButton = document.getElementById("network-button");
var presencePalette = new presencepalette.PresencePalette(networkButton, undefined, presence);
presence.onSharedActivityUserChanged(function (msg) {
presencePalette.onSharedActivityUserChanged(msg);
});
//We use one of the palette feature that allows us to get the full list of current users everytime the list changes
presencePalette.onUsersListChanged(function (users) {
memorizeApp.onUsersListChanged(users);
});
// Launched with a shared id, activity is already shared
if (window.top && window.top.sugar && window.top.sugar.environment && window.top.sugar.environment.sharedId) {
shareActivity(activity, presence, memorizeApp, false);
presencePalette.setShared(true);
} else {
presencePalette.addEventListener('shared', function () {
shareActivity(activity, presence, memorizeApp, true);
});
}
if (callback) {
callback();
}
});
}
function shareActivity(activity, presence, memorizeApp, isHost) {
memorizeApp.shareActivity(isHost);
var userSettings = presence.getUserInfo();
// Not found, create a new shared activity
if (!window.top.sugar.environment.sharedId) {
presence.createSharedActivity('org.olpcfrance.MemorizeActivity', function (groupId) {
//console.log(groupId)
});
}
// Show a disconnected message when the WebSocket is closed.
presence.onConnectionClosed(function (event) {
console.log(event);
console.log("Connection closed");
});
presence.onDataReceived(function (data) {
memorizeApp.onDataReceived(data);
});
presence.listUsers(function (users) {
console.log(users)
});
}