編成を考える(その3)

最後に残った人形入れ替え関数の実装です
今後何かと使いまわしするだろうと考えて関数化しましたが特に難しい操作ではありません

function P_exchange_doll(src,dstn)
//部隊の人形を入れ替える
//空き家には使わない(今のところ)
//src,dstnは顔写真ファイル名
//戻り値は正常終了:FALSE、異常:TRUE
	tim = gettime() + 15	//src顔が無かった場合のタイムオーバー判定
	repeat
		sleep(1)
		ifb tim < gettime() then	//タイムオーバー(src未検出)
print "Undetect src:" + src
			result = true
			exit
		endif
	until chkimgx(src, NOXid, 140, 240, 1060, 500, 1, 5, -1)	//srcが居る
print "Detect:" + src
	repeat
		P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y , 0, src)	//肖像クリック
		sleep(3)
	until chkimgx("cancel.bmp", NOXid, 0, 0, 0, 0, 1, 5, -1)
	tim = gettime() + 30	//dstn顔が無かった場合のタイムオーバー判定
	while true
		ifb chkimgx(dstn, NOXid, 0, 0, 0, 0, 1, 5, -1) then	//相手(416)がいる
			P_adb_BTN(G_IMGX_X + delta_X , G_IMGX_Y + delta_Y , 200 , dstn)	//肖像クリック
			sleep(2)
			break
		elseif tim < gettime() then	//タイムオーバー(dstn未検出)
print "Undetect dstn:" + dstn
			result = true
			exit
		else	//dstnいないときはスクロール
print "Search dstn scroll down"
			P_sc_down
		endif
		sleep(2)
	wend
	tim = gettime() + 15	//編成画面に戻らない場合のタイムオーバー判定
	repeat
		sleep(1)
		ifb tim < gettime() then
print "Exchange result is unexpected status"
			result = true
			exit
		endif
	until chkimgx("back_home.bmp",NOXid,0, 20, 140, 100, 1, 10, -1)
print "Success " + src + " to " + dstn
	result = false
fend

前の記事の通り、この関数では人形同士の入れ替え前提にしているので空き家への設定は考慮してません
顔写真代わりに空きスロットシンボル突っ込めば、あとは検索範囲まわりを整理すればほぼそのまま使えると思います
もっと汎用的に使う考察も面白いかもしれませんがそうなると装備やら陣形も視野に入ってくるので個人的には心のハードルが高いです