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

@@ -50,27 +50,12 @@ their sprites.
########################################################### ###########################################################
Maruno (http://pokemonessentials.wikia.com/wiki/Pok%C3%A9mon_Essentials_Wiki) Maruno (http://pokemonessentials.wikia.com/wiki/Pok%C3%A9mon_Essentials_Wiki)
###########################################################
### Postgame add-ons ###
###########################################################
Endgame Challenge:
DemICE (https://www.rebornevo.com/forum/index.php?/profile/62307-demice/)
Adapted from the infinity fusion endgame challenge mod
https://www.rebornevo.com/forum/index.php?/messenger/30070/&tab=comments#comment-297286
Bill's Battletower:
barafanatic
########################################################### ###########################################################
### Playtesting ### ### Playtesting ###
########################################################### ###########################################################
Playtesting was done by various members of the Discord channel. Playtesting was done by various members of the Discord channel.
Special thanks to all of you! Special thanks to all of you!
########################################################### ###########################################################
### Social media ###
###########################################################
ChippyYYZ (Discord. reddit)
qt314xxx (Discord)
###########################################################
### Graphics # ### Graphics #
########################################################### ###########################################################
Title screen background and logo by Doctor Miawoo Title screen background and logo by Doctor Miawoo

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -47,6 +47,7 @@ module GameData
attr_accessor :front_sprite_altitude attr_accessor :front_sprite_altitude
attr_accessor :shadow_x attr_accessor :shadow_x
attr_accessor :shadow_size attr_accessor :shadow_size
attr_accessor :alwaysUseGeneratedSprite
DATA = {} DATA = {}
DATA_FILENAME = "species.dat" DATA_FILENAME = "species.dat"
@@ -178,8 +179,16 @@ module GameData
@front_sprite_altitude = hash[:front_sprite_altitude] || 0 @front_sprite_altitude = hash[:front_sprite_altitude] || 0
@shadow_x = hash[:shadow_x] || 0 @shadow_x = hash[:shadow_x] || 0
@shadow_size = hash[:shadow_size] || 2 @shadow_size = hash[:shadow_size] || 2
@alwaysUseGeneratedSprite=false
end end
def set_always_use_generated_sprite(useGeneratedSprite)
@alwaysUseGeneratedSprite=useGeneratedSprite
end
def always_use_generated
return @alwaysUseGeneratedSprite
end
# @return [String] the translated name of this species # @return [String] the translated name of this species
def name def name
return pbGetMessage(MessageTypes::Species, @id_number) return pbGetMessage(MessageTypes::Species, @id_number)

View File

@@ -78,7 +78,7 @@ Pokémon Gold and Silver.
Both games are made by Game Freak. Both games are made by Game Freak.
ALl of the custom fused Pokémon sprites ALl of the custom fused Pokémon sprites
were madeby various members of the were madeby various members of the sp
Pokémon Infinite Fusion Discord Pokémon Infinite Fusion Discord
Other custom graphics: Other custom graphics:

View File

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

View File

@@ -4,12 +4,15 @@ class PokemonPokedexInfo_Scene
Y_POSITION_SMALL = 40 Y_POSITION_SMALL = 40
Y_POSITION_BIG = 50 Y_POSITION_BIG = 50
X_POSITION_PREVIOUS = -20
X_POSITION_SELECTED = 120
X_POSITION_NEXT = 340
X_POSITION_PREVIOUS=-20 Y_POSITION_BG_SMALL = 70
X_POSITION_SELECTED=120 Y_POSITION_BG_BIG = 93
X_POSITION_NEXT=340 X_POSITION_BG_PREVIOUS = -1
X_POSITION_BG_SELECTED = 145
X_POSITION_BG_NEXT = 363
def drawPageForms def drawPageForms
#@selected_index=0 #@selected_index=0
@@ -20,89 +23,125 @@ class PokemonPokedexInfo_Scene
shadow = Color.new(168, 184, 184) shadow = Color.new(168, 184, 184)
#alts_list= pbGetAvailableAlts #alts_list= pbGetAvailableAlts
@selected_index=0 @selected_index = 0
update_displayed update_displayed
end 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) def initializeSpritesPage(altsList)
@selected_index=0 init_selected_bg
@sprites["selectedSprite"] = IconSprite.new(0,0,@viewport) @speciesData = getSpecies(@species)
@selected_index = 0
@sprites["selectedSprite"] = IconSprite.new(0, 0, @viewport)
@sprites["selectedSprite"].x = X_POSITION_SELECTED @sprites["selectedSprite"].x = X_POSITION_SELECTED
@sprites["selectedSprite"].y = Y_POSITION_BIG @sprites["selectedSprite"].y = Y_POSITION_BIG
@sprites["selectedSprite"].z = 999999 @sprites["selectedSprite"].z = 999999
@sprites["selectedSprite"].visible=false @sprites["selectedSprite"].visible = false
@sprites["selectedSprite"].zoom_x = 1 @sprites["selectedSprite"].zoom_x = 1
@sprites["selectedSprite"].zoom_y = 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"].x = X_POSITION_PREVIOUS
@sprites["previousSprite"].y = Y_POSITION_SMALL @sprites["previousSprite"].y = Y_POSITION_SMALL
@sprites["previousSprite"].visible=false @sprites["previousSprite"].visible = false
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["previousSprite"].zoom_y = 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"].x = X_POSITION_NEXT
@sprites["nextSprite"].y = Y_POSITION_SMALL @sprites["nextSprite"].y = Y_POSITION_SMALL
@sprites["nextSprite"].visible=false @sprites["nextSprite"].visible = false
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE @sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE
@sprites["selectedSprite"].z=9999999 @sprites["selectedSprite"].z = 9999999
@sprites["previousSprite"].z=9999999 @sprites["previousSprite"].z = 9999999
@sprites["nextSprite"].z=9999999 @sprites["nextSprite"].z = 9999999
@sprites["selectedSprite"].setBitmap(altsList[@selected_index]) @sprites["selectedSprite"].setBitmap(altsList[@selected_index])
if altsList.size >=2 if altsList.size >= 2
@sprites["nextSprite"].setBitmap(altsList[@selected_index+1]) @sprites["nextSprite"].setBitmap(altsList[@selected_index + 1])
@sprites["nextSprite"].visible=true @sprites["nextSprite"].visible = true
end end
if altsList.size >=3 if altsList.size >= 3
@sprites["previousSprite"].setBitmap(altsList[-1]) @sprites["previousSprite"].setBitmap(altsList[-1])
@sprites["previousSprite"].visible=true @sprites["previousSprite"].visible = true
end end
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 def pbGetAvailableForms
return pbGetAvailableAlts return pbGetAvailableAlts
end 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 def update_displayed
@sprites["selectedSprite"].setBitmap(@available[@selected_index]) @sprites["selectedSprite"].setBitmap(@available[@selected_index])
nextIndex=@selected_index+1 nextIndex = @selected_index + 1
previousIndex= @selected_index-1 previousIndex = @selected_index - 1
if nextIndex > @available.size-1 if nextIndex > @available.size - 1
nextIndex = 0 nextIndex = 0
end end
if previousIndex <0 if previousIndex < 0
previousIndex = @available.size-1 previousIndex = @available.size - 1
end end
@sprites["previousSprite"].visible=false if @available.size<=2 @sprites["previousSprite"].visible = false if @available.size <= 2
@sprites["nextSprite"].visible=false if @available.size<=1 @sprites["nextSprite"].visible = false if @available.size <= 1
@sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex @sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex
@sprites["selectedSprite"].setBitmap(@available[@selected_index]) @sprites["selectedSprite"].setBitmap(@available[@selected_index])
@sprites["nextSprite"].setBitmap(@available[nextIndex]) @sprites["nextSprite"].setBitmap(@available[nextIndex])
update_selected
end end
def pbGetAvailableAlts def pbGetAvailableAlts
ret = [] ret = []
return ret if !@species return ret if !@species
dexNum =getDexNumberForSpecies(@species) dexNum = getDexNumberForSpecies(@species)
isFusion = dexNum > NB_POKEMON isFusion = dexNum > NB_POKEMON
if !isFusion 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 return ret
end end
body_id = getBodyID(@species) 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 baseFilename = head_id.to_s + "." + body_id.to_s
baseFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + ".png" baseFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + ".png"
@@ -110,7 +149,7 @@ class PokemonPokedexInfo_Scene
ret << baseFilePath ret << baseFilePath
end end
POSSIBLE_ALTS.each { |alt_letter| 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) if pbResolveBitmap(altFilePath)
ret << altFilePath ret << altFilePath
end end
@@ -119,26 +158,24 @@ class PokemonPokedexInfo_Scene
return ret return ret
end end
def pbChooseForm def pbChooseForm
loop do loop do
@sprites["uparrow"].visible = true @sprites["uparrow"].visible = true
@sprites["downarrow"].visible = true @sprites["downarrow"].visible = true
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
if Input.trigger?(Input::RIGHT) if Input.trigger?(Input::RIGHT)
pbPlayCursorSE pbPlayCursorSE
@selected_index -=1#(index+@available.length-1)%@available.length @selected_index -= 1 #(index+@available.length-1)%@available.length
if @selected_index < 0 if @selected_index < 0
@selected_index = @available.size-1 @selected_index = @available.size - 1
end end
update_displayed update_displayed
elsif Input.trigger?(Input::LEFT) elsif Input.trigger?(Input::LEFT)
pbPlayCursorSE pbPlayCursorSE
@selected_index +=1#= (index+1)%@available.length @selected_index += 1 #= (index+1)%@available.length
if @selected_index > @available.size-1 if @selected_index > @available.size - 1
@selected_index = 0 @selected_index = 0
end end
update_displayed update_displayed
@@ -148,21 +185,28 @@ class PokemonPokedexInfo_Scene
elsif Input.trigger?(Input::USE) elsif Input.trigger?(Input::USE)
pbPlayDecisionSE pbPlayDecisionSE
if select_sprite if select_sprite
@endscene=true @endscene = true
break break
end end
end end
end end
@sprites["uparrow"].visible = false @sprites["uparrow"].visible = false
@sprites["downarrow"].visible = false @sprites["downarrow"].visible = false
end end
def is_main_sprite def is_main_sprite(index = nil)
return @selected_index == 0 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 end
def select_sprite def select_sprite
if is_main_sprite if is_main_sprite
pbMessage("This sprite is already the displayed sprite") pbMessage("This sprite is already the displayed sprite")
@@ -176,33 +220,40 @@ class PokemonPokedexInfo_Scene
end end
def swap_main_sprite def swap_main_sprite
begin #begin
old_main_sprite = @available[0] old_main_sprite = @available[0]
new_main_sprite = @available[@selected_index] new_main_sprite = @available[@selected_index]
if main_sprite_is_non_custom(old_main_sprite) if main_sprite_is_non_custom()
new_name_without_ext = File.basename(old_main_sprite, ".png") @speciesData.set_always_use_generated_sprite(false)
new_name_without_letter=new_name_without_ext.chop return
File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png") # 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 end
if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER) if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
new_name_without_ext = File.basename(old_main_sprite, ".png") @speciesData.set_always_use_generated_sprite(true)
File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")
return 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 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(old_main_sprite, new_main_sprite)
File.rename(new_main_sprite+"temp", old_main_sprite) File.rename(new_main_sprite + "temp", old_main_sprite)
rescue # rescue
pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.") # pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
end # end
# code here # code here
end 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()
def main_sprite_is_non_custom(old_main_sprite) speciesData = getSpecies(@species)
return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1]) 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
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.