Files
infinitefusion-e18/Data/Scripts/020_Debug/003_Debug menus/006_Debug_FilenameUpdater.rb
2021-12-20 17:18:21 +00:00

90 lines
3.0 KiB
Ruby

#===============================================================================
#
#===============================================================================
module FilenameUpdater
module_function
def readDirectoryFiles(directory, formats)
files = []
Dir.chdir(directory) {
formats.each do |format|
Dir.glob(format) { |f| files.push(f) }
end
}
return files
end
def rename_berry_plant_charsets
src_dir = "Graphics/Characters/"
return false if !FileTest.directory?(src_dir)
Console.echo_li _INTL("Renaming berry tree charsets...")
ret = false
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["berrytree*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
next if file[/^berrytree_/]
next if ["berrytreewet", "berrytreedamp", "berrytreedry", "berrytreeplanted"].include?(file.split('.')[0])
new_file = file.gsub('berrytree', 'berrytree_')
File.move(src_dir + file, src_dir + new_file)
ret = true
end
Console.echo_done(true)
return ret
end
def update_berry_tree_event_charsets
ret = []
mapData = Compiler::MapData.new
t = Time.now.to_i
Graphics.update
Console.echo_li _INTL("Checking {1} maps for used berry tree charsets...", mapData.mapinfos.keys.length)
idx = 0
mapData.mapinfos.keys.sort.each do |id|
echo "." if idx % 20 == 0
idx += 1
Graphics.update if idx % 250 == 0
map = mapData.getMap(id)
next if !map || !mapData.mapinfos[id]
changed = false
map.events.keys.each do |key|
if Time.now.to_i - t >= 5
Graphics.update
t = Time.now.to_i
end
map.events[key].pages.each do |page|
next if nil_or_empty?(page.graphic.character_name)
char_name = page.graphic.character_name
next if !char_name[/^berrytree[^_]+/]
next if ["berrytreewet", "berrytreedamp", "berrytreedry", "berrytreeplanted"].include?(char_name.split('.')[0])
new_file = page.graphic.character_name.gsub('berrytree', 'berrytree_')
page.graphic.character_name = new_file
changed = true
end
end
next if !changed
mapData.saveMap(id)
ret.push(_INTL("Map {1}: '{2}' was modified and saved.", id, mapData.mapinfos[id].name))
end
Console.echo_done(true)
return ret
end
def rename_files
Console.echo_h1 "Updating file names and locations"
change_record = []
# Add underscore to berry plant charsets
if rename_berry_plant_charsets
Console.echo_warn _INTL("Berry plant charset files were renamed.")
end
change_record += update_berry_tree_event_charsets
# Warn if any map data has been changed
if !change_record.empty?
change_record.each { |msg| Console.echo_warn msg }
Console.echo_warn _INTL("RMXP data was altered. Close RMXP now to ensure changes are applied.")
end
echoln ""
Console.echo_h2("Finished updating file names and locations", text: :green)
end
end