/* 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) }); }