本帖最后由 爆发的妞 于 2013-6-21 17:41 编辑
需要用到数据库中的图块的数据,直接解析生成的文件, 貌似没有那么容易,
结构不太明白,还需要深入学习。所以就简单的在工程中输出了。
需要用到的同学,可以拿去
代码如下:
#输出Tilesets
#创建一个可写文件流
fh = File .new ( sprintf ( "Data/Tilesets.rx" ) , "w" )
#输出地图数据
size = $data_tilesets .size - 1
for i in 1 ..size
tileset = $data_tilesets [ i]
tileset_name = tileset.tileset_name
autotile_names = tileset.autotile_names
panorama_name = tileset.panorama_name
panorama_hue = tileset.panorama_hue
fog_name = tileset.fog_name
fog_hue = tileset.fog_hue
fog_opacity = tileset.fog_opacity
fog_blend_type = tileset.fog_blend_type
fog_zoom = tileset.fog_zoom
fog_sx = tileset.fog_sx
fog_sy = tileset.fog_sy
battleback_name = tileset.battleback_name
passages = tileset.passages
priorities = tileset.priorities
terrain_tags = tileset.terrain_tags
fh.puts i
fh.puts 'tileset_name %s.png' % [ tileset_name]
fh.print 'autotile_names '
for i in 0 ..autotile_names .size
if autotile_names[ i] .nil ?
fh.print ','
else
fh.print '%s.png,' % [ autotile_names[ i] ]
end
end
fh.puts ''
passages_size = passages.xsize
fh.print 'passages '
for i in 0 ..passages_size
fh.print '%s,' % [ passages[ i] ]
end
fh.puts ''
priorities_size = priorities.xsize
fh.print 'priorities '
for i in 0 ..priorities_size
if i==priorities_size
fh.print '%s' % [ priorities[ i] ]
elsif i==0
fh.print '%s,' % [ 5 ]
else
fh.print '%s,' % [ priorities[ i] ]
end
end
fh.puts ''
end
fh.close #关闭文件流
#输出Tilesets
#创建一个可写文件流
fh = File .new ( sprintf ( "Data/Tilesets.rx" ) , "w" )
#输出地图数据
size = $data_tilesets .size - 1
for i in 1 ..size
tileset = $data_tilesets [ i]
tileset_name = tileset.tileset_name
autotile_names = tileset.autotile_names
panorama_name = tileset.panorama_name
panorama_hue = tileset.panorama_hue
fog_name = tileset.fog_name
fog_hue = tileset.fog_hue
fog_opacity = tileset.fog_opacity
fog_blend_type = tileset.fog_blend_type
fog_zoom = tileset.fog_zoom
fog_sx = tileset.fog_sx
fog_sy = tileset.fog_sy
battleback_name = tileset.battleback_name
passages = tileset.passages
priorities = tileset.priorities
terrain_tags = tileset.terrain_tags
fh.puts i
fh.puts 'tileset_name %s.png' % [ tileset_name]
fh.print 'autotile_names '
for i in 0 ..autotile_names .size
if autotile_names[ i] .nil ?
fh.print ','
else
fh.print '%s.png,' % [ autotile_names[ i] ]
end
end
fh.puts ''
passages_size = passages.xsize
fh.print 'passages '
for i in 0 ..passages_size
fh.print '%s,' % [ passages[ i] ]
end
fh.puts ''
priorities_size = priorities.xsize
fh.print 'priorities '
for i in 0 ..priorities_size
if i==priorities_size
fh.print '%s' % [ priorities[ i] ]
elsif i==0
fh.print '%s,' % [ 5 ]
else
fh.print '%s,' % [ priorities[ i] ]
end
end
fh.puts ''
end
fh.close #关闭文件流
下面的代码是对应地图图块的数据输出,
代码如下:
#创建一个可写文件流
fh = File .new ( sprintf ( "Data/Map%03d.rx" , @map_id ) , "w" )
#输出地图数据
for i in 0 ..2
xsize = @map .data .xsize
#print xsize
ysize = @map .data .ysize
#print ysize
fh.puts '[w = %s][h = %s]' % [ xsize,ysize]
for line in 0 ...ysize
for col in 0 ...xsize
tile_id = @map .data [ col, line, i]
if tile_id == nil
#fh.puts "[%s][%s][%s]=%s" % [col, line,i,'空'] #写入数据
#print "[%s][%s][0]=%s" % [col, line,'空']
fh.print "%s," % [ '空' ]
else
#fh.puts "[%s][%s][%s]=%s" % [col, line,i,tile_id] #写入数据
#print "[%s][%s][0]=%s" % [col, line,tile_id]
if col==xsize-1
fh.print "%s" % [ tile_id]
else
fh.print "%s," % [ tile_id]
end
end
end
fh.puts ''
end
fh.puts ''
end
fh.close #关闭文件流
#创建一个可写文件流
fh = File .new ( sprintf ( "Data/Map%03d.rx" , @map_id ) , "w" )
#输出地图数据
for i in 0 ..2
xsize = @map .data .xsize
#print xsize
ysize = @map .data .ysize
#print ysize
fh.puts '[w = %s][h = %s]' % [ xsize,ysize]
for line in 0 ...ysize
for col in 0 ...xsize
tile_id = @map .data [ col, line, i]
if tile_id == nil
#fh.puts "[%s][%s][%s]=%s" % [col, line,i,'空'] #写入数据
#print "[%s][%s][0]=%s" % [col, line,'空']
fh.print "%s," % [ '空' ]
else
#fh.puts "[%s][%s][%s]=%s" % [col, line,i,tile_id] #写入数据
#print "[%s][%s][0]=%s" % [col, line,tile_id]
if col==xsize-1
fh.print "%s" % [ tile_id]
else
fh.print "%s," % [ tile_id]
end
end
end
fh.puts ''
end
fh.puts ''
end
fh.close #关闭文件流
后续还会解析其他的数据,感兴趣的可以,共同研究