ライブラリその2

;==================
; addnsadir
;==================
;addnsadir命令の上書き
*addnsadir
getparam $addnsadir_input
if $addnsadir_input="" return ; 空欄なら何もしない。
if $addnsadir_input=$addnsadir_cache return ; 現在の設定と同じなら何もしない。
fileexist %addnsadir_input,$addnsadir_input
if %addnsadir_input=0 mesbox "「"+$addnsadir_input+"」は存在しません。","警告"
if %addnsadir_input=0 mesbox "この後の動作は保証できません。","警告"
if %addnsadir_input=0 return
_addnsadir $addnsadir_input
mov $addnsadir_cache,$addnsadir_input
return
;==================
; get_addnsadir
;==================
;現在、addnsadirに設定されているディレクトリを取得する。
*get_addnsadir
getparam s%addnsadir_cache
mov $%addnsadir_cache,$addnsadir_cache
return
;==================
; get_registory
;==================
;getregのラッパー。番号を入れると、その番号に対応したディレクトリを返す。
*get_registory
getparam s%reg_var,%reg_key
mov $%reg_var,""
if %reg_key<1 return
if %reg_key>REGISTRY_LAST return
skip %reg_key
mov $reg_key,"Software\07th_Expansion\higurasi":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi2":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi3":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi4":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi5":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi6":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi7":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi8":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\higurasi9":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko1":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko2":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko3":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko4":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko5":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko6":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko7":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\07th_Expansion\Umineko8":mov $reg_var,"gamedir":goto *get_registory_next
mov $reg_key,"Software\TYPE-MOON\月姫":mov $reg_var,"directory":goto *get_registory_next
mov $reg_key,"Software\TYPE-MOON\歌月十夜":mov $reg_var,"directory":goto *get_registory_next
*get_registory_next
getreg $%reg_var,$reg_key,$reg_var
if $%reg_var="" return
; ここから、末尾に\をつける作業
len %reg_len,$%reg_var
mid $reg_len,$%reg_var,%reg_len-1,1
notif $reg_len="\" add $%reg_var,"\"
return
;==================
; recommend
;==================
; あるソフトが入っているかどうかを確認する。
; 第一引数は結果を受け取る引数
; 第二引数は調べたいソフトの番号。番号はget_registoryの指定と同じ。
; 第三引数はモード。なかった場合の動作を規定する。0なら警告のみ。1なら終了質問。2なら強制終了。
*recommend
getparam i%recommend_result,%recommend_id,%recommend_mode
mov %%recommend_result,1
get_registory $recommend_id,%recommend_id
notif $recommend_id="" return
mov %%recommend_result,0
mesbox "この環境には、必要なソフトがインストールされていない可能性があります。","警告"
mesbox "何が必要かは付属のマニュアルをお読みください。","警告"
if %recommend_mode=0 return
if %recommend_mode=2 end
mesbox "このまま実行を続けると、重大な支障が発生する恐れがあります。","警告"
yesnobox %recommend_id,"このまま続けますか?","警告"
if %recommend_id=0 end
return
;==================
; chnsa
;==================
; addnsadirとget_registoryを組み合わせたラッパー
*chnsa
getparam %chnsa_id
get_registory $chnsa_id,%chnsa_id
if $chnsa_id="" return
addnsadir $chnsa_id
mov %chnsa_cache,%chnsa_id
return
;==================
; get_chnsa
;==================
; 現在どの環境にしてあるかを取得する。
*get_chnsa
getparam i%chnsa_id
mov %%chnsa_id,%chnsa_cache
return
;==================
; music_set
;==================
; 音楽ファイルのおいてあるディレクトリを指定します。
; 引数に与える数字は、get_registoryで使われるものと同じです。
*music_set
getparam %music_set_input
get_registory $music_set_cache,%music_set_input
if $music_set_cache="" return
mov %music_set_cache,%music_set_input
return
;==================
; music_off
; music_on
; music_mode
;==================
; 外部に探しに行くか行かないかを変更します。
; onにすれば探しに行きます。offにすれば探しに行きません。modeは現在のモードを取得します。
; デフォルトではonになっています。
*music_on
mov %music_set_mode,0
return
*music_off
mov %music_set_mode,1
return
*music_mode
getparam i%music_set_input
mov %%music_set_input,%music_set_mode
return
;==================
; music_translate
;==================
*music_translate
getparam s%music_file
if %music_set_mode=0 mov $%music_file,$music_set_cache+$%music_file
return
;==================
; music_ch_verify
;==================
; チャンネル番号が正しいかどうか。
*music_ch_verify
getparam i%music_set_result,%music_set_input
mov %%music_set_result,0
if %music_set_input>=0 && %music_set_input<50 mov %%music_set_result,1
if %%music_set_result=1 return
itoa $music_set_input,%music_set_input
add $music_set_input,"はチャンネル番号として正しくありません。(0-49)"
mesbox $music_set_input,"チャンネル番号を確認してください。"
return

;==================
; volume_mode_on
; volume_mode_off
; volume_mode
;==================
; 上書きしたchvolを使うか使わないか。また、現在の状態を取得。
; デフォルトは「使用しない」
*volume_mode_on
mov %dwave_vol,1
return
*volume_mode_off
mov %dwave_vol,0
return
*volume_mode
getparam i%music_set_result
mov %%music_set_result,%dwave_vol
return

;==================
; 上書き音楽系命令
;==================

*bgm
getparam $bgm_file
music_translate $bgm_file
_bgm $bgm_file
if %dwave_vol=1 _bgmvol ?dwave_vol[50]
return

*bgmonce
getparam $bgm_file
music_translate $bgm_file
_bgmonce $bgm_file
if %dwave_vol=1 _bgmvol ?dwave_vol[50]
return

*loopbgm
getparam $bgm_file,$bgm_file2
music_translate $bgm_file
music_translate $bgm_file2
_loopbgm $bgm_file,$bgm_file2
if dwave_vol=1 bgmvol ?dwave_vol[50]
return

*dwave
getparam %dwave_ch,$dwave_file
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
music_translate $dwave_file
_dwave %dwave_ch,$dwave_file
if %dwave_vol=1 _chvol %dwave_ch,?dwave_vol[%dwave_ch]
return

*dwaveload
getparam %dwave_ch,$dwave_file
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
music_translate $dwave_file
_dwaveload %dwave_ch,$dwave_file
return

*dwaveloop
getparam %dwave_ch,$dwave_file
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
music_translate $dwave_file
_dwaveloop %dwave_ch,$dwave_file
if %dwave_vol=1 _chvol %dwave_ch,?dwave_vol[%dwave_ch]
return

*dwaveplay
getparam %dwave_ch
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
_dwaveplay %dwave_ch
if %dwave_vol=1 _chvol %dwave_ch,?dwave_vol[%dwave_ch]
return

*dwaveplayloop
getparam %dwave_ch
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
_dwaveplayloop %dwave_ch
if %dwave_vol=1 _chvol %dwave_ch,?dwave_vol[%dwave_ch]
return

*chvol
getparam %dwave_ch,%dwave_temp
music_ch_verify %dwave_check,%dwave_ch
if %dwave_check=0 return
mov ?dwave_vol[%dwave_ch],%dwave_temp
_chvol %dwave_ch,?dwave_vol[%dwave_ch]
return

*bgmvol
getparam %dwave_temp
mov ?dwave_vol[50],%dwave_temp
_bgmvol ?dwave_vol[50]
return