さて、クソッタレ暇なので、>>286で書いた奴を元に
適当に書いてみるぞーっと。
[マップファイル]
├ ファイルタイプ&バージョン
├ マップID
├ マップ名
├ 使用するチップセットファイル名
├ マップの幅
├ マップの奥行き
├ マップのレイヤ枚数
└ チップの羅列データ
│
├ レイヤ1
│ チップ番号....チップ番号
│ チップ番号....チップ番号
│ チップ番号....チップ番号
│
├ レイヤ2
│ チップ番号....チップ番号
│ チップ番号....チップ番号
│ チップ番号....チップ番号
・
・
・
└ レイヤn
[チップセットファイル]
├ ファイルタイプ&バージョン
├ チップセットファイルID
├ チップセットファイル名
├ 使用するチップ画像名
├ チップの大きさX
├ チップの大きさY
├ チップの詳細情報の羅列
│ │
│ ├ チップ1
│ │ ├ チップ番号
│ │ ├ 画像内の位置X
│ │ ├ 画像内の位置Y
│ │ ├ 描画順(プライオリティ)
│ │ └ 属性
│ │
│ ├ チップ2
│ ├ チップ3
│ ├ チップ4
│ ・
│ ・
│ ・
│ └ チップn
│
└ アニメーション情報の羅列
├ アニメ1
│ ├ チップ番号
│ ├ 次のチップ番号
│ └ 次にチップにうつるまでの時間
│
├ アニメ2
│
・
・
・
└ アニメn
※ 補 足 説 明 ※
[マップID] や [チップセットファイルID] は作者が任意につける整数とする。
マップファイルの各マップの大きさは、チップ(レイヤ)の枚数で表す。(ドット数ではない事に注意)
レイヤは、レイヤの番号が小さい方が一番下で、番号が上がるごとに上へ上へとなる。
レイヤには、チップ番号が羅列(2次元配列と考えると分かりやすい)されており、その番号からチップセットを参照する。
[ファイルタイプ&バージョン]については、今後、スレの発展と共にこの形態からファイルの形式が変化する事を見越して
バージョン情報のようなものを付加させて、仕様変更に対応する。(古いバージョンをコンバートしたり、うんたらかんたら)
このへんは正直決まってませんサーセン。
[チップの属性]については、後で説明する。
んで、ここまでざっと書いたが、これをバイナリファイル(bsaveで作る奴な)で作成すると
仕様が変わった時に大変だったり、目視で何が入ってるのか分からなかったり、
メンテナンス効率から鑑みてもよろしくないので、テキストベースで作るとするね。
XML分からないが、マークアップ言語のような記述で書いてみる。
↓マップファイル
<MAPFILE>
<FILETYPE>Ver.0.01 / 286original</FILETYPE>
<ID>1000</ID>
<TITLE>マップA</TITLE>
<TIPSET>チップセット草原.hst</TIPSET>
<WIDTH>64</WIDTH>
<HEIGHT>64</HEIGHT>
<LAYER>3</LAYER>
<MAPDATA>
<TABLE>
1,1,1,1, …… 1,1,1,1
1,2,2,2, …… 2,2,2,1
1,2,3,1, …… 3,1,2,1
1,2,3,3, …… 3,1,1,1
1,1,1,1, …… 1,1,1,1
</TABLE>
<TABLE>
8,8,8,8, …… 8,8,8,8
8,0,0,0, …… 0,0,0,8
8,0,0,0, …… 0,0,0,8
8,0,0,0, …… 0,0,0,8
8,8,8,8, …… 8,8,8,8
</TABLE>
<TABLE>
0,0,0,0, …… 0,0,0,0
0,0,0,0, …… 0,9,9,0
0,9,0,0, …… 0,0,9,0
0,9,9,0, …… 0,0,0,0
0,0,0,0, …… 0,0,0,0
</TABLE>
</MAPDATA>
</MAPFILE>
↓次、チップセットファイル
<TIPFILE>
<FILETYPE>Ver.0.01 / 286original</FILETYPE>
<ID>20</ID>
<TITLE>チップセット草原</TITLE>
<BMPFILE>kusamura.bmp</BMPFILE>
<WIDTH>32</WIDTH>
<HEIGHT>32</HEIGHT>
<TIPDATA> 0, 0, 0, 0, 0 </TIPDATA> ← チップの詳細情報を[チップ番号, 座標X, 座標Y, プライオリティ, 属性]
<TIPDATA> 1, 32, 0, 0, 0 </TIPDATA> の形式で書いている。
<TIPDATA> 2, 64, 0, 0, 0 </TIPDATA>
<TIPDATA> 3, 96, 0, 0, 0 </TIPDATA>
<TIPDATA> 4, 128, 0, 0, 0 </TIPDATA>
<TIPDATA> 5, 0, 32, 0, 0 </TIPDATA>
<TIPDATA> 6, 32, 32, 0, 0 </TIPDATA>
<TIPDATA> 7, 64, 32, 0, 0 </TIPDATA>
<TIPDATA> 8, 96, 32, 5, 1 </TIPDATA>
<TIPDATA> 9, 128, 32, 0, 0 </TIPDATA>
<ANIME> 7, 9, 50, </ANIME>
<ANIME> 9, 7, 50, </ANIME>
</TIPFILE>
属性についての勝手な考え。
正直、この部分は、ユーザーが自由にデータを入れれるのが理想だと思う。
しかし、自由にデータが入れれるとなると、データの共有が難しくなる。
とするなら、4バイト分の領域を一応作っておく。
下8ビットまでは、固定の属性を割り当てて、残り24ビットはユーザー定義によるものとする。
┏━━━━┳━━━━┳━━━━┳━━━━┓
┃00000000 00000000 00000000 11010101┃
┗━━━━┻━━━━┻━━━━┻━━━━┛
↑この部分だけ固定、他はユーザーが自由に使っていい。
もしくは、属性って項目を二つ作って、一つは固定定義
もう一つはユーザー定義とするってのが簡潔かもしれない。