見出し画像

【0063】アイテム画面を作る③

アイテム画面は長丁場です。

とりあえず、今はこんな感じになっています。

	: 'アイテムレイヤー結合' && {
		##################################################
		## joinFrameOnItem
		##  画面フレームと、アイテム表示枠を結合する
		##   lnSeedのマップ枠の中にlnItemInfoをはめ込む。
		##   また、所持アイテムの情報をはめ込んでいく。		
		##################################################
		function joinFrameOnItem (){
			
		 #現在の表示内容を退避し、アイテム枠を表示する。
			##アイテム枠で上書き
			for ((i = 0; i <= 19; i++)) {
				lnSeed[i]="${lnItemInfo[i]}"
			}


       		    declare args=()
				declare itemName=''
				args=($(echo "${TBL_ITM_INFO[1]}"|xargs))

				itemName1="${args[3]}"
				itemName2="${args[4]}"
				itemExplain="${args[5]}"

				lnSeed[3]="${lnSeed[3]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[3]:41}"
		}

今はアイテムID1番を固定で取ってきていますが、持ち物リストに収容されたアイテムIDを取ってくるようにしなければなりません。

持ち物リストの生成・増減は実際にはゲーム中にしか発生しないので、
今は一旦ダミーを突っ込んじゃいます。

持ち物リストはグローバルで設定された
psnItemList[]
という配列に入れていく想定なので、
今はこの場で突っ込みます。

: 'アイテムレイヤー結合' && {
		##################################################
		## joinFrameOnItem
		##  画面フレームと、アイテム表示枠を結合する
		##   lnSeedのマップ枠の中にlnItemInfoをはめ込む。
		##   また、所持アイテムの情報をはめ込んでいく。		
		##################################################
		function joinFrameOnItem (){
			
		 #現在の表示内容を退避し、アイテム枠を表示する。
			##アイテム枠で上書き
			for ((i = 0; i <= 19; i++)) {
				lnSeed[i]="${lnItemInfo[i]}"
			}

       		    declare args=()
				declare itemName=''

   				psnItemList=(1)<<<<<<<<<追加
				args=($(echo "${TBL_ITM_INFO[${psnItemList[0]}]}"|xargs))
                                             ^^^^^^^^^^^^^^^^^^^'1'固定値から変更

				itemName1="${args[3]}"
				itemName2="${args[4]}"
				itemExplain="${args[5]}"

				lnSeed[3]="${lnSeed[3]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[3]:41}"
		}

やりたいことは、

①ダミーとして持ち物リストpsnItemList[]の0番目に1を突っ込む
②psnItemList[]の0番目の値を元に、アイテムマスタを読むようにする。

もともと1固定値だったのを配列から取り出すようにしただけで
まああんまり変わり映えしませんが…。

画像1

恒例の意味のないスクショ。

今回はここからが本番です。
現在、固定値一つだったり、持ち物リストと言いながら1要素しかなかったりするわけですが
これを複数取れるようにしたいです。当然ですね。

今は持ち物リストは

				psnItemList=(1)

とか言う寂しい状態ですのでこれを

				psnItemList=(1 2 3)

こうしたいと思います。
(普通のプログラム言語になれてるとスペース区切りは違和感ありますね…)

3回取るので…単純にやるとこうなります。

psnItemList=(1 2 3)

args=($(echo "${TBL_ITM_INFO[${psnItemList[0]}]}"|xargs))
itemName1="${args[3]}"
itemName2="${args[4]}"
itemExplain="${args[5]}"
lnSeed[3]="${lnSeed[3]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[3]:41}"

args=($(echo "${TBL_ITM_INFO[${psnItemList[1]}]}"|xargs))
itemName1="${args[3]}"
itemName2="${args[4]}"
itemExplain="${args[5]}"
lnSeed[4]="${lnSeed[4]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[4]:41}"

args=($(echo "${TBL_ITM_INFO[${psnItemList[2]}]}"|xargs))
itemName1="${args[3]}"
itemName2="${args[4]}"
itemExplain="${args[5]}"
lnSeed[5]="${lnSeed[5]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[5]:41}"

…3回だからね、可読性最高ですね!

画像2

おっと?

アイテムは取れているようですが、表示がずたずたですね。

固定文字を出したままだったので、後ろのスペースの数が一定のせいで
アイテム名が変わるとずれるということになってますね。

アイテム名の長さに応じて後ろのスペース数を調整するようにしたいです。

…え、むずくね?

それは一旦脇においときます。
今は3回繰り返して取ることをもう少しきれいにしていきます。

for i in "${psnItemList[@]}"
do
	args=($(echo "${TBL_ITM_INFO[${psnItemList[i-1]}]}"|xargs))
	itemName1="${args[3]}"
	itemName2="${args[4]}"
	itemExplain="${args[5]}"
	lnSeed[i+2]="${lnSeed[i+3]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[i+2]:41}"
done

おっ、なんかプログラムっぽいぞ。
この書き方だと、psnItemList[]の要素が増えてもそのまま行けますね。

実行してみます。

画像3

まあズレはしょうがないとしてもほかはなんとか…ん?

画像4

番号出したいとか言ってましたね、そういえば。

lnSeed[i+2]="${lnSeed[i+3]:0:4}$itemName1$itemName2"'             |'"$itemExplain${lnSeed[i+2]:38}$i|"
$i|"

まあループカウンタ表示すればいいわけですね。
ケツの'|'も出しちゃってますけど。

画像5

まあ、出ましたね。

ということで、スペースの数を調整するのは次の回としましょう。
(面倒くさくなってきた…)

この記事が気に入ったらサポートをしてみませんか?