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)
###########################################################
### 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 was done by various members of the Discord channel.
Special thanks to all of you!
###########################################################
### Social media ###
###########################################################
ChippyYYZ (Discord. reddit)
qt314xxx (Discord)
###########################################################
### Graphics #
###########################################################
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 :shadow_x
attr_accessor :shadow_size
attr_accessor :alwaysUseGeneratedSprite
DATA = {}
DATA_FILENAME = "species.dat"
@@ -178,8 +179,16 @@ module GameData
@front_sprite_altitude = hash[:front_sprite_altitude] || 0
@shadow_x = hash[:shadow_x] || 0
@shadow_size = hash[:shadow_size] || 2
@alwaysUseGeneratedSprite=false
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
def name
return pbGetMessage(MessageTypes::Species, @id_number)

View File

@@ -78,7 +78,7 @@ Pokémon Gold and Silver.
Both games are made by Game Freak.
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
Other custom graphics:

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.