window.Options = {}; (function(){ var optionsDOM = $("#options"); var text_speed_slider = $("#text_speed_slider"); var text_speed_preview = $("#text_speed_preview"); var volume_slider = $("#volume_slider"); text_speed_slider.oninput = function(){ updateText(); }; volume_slider.oninput = function(){ Howler.volume(parseFloat(volume_slider.value)); }; var text_automatic_toggle = $("#text_automatic_toggle"); text_automatic_toggle.onclick = function(){ if(!Game.CLICK_TO_ADVANCE){ HOW_MANY_PROMPTS = 1; } Game.CLICK_TO_ADVANCE = !Game.CLICK_TO_ADVANCE; text_automatic_toggle.innerHTML = Game.CLICK_TO_ADVANCE ? "on click" : "automatically"; }; /////////////////////////////////// // CLICK TO ADVANCE // /////////////////////////////////// var HOW_MANY_PROMPTS = 2; var ctaAlpha = 1; var click_to_advance = $("#click_to_advance"); click_to_advance.style.display = "none"; subscribe("show_click_to_advance", function(){ if(HOW_MANY_PROMPTS>0){ click_to_advance.style.display = "block"; blinkCTA(); HOW_MANY_PROMPTS--; } }); subscribe("hide_click_to_advance", function(){ click_to_advance.style.display = "none"; }); var blinkCTA = function(){ if(click_to_advance.style.display=="block"){ ctaAlpha = (ctaAlpha==1) ? 0 : 1; click_to_advance.style.opacity = ctaAlpha; setTimeout(blinkCTA, 700); } }; /////////////////////////////////// // For previewing the text speed // /////////////////////////////////// Options.update = function(){ // Timeout callbacks... for(var i=0; i<_timeoutCallbacks.length; i++){ var tc = _timeoutCallbacks[i]; tc.timeLeft -= 1000/60; if(tc.timeLeft<=0){ tc.callback(); _timeoutCallbacks.splice(i,1); // delete that one i -= 1; // set index back one } } }; var _timeoutCallbacks = []; var _setTimeout = function(callback, interval){ _timeoutCallbacks.push({ callback: callback, timeLeft: interval }); }; var _clearAllTimeouts = function(){ _timeoutCallbacks = []; }; var updateText = function(){ var div = text_speed_preview; // Calculate text speed... var t = parseFloat(text_speed_slider.value); t = (1-t); // whoops, flip around // Log slider, from 30 to 120, with 50 "in the middle" // f(0)=20, f(0.5)=50(+30), f(1)=120(+100) var speed = Math.round( 20 + Math.exp(t*2.5)*9 ); // close enough Game.TEXT_SPEED = speed; // Clear previous crap _clearAllTimeouts(); div.innerHTML = ""; // What's the dialogue? var dialogue = Game.TEXT_SPEED<80 ? "Speak this fast" : "Speak this slow"; // Put in the text var span, chr; for(var i=0; i