Japanese Simutrans Forum

開発 => プログラム => トピック開設者: T-Na さんの発言 2013/03/03 01:03

トピック名: [patch]車庫に車両の更新機能を追加する
投稿者: T-Na さんの発言 2013/03/03 01:03
車庫内で車両の更新を行えるようにします。

オリジナルでも古い車両を売却して新しい車両と差し替えば同じことが出来ますが
ということで実装してみました。

この機能を使用するには、対象になる車両に更新候補を関連付ける必要があるため
別途tabファイルにて設定する必要があります(後述)

なお、ネット機能を介してのテストは一切行っておりません。
また、この機能を実装するに当たってslist_tplにコピーコンストラクタ等を実装しておりますので
これに起因する不具合が別の場所で発生する可能性があります。

車両の更新方法:
更新コスト:
更新の際には更新コストが必要になります。
デフォルトでは新車購入時の10%の値段になりますが、simuconf.tabや「高度な設定」から変更可能です。

コード: [選択]
#更新コストを新車価格の何%にするか(0~100、省略時は10)
magnification_of_update_cost = 50


更新候補の関連付けtabファイル:
tabファイルはPakフォルダ内に「update_vehicles」という名のフォルダを作成し、そのフォルダ内に格納します。
拡張子が「tab」であれば、hoge.tab、foo.tab等、どのような名前でもかまいません。
また、複数のtabファイルに分散できるので、アドオン作者ごとに分けたりすることも可能です。

書式:
tabファイル内の記述はdatファイルとほぼ同じです。

#で始まる行はコメントです。

コード: [選択]
#この行に書かれたものは全て無視されます。


-で始まる行はブロックの区切りです。
ブロックごとに区切ることで複数の車両に対する設定を1つのファイル内に記述できま す。

コード: [選択]
#Train_aとTrain_bの設定を記述
name=Train_a

--------
name=Train_b



name=車両名
コード: [選択]
#JNR_Kuha115を指定する場合
name=JNR_Kuha115

update[n]=更新候補名
コード: [選択]
#番号が連番になっていれば順番は関係ないのでOk
update[1]=foo
update[2]=bar
update[0]=bee

#3~4を飛ばしているうえに、5がダブっているのでダメ
update[5]=boo
update[5]=nooo
----
#別のブロックの番号とはダブってもOk
update[0]=hoge

name、updateともインストールされていない車両が記述されていた場合は無視されます。

記述例:
main.tab内への記述例。

コード: [選択]
#main.tab
#JNR_Kiha47をJRW_Kiha47_HiroshimaとJRW_Kiha47_Kakogawaに更新できるようにする
name=JNR_Kiha47
update[0]=JRW_Kiha47_Hiroshima
update[1]=JRW_Kiha47_Kakogawa

別のtabファイルに設定を書いた場合、上書きではなく追加になります。

コード: [選択]
#sub.tab
JNR_Kiha47にJRW_Kiha47_KishinとJRW_Kiha47_Toyookaも候補として追加する
name=JNR_Kiha47
update[0]=JRW_Kiha47_Kishin
update[1]=JRW_Kiha47_Toyooka

main.tabとsub.tabの両方が読み込まれた場合
JNR_Kiha47は~Hiroshima、~Kakogawa、~Kishin、~Toyookaの車両に更新可能になります。
※sub.tabしか読み込まれなかった場合でも、~Kishin、~Toyookaには更新可能になります。