pokedex page for switching between sprites alts

This commit is contained in:
infinitefusion
2022-06-16 20:22:30 -04:00
parent c15c478e6c
commit 5b6ed30d5a
16 changed files with 95 additions and 51 deletions

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.

Binary file not shown.

Binary file not shown.

View File

@@ -3,6 +3,7 @@
#=============================================================================== #===============================================================================
class PokemonPokedexInfo_Scene class PokemonPokedexInfo_Scene
def pbStartScene(dexlist,index,region) def pbStartScene(dexlist,index,region)
@endscene=false
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height) @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z = 99999 @viewport.z = 99999
@dexlist = dexlist @dexlist = dexlist
@@ -55,20 +56,27 @@ class PokemonPokedexInfo_Scene
@sprites["formicon"].setOffset(PictureOrigin::Center) @sprites["formicon"].setOffset(PictureOrigin::Center)
@sprites["formicon"].x = 82 @sprites["formicon"].x = 82
@sprites["formicon"].y = 328 @sprites["formicon"].y = 328
@sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport) @sprites["formicon"].visible=false
@sprites["uparrow"].x = 242
@sprites["uparrow"].y = 20#268 @sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/leftarrow",8,40,28,2,@viewport)
@sprites["uparrow"].x = 20
@sprites["uparrow"].y = 250#268
@sprites["uparrow"].play @sprites["uparrow"].play
@sprites["uparrow"].visible = false @sprites["uparrow"].visible = false
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport) @sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow",8,40,28,2,@viewport)
@sprites["downarrow"].x = 242 @sprites["downarrow"].x = 440
@sprites["downarrow"].y = 348 @sprites["downarrow"].y = 250
@sprites["downarrow"].play @sprites["downarrow"].play
@sprites["downarrow"].visible = false @sprites["downarrow"].visible = false
@sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport) @sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
pbSetSystemFont(@sprites["overlay"].bitmap) pbSetSystemFont(@sprites["overlay"].bitmap)
pbUpdateDummyPokemon pbUpdateDummyPokemon
@available = pbGetAvailableForms @available = pbGetAvailableForms
initializeSpritesPage(@available)
drawPage(@page) drawPage(@page)
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end
@@ -206,9 +214,13 @@ class PokemonPokedexInfo_Scene
@sprites["areamap"].visible = (@page==2) if @sprites["areamap"] @sprites["areamap"].visible = (@page==2) if @sprites["areamap"]
@sprites["areahighlight"].visible = (@page==2) if @sprites["areahighlight"] @sprites["areahighlight"].visible = (@page==2) if @sprites["areahighlight"]
@sprites["areaoverlay"].visible = (@page==2) if @sprites["areaoverlay"] @sprites["areaoverlay"].visible = (@page==2) if @sprites["areaoverlay"]
@sprites["formfront"].visible = (@page==3) if @sprites["formfront"] # @sprites["formfront"].visible = (@page==3) if @sprites["formfront"]
@sprites["formback"].visible = (@page==3) if @sprites["formback"] #@sprites["formback"].visible = (@page==3) if @sprites["formback"]
@sprites["formicon"].visible = (@page==3) if @sprites["formicon"] #@sprites["formicon"].visible = (@page==3) if @sprites["formicon"]
@sprites["previousSprite"].visible = (@page==3) if @sprites["previousSprite"]
@sprites["selectedSprite"].visible = (@page==3) if @sprites["selectedSprite"]
@sprites["nextSprite"].visible = (@page==3) if @sprites["nextSprite"]
# Draw page-specific information # Draw page-specific information
case page case page
when 1 then drawPageInfo when 1 then drawPageInfo
@@ -462,7 +474,7 @@ class PokemonPokedexInfo_Scene
def pbScene def pbScene
Pokemon.play_cry(@species, @form) Pokemon.play_cry(@species, @form)
loop do until @endscene
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
@@ -474,10 +486,10 @@ class PokemonPokedexInfo_Scene
pbPlayCloseMenuSE pbPlayCloseMenuSE
break break
elsif Input.trigger?(Input::USE) elsif Input.trigger?(Input::USE)
if @page==2 # Area if @page == 2 # Area
# dorefresh = true # dorefresh = true
elsif @page==3 # Forms elsif @page == 3 # Forms
if @available.length>1 if @available.length > 1
pbPlayDecisionSE pbPlayDecisionSE
pbChooseForm pbChooseForm
dorefresh = true dorefresh = true
@@ -486,38 +498,38 @@ class PokemonPokedexInfo_Scene
elsif Input.trigger?(Input::UP) elsif Input.trigger?(Input::UP)
oldindex = @index oldindex = @index
pbGoToPrevious pbGoToPrevious
if @index!=oldindex if @index != oldindex
pbUpdateDummyPokemon pbUpdateDummyPokemon
@available = pbGetAvailableForms @available = pbGetAvailableForms
pbSEStop pbSEStop
(@page==1) ? Pokemon.play_cry(@species, @form) : pbPlayCursorSE (@page == 1) ? Pokemon.play_cry(@species, @form) : pbPlayCursorSE
dorefresh = true dorefresh = true
end end
elsif Input.trigger?(Input::DOWN) elsif Input.trigger?(Input::DOWN)
oldindex = @index oldindex = @index
pbGoToNext pbGoToNext
if @index!=oldindex if @index != oldindex
pbUpdateDummyPokemon pbUpdateDummyPokemon
@available = pbGetAvailableForms @available = pbGetAvailableForms
pbSEStop pbSEStop
(@page==1) ? Pokemon.play_cry(@species, @form) : pbPlayCursorSE (@page == 1) ? Pokemon.play_cry(@species, @form) : pbPlayCursorSE
dorefresh = true dorefresh = true
end end
elsif Input.trigger?(Input::LEFT) elsif Input.trigger?(Input::LEFT)
oldpage = @page oldpage = @page
@page -= 2 @page -= 2
@page = 1 if @page<1 @page = 1 if @page < 1
@page = 3 if @page>3 @page = 3 if @page > 3
if @page!=oldpage if @page != oldpage
pbPlayCursorSE pbPlayCursorSE
dorefresh = true dorefresh = true
end end
elsif Input.trigger?(Input::RIGHT) elsif Input.trigger?(Input::RIGHT)
oldpage = @page oldpage = @page
@page += 2 @page += 2
@page = 1 if @page<1 @page = 1 if @page < 1
@page = 3 if @page>3 @page = 3 if @page > 3
if @page!=oldpage if @page != oldpage
pbPlayCursorSE pbPlayCursorSE
dorefresh = true dorefresh = true
end end

