import { paths } from "../systems/userinput/paths"; /** * Toggles freezing of network traffic on the given event. * @namespace network * @component freeze-controller */ AFRAME.registerComponent("freeze-controller", { schema: { toggleEvent: { type: "string" } }, init: function() { this.onToggle = this.onToggle.bind(this); }, play: function() { this.el.addEventListener(this.data.toggleEvent, this.onToggle); }, pause: function() { this.el.removeEventListener(this.data.toggleEvent, this.onToggle); }, tick: function() { const userinput = AFRAME.scenes[0].systems.userinput; const ensureFrozen = userinput.frame[paths.actions.ensureFrozen]; const thaw = userinput.frame[paths.actions.thaw]; const toggleFreezeDueToInput = (this.el.is("frozen") && thaw) || (!this.el.is("frozen") && ensureFrozen); if (toggleFreezeDueToInput) { this.onToggle(); } }, onToggle: function() { window.APP.store.update({ activity: { hasFoundFreeze: true } }); NAF.connection.adapter.toggleFreeze(); if (NAF.connection.adapter.frozen) { this.el.emit("play_freeze_sound"); this.el.addState("frozen"); } else { this.el.emit("play_thaw_sound"); this.el.removeState("frozen"); } } });