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

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


これって、クラスの設定を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には仲介する構造体を用いるのって、わりと常識なんですかね?