書き物

技術とか作った物の話とか愚痴文句感想など

外部設定ファイルを仲介する構造体的クラスが必要

以前マップチップを表示してスクロール処理ができるクラスを作りました。↓

マップスクロールのクラスができた - 書き物


これって、クラスの設定をXMLで行います。XMLを引数にとって内容に沿ったマップを描画します。そのXMLファイルは以下のような感じです。

<map>
<mapSize>
<width>64</width>
<height>48</height>
</mapSize>
<chipSize>
<width>25</width>
<height>25</height>
</chipSize>
<screenSize>
<width>16</width>
<height>12</height>
</screenSize>
<loopMode>true</loopMode>
<layer>
<scrollSpeed>1</scrollSpeed>
<animateTime>25</animateTime>
<frame>
66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66  66
134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134 134
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   166 166 166 166 166 166 0   0   0   0   0   0   166 166 166 166 166 0   0   0   0   0
0   0   0   0   0   0   0   0   0   136 1   2   2   2   2   3   135 0   0   0   0   136 1   2   2   2   3   135 0   0   0   0
0   0   0   0   0   0   0   0   166 71  33  129 66  66  66  67  135 0   0   0   0   136 65  66  66  101 35  70  0   0   0   0
0   0   0   0   0   0   0   136 1   2   165 35  38  134 134 134 0   0   0   0   0   0   134 134 39  33  161 3   135 0   0   0
0   0   0   0   0   0   0   136 65  66  66  67  135 0   0   0   0   0   0   0   0   0   0   0   136 65  66  67  135 0   0   0
166 166 0   0   0   0   0   0   134 134 134 134 0   0   0   0   0   0   0   0   0   0   0   0   0   134 134 134 0   0   0   166
2   3   135 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   136 1
34  35  70  166 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   71  33
34  161 2   3   135 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   136 1   165
34  34  34  35  70  166 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   71  33  34
34  34  34  161 2   3   135 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   136 1   165 34
34  34  34  34  34  35  70  166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 166 71  33  34  34
34  34  34  34  34  161 2   2   2   2   2   2   2   2   2   2   2   194 2   2   2   2   2   2   2   2   2   2   2   165 34  34
34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34
34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34
34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34  34
</frame>
</layer>
<layer>
<scrollSpeed>0.5</scrollSpeed>
<animateTime>10</animateTime>
<frame>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   34  34  34  34  0   0   0   0   0   0   34  34  34  0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   34  34  34  34  0   0   0   0   0   0   34  34  34  0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
</frame>
<frame>
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   166 166 166 166 0   0   0   0   0   0   166 166 166 0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   34  34  34  34  0   0   0   0   0   0   34  34  34  0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   34  34  34  34  0   0   0   0   0   0   34  34  34  0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   34  34  34  34  34  34  34  34  0   0   0   0   0   0   34  34  34  34  34  34  0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
</frame>
</layer>
</map>

これって、そのまんまXMLを渡すよりも、このXMLの構造に沿った構造体的なクラスを介した方がいいっぽいことに気付きました。

MapSettingクラスとでもして、setMapDataメソッドでXMLでデータを渡す。そのときうまくメンバ変数にデータを展開できなければ、XMLのどのデータで失敗したのかとかの入力データチェックをやります。もちろん直接メンバ変数にデータを設定することも可能。このクラスをMapChipViewerクラスに渡すことで、その設定に沿ったマップを描画すると。この方が健康に良さそうです。

さらにこのクラス自体にloadメソッドを持たせて、外部XMLファイルを読み込み、メンバ変数に展開...とかはやりすぎか。


DBにデータを設定したりとかの外部データのI/Oには仲介する構造体を用いるのって、わりと常識なんですかね?