fix for generated sprites in pokedex sprites page + colored background for current sprite

This commit is contained in:
infinitefusion
2022-06-19 17:28:23 -04:00
parent f17ae642a3
commit da75c7fa95
17 changed files with 129 additions and 80 deletions

View File

@@ -104,8 +104,12 @@ module GameData
end
end
customPath = pbResolveBitmap(Settings::CUSTOM_BATTLERS_FOLDER + filename)
regularPath = Settings::BATTLERS_FOLDER + folder + "/" + filename
return customPath ? customPath : pbResolveBitmap(regularPath)
species = getSpecies(dex_number)
use_custom = customPath && !species.always_use_generated
if use_custom
return customPath
end
return Settings::BATTLERS_FOLDER + folder + "/" + filename
end
end

View File

@@ -4,12 +4,15 @@ class PokemonPokedexInfo_Scene
Y_POSITION_SMALL = 40
Y_POSITION_BIG = 50
X_POSITION_PREVIOUS = -20
X_POSITION_SELECTED = 120
X_POSITION_NEXT = 340
X_POSITION_PREVIOUS=-20
X_POSITION_SELECTED=120
X_POSITION_NEXT=340
Y_POSITION_BG_SMALL = 70
Y_POSITION_BG_BIG = 93
X_POSITION_BG_PREVIOUS = -1
X_POSITION_BG_SELECTED = 145
X_POSITION_BG_NEXT = 363
def drawPageForms
#@selected_index=0
@@ -20,89 +23,125 @@ class PokemonPokedexInfo_Scene
shadow = Color.new(168, 184, 184)
#alts_list= pbGetAvailableAlts
@selected_index=0
@selected_index = 0
update_displayed
end
def init_selected_bg
@sprites["bgSelected_previous"] = IconSprite.new(0, 0, @viewport)
@sprites["bgSelected_previous"].x = X_POSITION_BG_PREVIOUS
@sprites["bgSelected_previous"].y = Y_POSITION_BG_SMALL
@sprites["bgSelected_previous"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_small"))
@sprites["bgSelected_previous"].visible = false
@sprites["bgSelected_center"] = IconSprite.new(0, 0, @viewport)
@sprites["bgSelected_center"].x = X_POSITION_BG_SELECTED
@sprites["bgSelected_center"].y = Y_POSITION_BG_BIG
@sprites["bgSelected_center"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_large"))
@sprites["bgSelected_center"].visible = false
@sprites["bgSelected_next"] = IconSprite.new(0, 0, @viewport)
@sprites["bgSelected_next"].x = X_POSITION_BG_NEXT
@sprites["bgSelected_next"].y = Y_POSITION_BG_SMALL
@sprites["bgSelected_next"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_small"))
@sprites["bgSelected_next"].visible = false
end
def initializeSpritesPage(altsList)
@selected_index=0
@sprites["selectedSprite"] = IconSprite.new(0,0,@viewport)
init_selected_bg
@speciesData = getSpecies(@species)
@selected_index = 0
@sprites["selectedSprite"] = IconSprite.new(0, 0, @viewport)
@sprites["selectedSprite"].x = X_POSITION_SELECTED
@sprites["selectedSprite"].y = Y_POSITION_BIG
@sprites["selectedSprite"].z = 999999
@sprites["selectedSprite"].visible=false
@sprites["selectedSprite"].visible = false
@sprites["selectedSprite"].zoom_x = 1
@sprites["selectedSprite"].zoom_y = 1
@sprites["previousSprite"] = IconSprite.new(0,0,@viewport)
@sprites["previousSprite"] = IconSprite.new(0, 0, @viewport)
@sprites["previousSprite"].x = X_POSITION_PREVIOUS
@sprites["previousSprite"].y = Y_POSITION_SMALL
@sprites["previousSprite"].visible=false
@sprites["previousSprite"].visible = false
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["nextSprite"] = IconSprite.new(0,0,@viewport)
@sprites["nextSprite"] = IconSprite.new(0, 0, @viewport)
@sprites["nextSprite"].x = X_POSITION_NEXT
@sprites["nextSprite"].y = Y_POSITION_SMALL
@sprites["nextSprite"].visible=false
@sprites["nextSprite"].visible = false
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["selectedSprite"].z=9999999
@sprites["previousSprite"].z=9999999
@sprites["nextSprite"].z=9999999
@sprites["selectedSprite"].z = 9999999
@sprites["previousSprite"].z = 9999999
@sprites["nextSprite"].z = 9999999
@sprites["selectedSprite"].setBitmap(altsList[@selected_index])
if altsList.size >=2
@sprites["nextSprite"].setBitmap(altsList[@selected_index+1])
@sprites["nextSprite"].visible=true
if altsList.size >= 2
@sprites["nextSprite"].setBitmap(altsList[@selected_index + 1])
@sprites["nextSprite"].visible = true
end
if altsList.size >=3
if altsList.size >= 3
@sprites["previousSprite"].setBitmap(altsList[-1])
@sprites["previousSprite"].visible=true
@sprites["previousSprite"].visible = true
end
end
POSSIBLE_ALTS= %w[a b c d e f g h i j k x]
POSSIBLE_ALTS = %w[a b c d e f g h i j k x]
def pbGetAvailableForms
return pbGetAvailableAlts
end
def update_selected
@sprites["bgSelected_previous"].visible = false
@sprites["bgSelected_center"].visible = false
@sprites["bgSelected_next"].visible = false
previous_index = @selected_index == 0 ? @available.size - 1 : @selected_index - 1
next_index = @selected_index == @available.size - 1 ? 0 : @selected_index + 1
@sprites["bgSelected_previous"].visible = true if is_main_sprite(previous_index) && @available.size > 2
@sprites["bgSelected_center"].visible = true if is_main_sprite(@selected_index)
@sprites["bgSelected_next"].visible = true if is_main_sprite(next_index) && @available.size > 1
end
def update_displayed
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
nextIndex=@selected_index+1
previousIndex= @selected_index-1
if nextIndex > @available.size-1
nextIndex = @selected_index + 1
previousIndex = @selected_index - 1
if nextIndex > @available.size - 1
nextIndex = 0
end
if previousIndex <0
previousIndex = @available.size-1
if previousIndex < 0
previousIndex = @available.size - 1
end
@sprites["previousSprite"].visible=false if @available.size<=2
@sprites["nextSprite"].visible=false if @available.size<=1
@sprites["previousSprite"].visible = false if @available.size <= 2
@sprites["nextSprite"].visible = false if @available.size <= 1
@sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
@sprites["nextSprite"].setBitmap(@available[nextIndex])
update_selected
end
def pbGetAvailableAlts
ret = []
return ret if !@species
dexNum =getDexNumberForSpecies(@species)
dexNum = getDexNumberForSpecies(@species)
isFusion = dexNum > NB_POKEMON
if !isFusion
ret << Settings::BATTLERS_FOLDER+ dexNum.to_s + "/" + dexNum.to_s + ".png"
ret << Settings::BATTLERS_FOLDER + dexNum.to_s + "/" + dexNum.to_s + ".png"
return ret
end
body_id = getBodyID(@species)
head_id=getHeadID(@species,body_id)
head_id = getHeadID(@species, body_id)
baseFilename = head_id.to_s + "." + body_id.to_s
baseFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + ".png"
@@ -110,7 +149,7 @@ class PokemonPokedexInfo_Scene
ret << baseFilePath
end
POSSIBLE_ALTS.each { |alt_letter|
altFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + alt_letter +".png"
altFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + alt_letter + ".png"
if pbResolveBitmap(altFilePath)
ret << altFilePath
end
@@ -119,26 +158,24 @@ class PokemonPokedexInfo_Scene
return ret
end
def pbChooseForm
loop do
@sprites["uparrow"].visible = true
@sprites["uparrow"].visible = true
@sprites["downarrow"].visible = true
Graphics.update
Input.update
pbUpdate
if Input.trigger?(Input::RIGHT)
pbPlayCursorSE
@selected_index -=1#(index+@available.length-1)%@available.length
@selected_index -= 1 #(index+@available.length-1)%@available.length
if @selected_index < 0
@selected_index = @available.size-1
@selected_index = @available.size - 1
end
update_displayed
elsif Input.trigger?(Input::LEFT)
pbPlayCursorSE
@selected_index +=1#= (index+1)%@available.length
if @selected_index > @available.size-1
@selected_index += 1 #= (index+1)%@available.length
if @selected_index > @available.size - 1
@selected_index = 0
end
update_displayed
@@ -148,21 +185,28 @@ class PokemonPokedexInfo_Scene
elsif Input.trigger?(Input::USE)
pbPlayDecisionSE
if select_sprite
@endscene=true
@endscene = true
break
end
end
end
@sprites["uparrow"].visible = false
@sprites["uparrow"].visible = false
@sprites["downarrow"].visible = false
end
def is_main_sprite
return @selected_index == 0
def is_main_sprite(index = nil)
return false if !@available
if index == nil
index = @selected_index
end
return true if @available.size <= 1
if @speciesData.always_use_generated
selected_sprite = @available[index]
return selected_sprite.start_with?(Settings::BATTLERS_FOLDER)
end
return index == 0
end
def select_sprite
if is_main_sprite
pbMessage("This sprite is already the displayed sprite")
@@ -176,33 +220,40 @@ class PokemonPokedexInfo_Scene
end
def swap_main_sprite
begin
#begin
old_main_sprite = @available[0]
new_main_sprite = @available[@selected_index]
if main_sprite_is_non_custom(old_main_sprite)
new_name_without_ext = File.basename(old_main_sprite, ".png")
new_name_without_letter=new_name_without_ext.chop
File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png")
if main_sprite_is_non_custom()
@speciesData.set_always_use_generated_sprite(false)
return
# new_name_without_ext = File.basename(old_main_sprite, ".png")
# new_name_without_letter=new_name_without_ext.chop
# File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png")
end
if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
new_name_without_ext = File.basename(old_main_sprite, ".png")
File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")
@speciesData.set_always_use_generated_sprite(true)
return
# new_name_without_ext = File.basename(old_main_sprite, ".png")
# File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x
# return
end
File.rename(new_main_sprite, new_main_sprite+"temp")
File.rename(new_main_sprite, new_main_sprite + "temp")
File.rename(old_main_sprite, new_main_sprite)
File.rename(new_main_sprite+"temp", old_main_sprite)
rescue
pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
end
File.rename(new_main_sprite + "temp", old_main_sprite)
# rescue
# pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
# end
# code here
end
#dégueu, je sais - si le 1er element de la liste finit par une lettre (le 1er element devrait etre considéré comme le main), ça veut dire que le main est non-custom
def main_sprite_is_non_custom(old_main_sprite)
return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1])
def main_sprite_is_non_custom()
speciesData = getSpecies(@species)
return speciesData.always_use_generated || @available.size <= 1
#dégueu, je sais - si le 1er element de la liste finit par une lettre (le 1er element devrait etre considéré comme le main), ça veut dire que le main est non-custom
# speciesData.set_always_use_generated_sprite(true)
# return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1])
end
end