View File

@@ -1,16 +1,18 @@
class PokemonPokedexInfo_Scene class PokemonPokedexInfo_Scene
#todo add indicator to show which one is the main sprite #todo add indicator to show which one is the main sprite -
# also maybe add an indicator in main list for when a sprite has available alts # also maybe add an indicator in main list for when a sprite has available alts
X_POSITION_SMALL = 175 Y_POSITION_SMALL = 80
X_POSITION_BIG = 125 Y_POSITION_BIG = 90
Y_POSITION_PREVIOUS=0
Y_POSITION_SELECTED=50 X_POSITION_PREVIOUS=-20
Y_POSITION_NEXT=200 X_POSITION_SELECTED=120
X_POSITION_NEXT=340
def drawPageForms def drawPageForms
@selected_index=0 #@selected_index=0
@sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms")) @sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms"))
overlay = @sprites["overlay"].bitmap overlay = @sprites["overlay"].bitmap
@@ -18,28 +20,31 @@ class PokemonPokedexInfo_Scene
shadow = Color.new(168, 184, 184) shadow = Color.new(168, 184, 184)
#alts_list= pbGetAvailableAlts #alts_list= pbGetAvailableAlts
initializeSpritesPage(@available) @selected_index=0
update_displayed
end end
def initializeSpritesPage(altsList) def initializeSpritesPage(altsList)
@selected_index=0
@sprites["selectedSprite"] = IconSprite.new(0,0,@viewport) @sprites["selectedSprite"] = IconSprite.new(0,0,@viewport)
@sprites["selectedSprite"].x = X_POSITION_BIG @sprites["selectedSprite"].x = X_POSITION_SELECTED
@sprites["selectedSprite"].y = Y_POSITION_SELECTED @sprites["selectedSprite"].y = Y_POSITION_BIG
@sprites["selectedSprite"].z = 999999 @sprites["selectedSprite"].z = 999999
@sprites["selectedSprite"].visible=true @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_SMALL @sprites["previousSprite"].x = X_POSITION_PREVIOUS
@sprites["previousSprite"].y = Y_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_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_SMALL @sprites["nextSprite"].x = X_POSITION_NEXT
@sprites["nextSprite"].y = Y_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_x = Settings::FRONTSPRITE_SCALE
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE @sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE
@@ -50,6 +55,7 @@ class PokemonPokedexInfo_Scene
@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
@@ -61,8 +67,7 @@ class PokemonPokedexInfo_Scene
end end
end end
POSSIBLE_ALTS=["a","b","c","d","e","f","g","h","i","j","k", 'l',"m", POSSIBLE_ALTS= %w[a b c d e f g h i j k x]
"n","o","p", "q", "r","s","t","u","v","w","x","y","z"]
def pbGetAvailableForms def pbGetAvailableForms
return pbGetAvailableAlts return pbGetAvailableAlts
@@ -78,8 +83,10 @@ class PokemonPokedexInfo_Scene
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["nextSprite"].visible=false if @available.size<=1
@sprites["previousSprite"].setBitmap(@available[previousIndex]) @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])
@@ -88,6 +95,12 @@ class PokemonPokedexInfo_Scene
def pbGetAvailableAlts def pbGetAvailableAlts
ret = [] ret = []
return ret if !@species return ret if !@species
dexNum =getDexNumberForSpecies(@species)
isFusion = dexNum > NB_POKEMON
if !isFusion
ret << Settings::BATTLERS_FOLDER+ dexNum.to_s + "/" + dexNum.to_s + ".png"
return ret
end
body_id = getBodyID(@species) body_id = getBodyID(@species)
head_id=getHeadID(@species,body_id) head_id=getHeadID(@species,body_id)
@@ -100,14 +113,14 @@ class PokemonPokedexInfo_Scene
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
else
break #don't want to loop through each letter for nothing
end end
} }
ret << Settings::BATTLERS_FOLDER + head_id.to_s + "/" + baseFilename + ".png" ret << Settings::BATTLERS_FOLDER + head_id.to_s + "/" + baseFilename + ".png"
return ret return ret
end end
def pbChooseForm def pbChooseForm
loop do loop do
@sprites["uparrow"].visible = true @sprites["uparrow"].visible = true
@@ -115,14 +128,14 @@ class PokemonPokedexInfo_Scene
Graphics.update Graphics.update
Input.update Input.update
pbUpdate pbUpdate
if Input.trigger?(Input::UP) if Input.trigger?(Input::LEFT)
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::DOWN) elsif Input.trigger?(Input::RIGHT)
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
@@ -135,6 +148,7 @@ class PokemonPokedexInfo_Scene
elsif Input.trigger?(Input::USE) elsif Input.trigger?(Input::USE)
pbPlayDecisionSE pbPlayDecisionSE
if select_sprite if select_sprite
@endscene=true
break break
end end
end end
@@ -162,15 +176,33 @@ class PokemonPokedexInfo_Scene
end end
def swap_main_sprite def swap_main_sprite
#todo begin
# ajouter une mecanique pour si le user select un generated sprite a la place du custom
# sinon on rename directement les 2 fichiers
#
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)
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")
return
end
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
# 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(old_main_sprite)
return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1])
end
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.