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
def pbStartScene(dexlist,index,region)
@endscene=false
@viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
@viewport.z = 99999
@dexlist = dexlist
@@ -55,20 +56,27 @@ class PokemonPokedexInfo_Scene
@sprites["formicon"].setOffset(PictureOrigin::Center)
@sprites["formicon"].x = 82
@sprites["formicon"].y = 328
@sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport)
@sprites["uparrow"].x = 242
@sprites["uparrow"].y = 20#268
@sprites["formicon"].visible=false
@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"].visible = false
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
@sprites["downarrow"].x = 242
@sprites["downarrow"].y = 348
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/rightarrow",8,40,28,2,@viewport)
@sprites["downarrow"].x = 440
@sprites["downarrow"].y = 250
@sprites["downarrow"].play
@sprites["downarrow"].visible = false
@sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
pbSetSystemFont(@sprites["overlay"].bitmap)
pbUpdateDummyPokemon
@available = pbGetAvailableForms
initializeSpritesPage(@available)
drawPage(@page)
pbFadeInAndShow(@sprites) { pbUpdate }
end
@@ -206,9 +214,13 @@ class PokemonPokedexInfo_Scene
@sprites["areamap"].visible = (@page==2) if @sprites["areamap"]
@sprites["areahighlight"].visible = (@page==2) if @sprites["areahighlight"]
@sprites["areaoverlay"].visible = (@page==2) if @sprites["areaoverlay"]
@sprites["formfront"].visible = (@page==3) if @sprites["formfront"]
@sprites["formback"].visible = (@page==3) if @sprites["formback"]
@sprites["formicon"].visible = (@page==3) if @sprites["formicon"]
# @sprites["formfront"].visible = (@page==3) if @sprites["formfront"]
#@sprites["formback"].visible = (@page==3) if @sprites["formback"]
#@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
case page
when 1 then drawPageInfo
@@ -462,7 +474,7 @@ class PokemonPokedexInfo_Scene
def pbScene
Pokemon.play_cry(@species, @form)
loop do
until @endscene
Graphics.update
Input.update
pbUpdate

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.