$(function(){ // FORMの各項目に設定を読み込み function setFormValues(values) { var cv; $('input, select').each(function(){ if (typeof(values[$(this).attr('name')]) != 'undefined') { cv = values[$(this).attr('name')]; switch ($(this).attr('type')) { case 'radio': if($(this).val() == cv) $(this).prop('checked', true); else $(this).prop('checked', false); break; case 'checkbox': $(this).prop('checked', cv); break; default: $(this).val(cv); break; } } }); } // カスタム設定を読み込み function setCustomPreset() { $('select[name="sltCsCustom"] > option').each(function(){ var key = 'optCysCustom' + this.value; if (key in cookieVal) { this.setAttribute('data-settings', cookieVal[key]); } }); } $(".img-radio input") .on('click', function(e) { // タブボタンの制御 $('li', $(this).closest('.img-radio')).removeClass('active'); $(this).closest('li').addClass('active'); }); $(".tab input") .on('click', function(e) { var tabWinId = '#tab' + $(this).val(); if ($(this).val() == 'Normal') { $('.liveSetting').css('display', 'none'); } else { $('.liveSetting').css('display', 'block'); } // タブ本体の制御 $('.tabWin', $(tabWinId).closest('.tabWins')).removeClass('active'); $(tabWinId).addClass('active'); }); // リセットボタン $('input.reset') .click( function(event) { // ?ボックスの表示 var $target = $(this).prevAll('input:not(:button), select').first(); var defVal = $target.prop('defaultValue') || $target.prop('defaultChecked') || $target.find('option[selected]').val(); switch (typeof defVal) { case 'boolean': $target.prop('checked', defVal); break; default: $target.val(defVal); break; } }); // 全リセットボタン $('input:button[name=btnReset]') .click( function(event) { $('input.reset:visible').trigger('click'); }); // ?ボックスの中身のテキスト var hatena = []; // 共通 hatena['chkBgmAuto'] = 'BGMの自動再生を設定します。うっかり再生の防止にどうぞ。'; // ライブ共通 hatena['sltLivQuolity'] = 'ライブ壁紙の描画サイズを変更し、負荷の低減を測ります。……ただ、検証したところ殆ど設定による違いが見られなかったため、環境によっては有効かもしれない程度の項目です。'; hatena['chkLivStats'] = 'ライブ壁紙の描画処理のFPSを右下に表示します。表示しないと、多少処理が軽くなります。'; // 普通 hatena['clrPlain'] = '壁紙を単色にします。のっぺり。透過壁紙の場合の背景色もこれになります。'; hatena['chkNmlFestival'] = '年中行事の日(正月など)に壁紙が自動で切り替わるかの設定です。'; hatena['chkNmlGradation'] = '普通の壁紙にグラデーション効果をかけるかの設定です。'; hatena['numNmlGrdDeg'] = 'グラデーションの角度です。'; hatena['clrNmlGrdA'] = 'グラデーションの始まりの色です。'; hatena['rngNmlGrdAa'] = 'グラデーションの始まりの色の透過度です。左端で透明・右端で透過なしです。'; hatena['clrNmlGrdB'] = 'グラデーションの終わりの色です。'; hatena['rngNmlGrdBa'] = 'グラデーションの終わりの色の透過度です。左端で透明・右端で透過なしです。'; // フィーブル城 hatena['sltFblOneDay'] = '壁紙内の1日の経過にかかる時間です。'; hatena['sltFblClouds'] = '空を漂う雲の数です。少ないほど処理も心も晴れやかになります。'; hatena['sltFblStars'] = '夜空に光る星の数です。多いとCPUも心奪われ処理が遅れます。'; // サイバー空間 hatena['clrCysPlain'] = 'スフィアの壁紙を単色にします。のっぺり。壁紙を指定した場合の基本色もこれになります(真っ白だと補正なし)。'; hatena['chkCysFestival'] = '年中行事の日(正月など)に壁紙(電網空間)が自動で切り替わるかの設定です。'; hatena['clrCysFog'] = 'フォグ(霞み)の色を設定します。遠いほど設定した色にぼやけます。'; hatena['clrCysAmbientLight'] = 'アンビエントライト(平行光源)の色を設定します。全体の大まかな色合いが決まります。'; hatena['clrCysPointLight'] = '下からライトアップしているポイントライト(点光源)の色を設定します。主に下半分の色が決まります。'; hatena['clrCysRing'] = '回転しているサイバーリングの色です。悪魔召喚とかできません。'; hatena['sltCysParticles'] = '上昇していく粒子の数です。多くてもI=D Fuelが回復したりはしません。'; hatena['clrCysParticles'] = '上昇していく粒子の色です。可能性無限大。'; // あの星 hatena['clrAnoBack'] = '出会いはふとした瞬間な色です。反転のときにちょっと色が変わります。'; hatena['sltAnoHoshi'] = 'あの日見た星の数です。反転間隔は、星の落ちた数で決まっているため、減らすと反転までの時間も長くなります。'; hatena['sltAnoClimax'] = '君と冬の終わりな感じです。星の落ちた数と連動しているため、星の数が少ないと間隔を短く設定しても効果が薄いです。'; hatena['clrAnoClimax'] = '将来の夢が決定しそうな色です。RGBの値が255(0xFF)に設定されている色は、乗算ではなく、固定で255になります。明るい色にしないとお先真っ暗な感じになります。'; hatena['chkAnoKing'] = '藩王ちょっと邪魔なんで、そこどいて下さい。'; // ?ボックス $('input.hatena') .click( function(event) { // ?ボックスの表示 var targetName = $(this).prevAll('input:not(:button), select').first().attr('name'); $('#boxHatena p').text(hatena[targetName]); var posX = $(this).position().left + 24 + 'px'; var posY = $(this).position().top + 4 + 'px'; $('#boxHatena').css({'left':posX, 'top':posY}); $('#boxHatena').show(150); return false; }); // クリックしたら?ボックスを消す $(document) .on('click', function() { $('#boxHatena').hide(150); }); // プリセットを設定ボタン $('input[name="btnCsPreset"]') .on('click', function() { var vals = []; var hashes = $('select[name="sltCsPreset"]').val().split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vals[hash[0]] = hash[1]; } setFormValues(vals); }); // カスタム設定を設定ボタン $('input[name="btnCsCustomLoad"]') .on('click', function() { var vals = []; var hashes = $('select[name="sltCsCustom"] > option:selected')[0].getAttribute('data-settings').split('&'); for(var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); vals[hash[0]] = hash[1]; } setFormValues(vals); }); // カスタム設定に保存ボタン $('input[name="btnCsCustomSave"]') .on('click', function() { if (!window.confirm('設定を上書きします。本当に大丈夫ですか?')) return false; var hashes = $('#tabCyberSpace').find('input:not(:button), select').not('.not-saving').serialize().replace(/\%23/g, '#'); var no = $('select[name="sltCsCustom"]').val(); // 画面の選択肢の更新 $('select[name="sltCsCustom"] > option:selected')[0].setAttribute('data-settings', hashes); // クッキーを更新 document.cookie = 'CYS_CUSTOM' + no + '=' + hashes; window.alert('保存しました'); }); $('#form-setting') .submit( function() { $('#nowSaving').show(); // リンクをAjaxリクエスト var $form = $(this); $('#cntMainFrame').ajaxLoad({ type: $form.attr('method'), url: $form.attr('action'), data: $form.serializeArray() }); return false; }); // Save実行時のクリック禁止 $('#nowSaving') .on('click', function(){ return false; }); // FORMの各要素に値を設定 setFormValues(cookieVal); setCustomPreset(); $('input[name=rdoWpName]:checked').trigger('click'); });