/* 効果音の音量つまみ(2026-08-11 K1指示)。 サウンドエディター(editor_sound.html)で決めた音ごとの倍率を、ゲーム側の再生に掛ける。 idは sfx_ingame.json と同じ `cls:キー` / `raid:キー` の形。 保存はこの端末のlocalStorageなので、決定版はエディターの「コピー」でJSONを渡して焼き込む。 */ (function(){ 'use strict'; var KEY='hzg_sfx_vol_v1'; /* 焼き込み値(エディターのコピーで更新)。1.0=素材のまま。ここに無い音は1.0 */ var BAKED={}; var vol=null; function load(){ vol={}; for(var k in BAKED) vol[k]=BAKED[k]; try{ var d=JSON.parse(((typeof window!=='undefined'&&window.HZG_BUILD)?null:localStorage.getItem(KEY))||'null'); // 本編では端末調整を読まない(2026-08-13 K1決定) if(d && d.v) for(var k2 in d.v) vol[k2]=d.v[k2]; }catch(e){} return vol; } /* 倍率を返す。part='cls'|'raid'、name=表のキー */ window.hzgSfxVol=function(part, name){ if(!vol) load(); var v=vol[part+':'+name]; return (typeof v==='number' && v>=0) ? v : 1; }; /* 曲の倍率(2026-08-30 K1指示)。idは 'bgm:キー'。効果音と同じ保存に相乗り */ window.hzgBgmVol=function(name){ if(!vol) load(); var v=vol['bgm:'+name]; return (typeof v==='number' && v>=0) ? v : 1; }; window.hzgSfxVolAll=function(){ if(!vol) load(); return vol; }; window.hzgSfxVolSet=function(id, v){ if(!vol) load(); if(v===null || v===1) delete vol[id]; else vol[id]=v; try{ localStorage.setItem(KEY, JSON.stringify({version:1, v:vol})); }catch(e){} }; window.hzgSfxVolReload=load; window.HZG_SFX_VOL_BAKED=BAKED; })();