Renamed trainer charsets and added code to the sprite renamer that will rename them and edit map data accordingly

This commit is contained in:
Maruno17
2021-05-11 21:00:15 +01:00
parent 911ba343ce
commit 8ff43cbd4c
3 changed files with 65 additions and 18 deletions

View File

@@ -34,7 +34,7 @@ module GameData
end
def self.charset_filename(tr_type)
return self.check_file(tr_type, "Graphics/Characters/trchar")
return self.check_file(tr_type, "Graphics/Characters/trainer_")
end
def self.charset_filename_brief(tr_type)

View File

@@ -193,31 +193,47 @@ module SpriteRenamer
def convert_trainer_sprites(src_dir)
return if !FileTest.directory?(src_dir)
# generates a list of all graphic files
files = readDirectoryFiles(src_dir, ["*.png"])
if src_dir == "Graphics/Characters/"
files = readDirectoryFiles(src_dir, ["trchar*.png"])
else
files = readDirectoryFiles(src_dir, ["*.png"])
end
# 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)
if src_dir == "Graphics/Characters/"
if file[/^trchar(\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 charset {2}).", tr_type_number, file) if !tr_type_data
tr_type = tr_type_data.id.to_s
File.move(src_dir + file, src_dir + "trainer_" + tr_type + "." + extension)
end
else
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
end
def convert_files
return if !pbConfirmMessage("Check for Pokémon/item/trainer files in their old folders that need renaming and moving?")
any_changed = false
# Rename and move Pokémon sprites/icons
dest_dir = "Graphics/Pokemon/"
Dir.mkdir(dest_dir) if !FileTest.directory?(dest_dir)
@@ -237,6 +253,37 @@ module SpriteRenamer
# Rename trainer sprites
convert_trainer_sprites("Graphics/Trainers/")
pbSetWindowText(nil)
if pbConfirmMessage("Rename all trainer charsets? This will also edit map data to change events' charsets accordingly.")
convert_trainer_sprites("Graphics/Characters/")
# Edit all maps to replace used charsets
mapData = Compiler::MapData.new
t = Time.now.to_i
Graphics.update
for id in mapData.mapinfos.keys.sort
map = mapData.getMap(id)
next if !map || !mapData.mapinfos[id]
changed = false
for key in map.events.keys
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)
next if !page.graphic.character_name[/^trchar(.+)$/]
tr_type = $~[1]
tr_type = tr_type.to_i if tr_type[/^\d+$/]
tr_type_data = GameData::TrainerType.try_get(tr_type)
raise _INTL("Trainer type {1} is not defined (trying to rename event's charset {2}).", tr_type, file) if !tr_type_data
page.graphic.character_name = "trainer_" + tr_type_data.id.to_s
changed = true
end
end
mapData.saveMap(id) if changed
any_changed = true if changed
end
end
pbMessage(_INTL("All found sprites and icons were renamed and moved."))
pbMessage(_INTL("Some map data was edited. Close and reopen RPG Maker XP to see the changes.")) if any_changed
end
end

View File

@@ -8,8 +8,8 @@ WildVictoryME = Battle victory wild.ogg
TrainerVictoryME = Battle victory trainer.ogg
SurfBGM = Surfing.mid
BicycleBGM = Bicycle.mid
PlayerA = POKEMONTRAINER_Red,trchar000,boy_bike,boy_surf,boy_run,boy_surf,boy_fish_offset,boy_fish_offset
PlayerB = POKEMONTRAINER_Leaf,trchar001,girl_bike,girl_surf,girl_run,girl_surf,girl_fish_offset,girl_fish_offset
PlayerA = POKEMONTRAINER_Red,trainer_POKEMONTRAINER_Red,boy_bike,boy_surf,boy_run,boy_surf,boy_fish_offset,boy_fish_offset
PlayerB = POKEMONTRAINER_Leaf,trainer_POKEMONTRAINER_Leaf,girl_bike,girl_surf,girl_run,girl_surf,girl_fish_offset,girl_fish_offset
#-------------------------------
[001]
# Intro