【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要素しかなかったりするわけですが
これを複数取れるようにしたいです。当然ですね。
今は持ち物リストは
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回だからね、可読性最高ですね!
おっと?
アイテムは取れているようですが、表示がずたずたですね。
固定文字を出したままだったので、後ろのスペースの数が一定のせいで
アイテム名が変わるとずれるということになってますね。
アイテム名の長さに応じて後ろのスペース数を調整するようにしたいです。
…え、むずくね?
それは一旦脇においときます。
今は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[]の要素が増えてもそのまま行けますね。
実行してみます。
まあズレはしょうがないとしてもほかはなんとか…ん?
番号出したいとか言ってましたね、そういえば。
lnSeed[i+2]="${lnSeed[i+3]:0:4}$itemName1$itemName2"' |'"$itemExplain${lnSeed[i+2]:38}$i|"
$i|"
まあループカウンタ表示すればいいわけですね。
ケツの'|'も出しちゃってますけど。
まあ、出ましたね。
ということで、スペースの数を調整するのは次の回としましょう。
(面倒くさくなってきた…)
この記事が気に入ったらサポートをしてみませんか?