re = Regexp.union(pattern.keys)
change_text = ->(text) { text.gsub!(re, pattern) }
change_page = lambda do |page|
return unless page
page.list.each do |command|
case command.code
when 401, 405 # 显示文字 / 显示滚动文字
change_text.(command.parameters[0])
when 102 # 显示选项
command.parameters[0].each(&change_text)
end
end
end
change_event = lambda do |event|
return unless event
event.pages.each(&change_page)
end
change_each_in_file = lambda do |filename, proc|
save_data(load_data(filename).each(&proc), filename)
end
# 替换地图上的事件
load_data('Data/MapInfos.rvdata2').each_key do |map_id|
filename = sprintf('Data/Map%03d.rvdata2', map_id)
map = load_data(filename)
map.events.each_value(&change_event)
save_data(map, filename)
end
def change_text(text)
@pattern.keys.each{|key| text.gsub!(key,@pattern[key]) }
end
def change_page(page)
return unless page
page.list.each do |command|
case command.code
when 101,401 # 显示文字
change_text(command.parameters[0])
when 102 # 显示选项
command.parameters[0].each{|e|change_text(e)}
end
end
end
def change_event(event)
return unless event
event[1].pages.each{|e|change_page(e)}
end
# 替换地图上的事件
load_data('Data/MapInfos.rvdata').each_key do |map_id|
filename = sprintf('Data/Map%03d.rvdata', map_id)
map = load_data(filename)
map.events.each{|e|change_event(e)}
save_data(map, filename)
end