getnsadir

id:eiji8pou:20050604:1117812937 の続きと言うか焼き直し

numalias getnsadir_dir
numalias getnsadir_content
numalias getnsadir_contentnum
numalias getnsadir_key
numalias getnsadir_key2
------
numalias getnsadir_cache_start,200
; 一度検索ないし記録したディレクトリを、グローバル変数によって保存するので、
; 使うグローバル文字変数10個の先頭の番号をここで指定する。
numalias higurashi1,1
numalias higurashi2,2
numalias higurashi3,3
numalias higurashi4,4
numalias higurashi5,5
numalias higurashi6,6
numalias higurashi7,7
numalias higurashi8,8
numalias moonprincess,9
numalias singingmoon,10
; ここまで、定数
------
;==============================
;getnsadir
;==============================
;機能:コンテンツを番号にして与えると、そのディレクトリを返す。
;引数:ディレクトリ名を入れる文字変数、調べるコンテンツ番号
;説明:キャッシュ機能もある。キャッシュをクリアするには、getnsadir_cacheclearを実行する。
;説明:最初にレジストリを調べ、レジストリになければプレイヤーに入力させる。
;付記:有効な番号は1〜10。1〜8がひぐらしのなく頃に1〜8に対応し、9,10は月姫と歌月十夜に対応。
 *getnsadir
getparam s%getnsadir_dir,%getnsadir_content
if %getnsadir_content < 1 return ; コンテンツ番号が0以下なら、何もせずに帰る。
if %getnsadir_content > 10 return ; コンテンツ番号が11以上なら、何もせずに帰る。
; もし、キャッシュがあればそれを使う。
mov %getnsadir_contentnum,%getnsadir_content+getnsadir_cache_start-1
if $%getnsadir_contentnum = "" getnsadir_from_reg ; なければ、レジストリから取得する。
 *getnsadir_input
if $%getnsadir_contentnum = "" getnsadir_from_input ; なければ、入力してもらう。
chomp $%getnsadir_contentnum,"\" ; 末尾の\を削除する。
fileexist %getnsadir_dir,$%getnsadir_contentnum ; あるかどうか確認する。
if %getnsadir_dir = 0 mov $%getnsadir_contentnum,"":goto *getnsadir_input
mov $getnsadir_contentnum,$%getnsadir_contentnum
add $getnsadir_contentnum,"\arc.nsa"
fileexist %getnsadir_dir,$getnsadir_contentnum ; あるかどうか確認する。
if %getnsadir_dir = 0 mov $%getnsadir_contentnum,"":goto *getnsadir_input
; 有効でなければ、何度でも入力させなおす。
mov $%getnsadir_dir,$%getnsadir_contentnum
return
;==============================
;getnsadir_from_reg
;==============================
;説明:内部関数。レジストリから取得する役割を持つ。
 *getnsadir_from_reg
if %getnsadir_content > 9 mov $getnsadir_key,"Software\07th_Expansion\higurasi":itoa $getnsadir_key2,%getnsadir_content:add $getnsadir_key,$getnsadir_key2:mov $getnsadir_key2,"gamedir"
if %getnsadir_content = 9 mov $getnsadir_key,"Software\TYPE-MOON\月姫":mov $getnsadir_key2,"directory"
if %getnsadir_content = 10 mov $getnsadir_key,"Software\TYPE-MOON\歌月十夜":mov $getnsadir_key2,"directory"
getreg $%getnsadir_contentnum,$getnsadir_key,$getnsadir_key2
return
;==============================
;getnsadir_from_input
;==============================
;説明:内部関数。レジストリから取得する役割を持つ。
 *getnsadir_from_input
if %getnsadir_content > 9 mov $getnsadir_key,"ひぐらしのなく頃に":itoa2 $getnsadir_key2,%getnsadir_content:add $getnsadir_key,$getnsadir_key2
if %getnsadir_content = 9 mov $getnsadir_key,"月姫"
if %getnsadir_content = 10 mov $getnsadir_key,"歌月十夜"
add $getnsadir_key,"がインストールされているディレクトリを入力してください。"
inputstr $%getnsadir_contentnum,$getnsadir_key,255,0
return