public/sfx_volume.js

効果音音量設定コード

40行 · 1,733 bytes · SHA-256 1c12200425de2c6090d7bf4e531874f46afad48fd0930c752cdb6d62a8c2a14b

分割 1/1
/* 効果音の音量つまみ(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;
})();