Sprite renamer is now in the Debug menu and doesn't run when compiling, fixed Poké Flute not working in battle, fixed Advanced Trainer Battle Debug feature not working, fixed special Mega Evolution messages not being used

This commit is contained in:
Maruno17
2021-05-11 18:44:35 +01:00
parent ab3bb12d53
commit 5005b2a7e9
8 changed files with 23 additions and 13 deletions

View File

@@ -728,8 +728,6 @@ module Compiler
yield(_INTL("Saving messages"))
pbSetTextMessages
MessageTypes.saveMessages
yield(_INTL("Renaming sprites and cries"))
convert_files
echoln ""
echoln _INTL("*** Finished full compile ***")
echoln ""

View File

@@ -1,241 +0,0 @@
class File
# Copies the source file to the destination path.
def self.copy(source, destination)
data = ""
t = Time.now
File.open(source, 'rb') do |f|
while r = f.read(4096)
if Time.now - t > 1
Graphics.update
t = Time.now
end
data += r
end
end
File.delete(destination) if File.file?(destination)
f = File.new(destination, 'wb')
f.write data
f.close
end
# Copies the source to the destination and deletes the source.
def self.move(source, destination)
File.copy(source, destination)
File.delete(source)
end
end
#===============================================================================
#
#===============================================================================
module Compiler
module_function
def readDirectoryFiles(directory, formats)
files = []
Dir.chdir(directory) {
for i in 0...formats.length
Dir.glob(formats[i]) { |f| files.push(f) }
end
}
return files
end
def convert_pokemon_filename(full_name, default_prefix = "")
name = full_name
extension = nil
if full_name[/^(.+)\.([^\.]+)$/] # Of the format something.abc
name = $~[1]
extension = $~[2]
end
prefix = default_prefix
form = female = shadow = crack = ""
if default_prefix == ""
if name[/s/] && !name[/shadow/]
prefix = (name[/b/]) ? "Back shiny/" : "Front shiny/"
else
prefix = (name[/b/]) ? "Back/" : "Front/"
end
elsif default_prefix == "Icons/"
prefix = "Icons shiny/" if name[/s/] && !name[/shadow/]
end
if name[/000/]
species = "000"
else
species_number = name[0, 3].to_i
species_data = GameData::Species.try_get(species_number)
raise _INTL("Species {1} is not defined (trying to rename Pokémon graphic {2}).", species_number, full_name) if !species_data
species = species_data.id.to_s
form = "_" + $~[1].to_s if name[/_(\d+)/]
female = "_female" if name[/f/]
shadow = "_shadow" if name[/_shadow/]
if name[/egg/]
prefix = "Eggs/"
crack = "_icon" if default_prefix == "Icons/"
crack = "_cracks" if name[/eggCracks/]
end
end
return prefix + species + form + female + shadow + crack + ((extension) ? "." + extension : ".png")
end
def convert_pokemon_sprites(src_dir, dest_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting Pokémon sprites {1}/{2}...", i, files.length)) if i % 50 == 0
case file
when "battlers.png"
File.delete(src_dir + file)
when "egg.png"
File.move(src_dir + file, dest_dir + "Eggs/000.png")
when "eggCracks.png"
File.move(src_dir + file, dest_dir + "Eggs/000_cracks.png")
else
next if !file[/^\d{3}[^\.]*\.[^\.]*$/]
new_filename = convert_pokemon_filename(file)
# moves the files into their appropriate folders
File.move(src_dir + file, dest_dir + new_filename)
end
end
Dir.delete(src_dir) rescue nil
end
def convert_pokemon_icons(src_dir, dest_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting Pokémon icons {1}/{2}...", i, files.length)) if i % 50 == 0
case file
when "iconEgg.png"
File.move(src_dir + file, dest_dir + "Eggs/000_egg.png")
else
next if !file[/^icon\d{3}[^\.]*\.[^\.]*$/]
new_filename = convert_pokemon_filename(file.sub(/^icon/, ''), "Icons/")
# moves the files into their appropriate folders
File.move(src_dir + file, dest_dir + new_filename)
end
end
end
def convert_pokemon_footprints(src_dir, dest_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting footprints {1}/{2}...", i, files.length)) if i % 50 == 0
next if !file[/^footprint\d{3}[^\.]*\.[^\.]*$/]
new_filename = convert_pokemon_filename(file.sub(/^footprint/, ''), "Footprints/")
# moves the files into their appropriate folders
File.move(src_dir + file, dest_dir + new_filename)
end
Dir.delete(src_dir) rescue nil
end
def convert_item_icons(src_dir, dest_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting item icons {1}/{2}...", i, files.length)) if i % 50 == 0
case file
when "item000.png"
File.move(src_dir + file, dest_dir + "000.png")
when "itemBack.png"
File.move(src_dir + file, dest_dir + "back.png")
else
if file[/^itemMachine(.+)\.([^\.]*)$/]
type = $~[1]
extension = $~[2]
File.move(src_dir + file, dest_dir + "machine_" + type + "." + extension)
elsif file[/^item(\d{3})[^\.]*\.([^\.]*)$/]
item_number = $~[1].to_i
extension = $~[2]
item_data = GameData::Item.try_get(item_number)
raise _INTL("Item {1} is not defined (trying to rename item icon {2}).", item_number, file) if !item_data
item = item_data.id.to_s
# moves the files into their appropriate folders
File.move(src_dir + file, dest_dir + item + "." + extension)
end
end
end
end
def convert_pokemon_cries(src_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all audio files
files = readDirectoryFiles(src_dir, ["*.wav", "*.mp3", "*.ogg"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting Pokémon cries {1}/{2}...", i, files.length)) if i % 50 == 0
if file[/^(\d{3})Cry[^\.]*\.([^\.]*)$/]
species_number = $~[1].to_i
extension = $~[2]
form = (file[/Cry_(\d+)\./]) ? sprintf("_%s", $~[1]) : ""
species_data = GameData::Species.try_get(species_number)
raise _INTL("Species {1} is not defined (trying to rename species cry {2}).", species_number, file) if !species_data
species = species_data.id.to_s
File.move(src_dir + file, src_dir + species + form + "." + extension)
end
end
end
def convert_trainer_sprites(src_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
# starts automatic renaming
files.each_with_index do |file, i|
Graphics.update if i % 100 == 0
pbSetWindowText(_INTL("Converting trainer sprites {1}/{2}...", i, files.length)) if i % 50 == 0
if file[/^trainer(\d{3})\.([^\.]*)$/]
tr_type_number = $~[1].to_i
extension = $~[2]
tr_type_data = GameData::TrainerType.try_get(tr_type_number)
raise _INTL("Trainer type {1} is not defined (trying to rename trainer sprite {2}).", tr_type_number, file) if !tr_type_data
tr_type = tr_type_data.id.to_s
File.move(src_dir + file, src_dir + tr_type + "." + extension)
elsif file[/^trback(\d{3})\.([^\.]*)$/]
tr_type_number = $~[1].to_i
extension = $~[2]
tr_type_data = GameData::TrainerType.try_get(tr_type_number)
raise _INTL("Trainer type {1} is not defined (trying to rename trainer sprite {2}).", tr_type_number, file) if !tr_type_data
tr_type = tr_type_data.id.to_s
File.move(src_dir + file, src_dir + tr_type + "_back." + extension)
end
end
end
def convert_files
return if !pbConfirmMessage("Check for Pokémon/item/trainer files that need renaming?")
# Rename and move Pokémon sprites/icons
dest_dir = "Graphics/Pokemon/"
Dir.mkdir(dest_dir) if !FileTest.directory?(dest_dir)
for ext in ["Front/", "Back/", "Icons/", "Front shiny/", "Back shiny/", "Icons shiny/",
"Eggs/", "Footprints/", "Shadow/"]
Dir.mkdir(dest_dir + ext) if !FileTest.directory?(dest_dir + ext)
end
convert_pokemon_sprites("Graphics/Battlers/", dest_dir)
convert_pokemon_icons("Graphics/Icons/", dest_dir)
convert_pokemon_footprints("Graphics/Icons/Footprints/", dest_dir)
# Rename and move item icons
dest_dir = "Graphics/Items/"
Dir.mkdir(dest_dir) if !FileTest.directory?(dest_dir)
convert_item_icons("Graphics/Icons/", dest_dir)
# Rename Pokémon cries
convert_pokemon_cries("Audio/SE/Cries/")
# Rename trainer sprites
convert_trainer_sprites("Graphics/Trainers/")
pbSetWindowText(nil)
end
end