// // Created by Luis Cuenca on 5/24/18 // Copyright 2018 High Fidelity, Inc. // // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // /* jslint bitwise: true */ /* global Script, AvatarManager, GlobalDebugger, Tablet */ (function(){ Script.registerValue("TRANSITAPP", true); var TABLET_BUTTON_NAME = "TRANSIT"; var HTML_URL = Script.resolvePath("./transitApp.html"); var MSG_DOCUMENT_LOADED = 0; var MSG_CREATE = 1; var MSG_REFRESH = 2; var MESSAGES_CHANNEL_REFRESH = "com.highfidelity.interface.transitApp:refresh"; Messages.subscribe(MESSAGES_CHANNEL_REFRESH); var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var tabletButton = tablet.addButton({ text: TABLET_BUTTON_NAME, icon: Script.resolvePath("./transit-i.svg"), activeIcon: Script.resolvePath("./transit-a.svg") }); var Data = function(isDistanceBased, triggerDistance, frameCount, framesPerMeter) { this.isDistanceBased = isDistanceBased; this.triggerDistance = triggerDistance; this.frameCount = frameCount; this.framesPerMeter = framesPerMeter; } var transitData = AvatarManager.getAvatarTransitData(); var shown = false; function manageClick() { if (shown) { tablet.gotoHomeScreen(); } else { tablet.gotoWebScreen(HTML_URL); } } tabletButton.clicked.connect(manageClick); function onScreenChanged(type, url) { console.log("Screen changed"); if (type === "Web" && url === HTML_URL) { tabletButton.editProperties({isActive: true}); if (!shown) { // hook up to event bridge tablet.webEventReceived.connect(onWebEventReceived); } shown = true; } else { tabletButton.editProperties({isActive: false}); if (shown) { // disconnect from event bridge tablet.webEventReceived.disconnect(onWebEventReceived); } shown = false; } } function onWebEventReceived(msg) { var message = JSON.parse(msg); switch(message.type) { case MSG_REFRESH: { refresh(message.data, msg); break; } case MSG_DOCUMENT_LOADED: { tablet.emitScriptEvent(JSON.stringify( { "type": MSG_CREATE, "data": transitData } )); break; } } } tablet.screenChanged.connect(onScreenChanged); function shutdownTabletApp() { tablet.removeButton(tabletButton); if (shown) { tablet.webEventReceived.disconnect(onWebEventReceived); tablet.gotoHomeScreen(); } tablet.screenChanged.disconnect(onScreenChanged); } function setTransitValues(data) { AvatarManager.setAvatarTransitData(data); return; } function refresh(data, msg) { setTransitValues(data); Messages.sendMessage(MESSAGES_CHANNEL_REFRESH, msg); } Messages.messageReceived.connect(function(channel, message, senderID) { if (channel === MESSAGES_CHANNEL_REFRESH) { transitData = JSON.parse(message).data; setTransitValues(transitData); if (transitData) { tablet.emitScriptEvent(JSON.stringify( { "type": MSG_CREATE, "data": transitData } )); } } }); Script.scriptEnding.connect(function () { shutdownTabletApp(); }); }());