function zeroPad(num, places) { let zero = places - num.toString().length + 1; return Array(+(zero > 0 && zero)).join("0") + num; } const preloadImage = src => new Promise((resolve, reject) => { const image = new Image() image.onload = resolve image.onerror = reject image.src = src }) function generateElements(html) { const template = document.createElement('template'); template.innerHTML = html.trim(); return template.content.children[0]; } function isSlideShow(num){ return database["subbg"].filter(x => x.value == num)[0]["multi"] ?? false; } function isScroll(num){ //238-255 200-213 if((num >= 238 && num <= 255 )|| (num>=200 && num <=213)){ return true; }else{ return false; } } function isVideo(num){ return database["subbg"].filter(x => x.value == num)[0]["video"] ?? false; } let nemsys_selector = document.querySelector('#nemsys_select'); nemsys_selector.addEventListener('change', ()=>{ let preview = document.querySelector('#nemsys_pre'); let preview_fade = document.querySelector('#nemsys_pre_fade'); let value = nemsys_selector.value; preview.classList.toggle('fade'); preview_fade.setAttribute("src", "static/asset/nemsys/nemsys_" + zeroPad(value, 4) + ".png"); preview_fade.classList.toggle('fade'); setTimeout(()=>{ preview.setAttribute("src", "static/asset/nemsys/nemsys_" + zeroPad(value, 4) + ".png"); preview.classList.toggle('fade'); preview_fade.classList.toggle('fade'); },500); }); document.querySelector('#nemsys_pre').addEventListener('mousemove', (e)=>{ let x = e.layerX; let y = e.layerY; let preview = document.querySelector('#nemsys_pre'); let width = preview.clientWidth; let height = preview.clientHeight; let yRot = 10 * ((x - width / 2) / width); let xRot = -10 * ((y - height / 2) / height); let string = 'perspective(500px) scale(1) rotateX(' + xRot + 'deg) rotateY(' + yRot + 'deg)' preview.style.transform = string; preview.style.transition = 'transform 0s'; }); document.querySelector('#nemsys_pre').addEventListener('mouseout', (e)=>{ let preview = document.querySelector('#nemsys_pre'); let string = 'perspective(500px) scale(1) rotateX(0) rotateY(0)' preview.style.transform = string; preview.style.transition = 'transform 0.5s'; }); let subbg_select = document.querySelector('[name="subbg"]'); let interval; let cnt = 1; subbg_select.addEventListener('change', ()=>{ let preview = document.querySelector('#sub_pre'); let preview_fade = document.querySelector('#sub_pre_fade'); let value = subbg_select.value; preview.classList.toggle('fade'); if(isSlideShow(value)){ preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); }else{ preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".png"); } preview_fade.classList.toggle('fade'); clearInterval(interval); cnt = 1; setTimeout(()=>{ preview.classList.toggle('fade'); preview_fade.classList.toggle('fade'); if(isSlideShow(value)){ preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); }else{ preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".png"); } },500); if(isSlideShow(value)){ interval = setInterval(()=>{ if(cnt == 1){ preview.classList.toggle('fade'); preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_02.png"); preview_fade.classList.toggle('fade'); setTimeout(()=>{ preview.classList.toggle('fade'); preview_fade.classList.toggle('fade'); preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_02.png"); },500); cnt = 2; }else if(cnt == 2){ preview.classList.toggle('fade'); preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_03.png"); preview_fade.classList.toggle('fade'); setTimeout(()=>{ preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_03.png"); preview.classList.toggle('fade'); preview_fade.classList.toggle('fade'); },500); cnt = 3; }else{ preview.classList.toggle('fade'); preview_fade.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); preview_fade.classList.toggle('fade'); setTimeout(()=>{ preview.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + "_01.png"); preview.classList.toggle('fade'); preview_fade.classList.toggle('fade'); },500); cnt = 1; } }, 1000); }else if(isVideo(value)){ preview.setAttribute("style", "display: none;") preview_fade.setAttribute("style", "display: none;") let video = document.querySelector('#sub_video_pre'); video.setAttribute("style", "display: block;") video.setAttribute("src", "static/asset/submonitor_bg/subbg_" + zeroPad(value, 4) + ".mp4"); video.setAttribute("autoplay", ""); video.setAttribute("loop", ""); }else{ clearInterval(interval); let video = document.querySelector('#sub_video_pre'); video.setAttribute("style", "display: none;") video.pause(); preview.setAttribute("style", "") preview_fade.setAttribute("style", "") } }); let audioContext = new AudioContext(); let play = audioContext.createBufferSource(); let gain = audioContext.createGain(); play.connect(gain); gain.connect(audioContext.destination); gain.gain.value = 0.5; $('[name="bgm"]').change(function() { // $('#custom_0').attr("src", "static/asset/audio/custom_" + zeroPad($('[name="bgm"]').val(), 2) + "/0.mp3"); $('#custom_1').attr("src", "static/asset/audio/custom_" + zeroPad($('[name="bgm"]').val(), 2) + "/1.mp3"); if ($('[name="bgm"]').val() == 99) { // $('#custom_0').attr("src", "static/asset/audio/special_00/0.m4a"); $('#custom_1').attr("src", "static/asset/audio/custom_00/1.m4a"); } // $('#custom_0').prop("volume", 0.5); $('#custom_1').prop("volume", 0.2); $('#play_sel').animate({ 'opacity': 0 }, 200, function() { $(this).text('Play').animate({ 'opacity': 1 }, 200); }); play_sel = false; if(play.state == "running"){ play.stop(); } fetch("static/asset/audio/custom_" + zeroPad($('[name="bgm"]').val(), 2) + (typeof database["bgm"][$('[name="bgm"]').val()].file === 'undefined' ? "/0.mp3":database["bgm"][$('[name="bgm"]').val()].file)) .then(res => res.arrayBuffer()) .then(arrayBuffer => audioContext.decodeAudioData(arrayBuffer)) .then(audioBuffer => { play.buffer = null; play = audioContext.createBufferSource(); gain = audioContext.createGain(); play.connect(gain); gain.connect(audioContext.destination); gain.gain.value = 0.2; play.buffer = audioBuffer; play.loop = true; // play.loopStart = 1.2; // play.loopEnd = 22.7; play.loopStart = database["bgm"][$('[name="bgm"]').val()].loopStart ?? 0; play.loopEnd = database["bgm"][$('[name="bgm"]').val()].loopEnd ?? 30; $('#play_bgm').prop("disabled", false); }); //disable play button $('#play_bgm').prop("disabled", true); $('#play_bgm').animate({ 'opacity': 0 }, 200, function() { $(this).text('Play').animate({ 'opacity': 1 }, 200); }); audioContext.suspend() play_bgm = false; first = true; }); let testcurrent = 2.8; async function test(){ let audioContext = new AudioContext(); let play = audioContext.createBufferSource(); let gain = audioContext.createGain(); play.connect(gain); gain.connect(audioContext.destination); gain.gain.value = 0.5; let res = await fetch("static/asset/audio/custom_23/0.mp3"); let arrayBuffer = await res.arrayBuffer(); let audioBuffer = await audioContext.decodeAudioData(arrayBuffer); play.buffer = audioBuffer; play.loop = true; play.loopStart = 4.6; play.loopEnd = 20; play.start(audioContext.currentTime, 0); } $('[name="stampA"]').change(function() { $('#a_pre').fadeOut(200, () => { let stamp = $('[name="stampA"]').val(); if (stamp == 0) { $('#a_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#a_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#a_pre').fadeIn(200); }); $('[name="stampB"]').change(function() { $('#b_pre').fadeOut(200, () => { let stamp = $('[name="stampB"]').val(); if (stamp == 0) { $('#b_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#b_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#b_pre').fadeIn(200); }); $('[name="stampC"]').change(function() { $('#c_pre').fadeOut(200, () => { let stamp = $('[name="stampC"]').val(); if (stamp == 0) { $('#c_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#c_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#c_pre').fadeIn(200); }); $('[name="stampD"]').change(function() { $('#d_pre').fadeOut(200, () => { let stamp = $('[name="stampD"]').val(); if (stamp == 0) { $('#d_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#d_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#d_pre').fadeIn(200); }); $('[name="stampA_R"]').change(function() { $('#ar_pre').fadeOut(200, () => { let stamp = $('[name="stampA_R"]').val(); if (stamp == 0) { $('#ar_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#ar_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#ar_pre').fadeIn(200); }); $('[name="stampB_R"]').change(function() { $('#br_pre').fadeOut(200, () => { let stamp = $('[name="stampB_R"]').val(); if (stamp == 0) { $('#br_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#br_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#br_pre').fadeIn(200); }); $('[name="stampC_R"]').change(function() { $('#cr_pre').fadeOut(200, () => { let stamp = $('[name="stampC_R"]').val(); if (stamp == 0) { $('#cr_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#cr_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#cr_pre').fadeIn(200); }); $('[name="stampD_R"]').change(function() { $('#dr_pre').fadeOut(200, () => { let stamp = $('[name="stampD_R"]').val(); if (stamp == 0) { $('#dr_pre').attr("src", "static/asset/nostamp.png"); } else { let group = Math.trunc((stamp - 1) / 4 + 1); let item = stamp % 4; if (item == 0) item = 4; $('#dr_pre').attr("src", "static/asset/chat_stamp/stamp_" + zeroPad(group, 4) + "/stamp_" + zeroPad(group, 4) + "_" + zeroPad(item, 2) + ".png"); } }); $('#dr_pre').fadeIn(200); }); let disable_bg = false; $('[name="mainbg"]').change(function() { let filestr = "" disable_bg = false; let bg_color = document.querySelector('.card').style["background-color"] document.querySelector('.card').style["background-color"] = bg_color.length == 9 ? bg_color.substring(0, bg_color.length - 2) + "99" : bg_color; switch($('[name="mainbg"]').val()){ case "0": filestr = "" disable_bg = true; document.querySelector('.card').style["background-color"] = bg_color.length == 9 ? bg_color.substring(0, bg_color.length - 2) : bg_color; break; case "1": filestr = "booth" break; case "2": filestr = "ii" break; case "3": filestr = "iii" break; } let video = document.querySelector('#mainbg_video_pre'); // video.setAttribute("style", "") video.setAttribute("src", 'static/asset/video/'+filestr+'.mp4'); video.setAttribute("autoplay", ""); video.setAttribute("loop", ""); }); // $('#custom_0').on('ended', function() { // $('#custom_0').currentTime = 0; // $('#play_bgm').animate({ 'opacity': 0 }, 200, function() { // $(this).text('Play').animate({ 'opacity': 1 }, 200); // }); // play_bgm = false; // }); $('#custom_1').on('ended', function() { $('#custom_1').currentTime = 0; $('#play_sel').animate({ 'opacity': 0 }, 200, function() { $(this).text('Play').animate({ 'opacity': 1 }, 200); }); play_sel = false; }); let profile_data, database; let play_bgm = false; let play_sel = false; let first = true; let bg_opacity = false; const getPreferredScheme = () => window?.matchMedia?.('(prefers-color-scheme:dark)')?.matches ? 'dark' : 'light'; window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { const newColorScheme = event.matches ? "true" : "false"; document.querySelector('.card').style["background-color"] = newColorScheme ? "#0a0a0a99" : "#ffffff99"; }); document.addEventListener('DOMContentLoaded', function() { profile_data = JSON.parse(document.getElementById("data-pass").innerText); let colorScheme = getPreferredScheme() === 'dark'; document.querySelector('.card').style["background-color"] = colorScheme ? "#0a0a0a99" : "#ffffff99"; fetch("static/asset/json/data.json") .then(res => {return res.json()}) .then(json => { database = json; let nemsys = document.querySelector('#nemsys_select'); let nemsys_option = "" json["nemsys"].forEach(x => { nemsys_option += ``; }); nemsys.innerHTML = nemsys_option; nemsys.value = profile_data["nemsys"]; nemsys.dispatchEvent(new Event('change')); let subbg = document.querySelector('[name="subbg"]'); let subbg_option = "" json["subbg"].forEach(x => { subbg_option += ``; }); subbg.innerHTML = subbg_option; subbg.value = profile_data["subbg"]; subbg.dispatchEvent(new Event('change')); let bgm = document.querySelector('[name="bgm"]'); let bgm_option = "" json["bgm"].forEach(x => { bgm_option += ``; }); bgm.innerHTML = bgm_option; bgm.value = profile_data["bgm"]; bgm.dispatchEvent(new Event('change')); let akaname = document.querySelector('[name="akaname"]'); let akaname_option = "" json["akaname"].forEach(x => { akaname_option += ``; }); akaname.innerHTML = akaname_option; akaname.value = profile_data["akaname"]; akaname.dispatchEvent(new Event('change')); let appeal_frame = document.querySelector('[name="appeal_frame"]'); appeal_frame.value = profile_data["appeal_frame"]; let support_team = document.querySelector('[name="support_team"]'); support_team.value = profile_data["support_team"]; let stampA = document.querySelector('[name="stampA"]'); let stampB = document.querySelector('[name="stampB"]'); let stampC = document.querySelector('[name="stampC"]'); let stampD = document.querySelector('[name="stampD"]'); let stampA_R = document.querySelector('[name="stampA_R"]'); let stampB_R = document.querySelector('[name="stampB_R"]'); let stampC_R = document.querySelector('[name="stampC_R"]'); let stampD_R = document.querySelector('[name="stampD_R"]'); let stampOptions = ""; json["stamp"].forEach(x => { stampOptions += ``; }); stampA.innerHTML = stampOptions; stampB.innerHTML = stampOptions; stampC.innerHTML = stampOptions; stampD.innerHTML = stampOptions; stampA_R.innerHTML = stampOptions; stampB_R.innerHTML = stampOptions; stampC_R.innerHTML = stampOptions; stampD_R.innerHTML = stampOptions; stampA.value = profile_data["stampA"]; stampB.value = profile_data["stampB"]; stampC.value = profile_data["stampC"]; stampD.value = profile_data["stampD"]; stampA_R.value = profile_data["stampA_R"]; stampB_R.value = profile_data["stampB_R"]; stampC_R.value = profile_data["stampC_R"]; stampD_R.value = profile_data["stampD_R"]; stampA.dispatchEvent(new Event('change')); stampB.dispatchEvent(new Event('change')); stampC.dispatchEvent(new Event('change')); stampD.dispatchEvent(new Event('change')); stampA_R.dispatchEvent(new Event('change')); stampB_R.dispatchEvent(new Event('change')); stampC_R.dispatchEvent(new Event('change')); stampD_R.dispatchEvent(new Event('change')); let mainbg = document.querySelector('[name="mainbg"]'); let mainbg_option = "" json["mainbg"].forEach(x => { mainbg_option += ``; }); mainbg.innerHTML = mainbg_option; mainbg.value = profile_data["mainbg"]; mainbg.dispatchEvent(new Event('change')); setTimeout(()=>{ document.querySelector('#mainbg_video_pre').play(); }, 500) document.querySelector('html.has-aside-left.has-aside-mobile-transition.has-navbar-fixed-top.has-aside-expanded body div#app div#main-content.content div.simplebar-wrapper div.simplebar-mask div.simplebar-offset div.simplebar-content-wrapper div.simplebar-content') .style["overflow-y"] = "auto"; // document.querySelector('.uiblocker').style.display = 'none'; document.querySelector('.uiblocker').classList.toggle('fade'); }); // let custom_0 = document.querySelector('#custom_0'); let custom_1 = document.querySelector('#custom_1'); // custom_0.volume = 0.5; custom_1.volume = 0.2; let play_bgm_button = generateElements('