[wip] pokedex page for switching between sprites alts

This commit is contained in:
infinitefusion
2022-06-15 22:03:56 -04:00
parent 1620509322
commit c15c478e6c
15 changed files with 217 additions and 31 deletions

View File

@@ -57,7 +57,7 @@ class PokemonPokedexInfo_Scene
@sprites["formicon"].y = 328
@sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport)
@sprites["uparrow"].x = 242
@sprites["uparrow"].y = 268
@sprites["uparrow"].y = 20#268
@sprites["uparrow"].play
@sprites["uparrow"].visible = false
@sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
@@ -131,20 +131,30 @@ class PokemonPokedexInfo_Scene
@species = @dexlist[@index][0]
@gender, @form = $Trainer.pokedex.last_form_seen(@species)
if @sprites["selectedSprite"]
@sprites["selectedSprite"].visible=false
end
if @sprites["nextSprite"]
@sprites["nextSprite"].visible=false
end
if @sprites["previousSprite"]
@sprites["previousSprite"].visible=false
end
# species_data = pbGetSpeciesData(@species)
species_data = GameData::Species.get_species_form(@species, @form)
@sprites["infosprite"].setSpeciesBitmap(@species,@gender,@form)
if @sprites["formfront"]
@sprites["formfront"].setSpeciesBitmap(@species,@gender,@form)
end
if @sprites["formback"]
@sprites["formback"].setSpeciesBitmap(@species,@gender,@form,false,false,true)
@sprites["formback"].y = 256
@sprites["formback"].y += species_data.back_sprite_y * 2
end
if @sprites["formicon"]
@sprites["formicon"].pbSetParams(@species,@gender,@form)
end
# if @sprites["formfront"]
# @sprites["formfront"].setSpeciesBitmap(@species,@gender,@form)
# end
# if @sprites["formback"]
# @sprites["formback"].setSpeciesBitmap(@species,@gender,@form,false,false,true)
# @sprites["formback"].y = 256
# @sprites["formback"].y += species_data.back_sprite_y * 2
# end
# if @sprites["formicon"]
# @sprites["formicon"].pbSetParams(@species,@gender,@form)
# end
end
def pbGetAvailableForms
@@ -203,7 +213,7 @@ class PokemonPokedexInfo_Scene
case page
when 1 then drawPageInfo
when 2 then drawPageArea
when 2 then drawPageForms
when 3 then drawPageForms
end
end
@@ -493,24 +503,24 @@ class PokemonPokedexInfo_Scene
(@page==1) ? Pokemon.play_cry(@species, @form) : pbPlayCursorSE
dorefresh = true
end
# elsif Input.trigger?(Input::LEFT)
# oldpage = @page
# @page -= 1
# @page = 1 if @page<1
# @page = 3 if @page>3
# if @page!=oldpage
# pbPlayCursorSE
# dorefresh = true
# end
# elsif Input.trigger?(Input::RIGHT)
# oldpage = @page
# @page += 1
# @page = 1 if @page<1
# @page = 3 if @page>3
# if @page!=oldpage
# pbPlayCursorSE
# dorefresh = true
# end
elsif Input.trigger?(Input::LEFT)
oldpage = @page
@page -= 2
@page = 1 if @page<1
@page = 3 if @page>3
if @page!=oldpage
pbPlayCursorSE
dorefresh = true
end
elsif Input.trigger?(Input::RIGHT)
oldpage = @page
@page += 2
@page = 1 if @page<1
@page = 3 if @page>3
if @page!=oldpage
pbPlayCursorSE
dorefresh = true
end
end
if dorefresh
drawPage(@page)

View File

@@ -0,0 +1,176 @@
class PokemonPokedexInfo_Scene
#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
def drawPageForms
@selected_index=0
@sprites["background"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms"))
overlay = @sprites["overlay"].bitmap
base = Color.new(88, 88, 80)
shadow = Color.new(168, 184, 184)
#alts_list= pbGetAvailableAlts
initializeSpritesPage(@available)
end
def initializeSpritesPage(altsList)
@sprites["selectedSprite"] = IconSprite.new(0,0,@viewport)
@sprites["selectedSprite"].x = X_POSITION_BIG
@sprites["selectedSprite"].y = Y_POSITION_SELECTED
@sprites["selectedSprite"].z = 999999
@sprites["selectedSprite"].visible=true
@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"].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"].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"].setBitmap(altsList[@selected_index])
if altsList.size >=2
@sprites["nextSprite"].setBitmap(altsList[@selected_index+1])
@sprites["nextSprite"].visible=true
end
if altsList.size >=3
@sprites["previousSprite"].setBitmap(altsList[-1])
@sprites["previousSprite"].visible=true
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"]
def pbGetAvailableForms
return pbGetAvailableAlts
end
def update_displayed
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
nextIndex=@selected_index+1
previousIndex= @selected_index-1
if nextIndex > @available.size-1
nextIndex = 0
end
if previousIndex <0
previousIndex = @available.size-1
end
@sprites["previousSprite"].setBitmap(@available[previousIndex])
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
@sprites["nextSprite"].setBitmap(@available[nextIndex])
end
def pbGetAvailableAlts
ret = []
return ret if !@species
body_id = getBodyID(@species)
head_id=getHeadID(@species,body_id)
baseFilename = head_id.to_s + "." + body_id.to_s
baseFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + ".png"
if pbResolveBitmap(baseFilePath)
ret << baseFilePath
end
POSSIBLE_ALTS.each { |alt_letter|
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
@sprites["downarrow"].visible = true
Graphics.update
Input.update
pbUpdate
if Input.trigger?(Input::UP)
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)
pbPlayCursorSE
@selected_index +=1#= (index+1)%@available.length
if @selected_index > @available.size-1
@selected_index = 0
end
update_displayed
elsif Input.trigger?(Input::BACK)
pbPlayCancelSE
break
elsif Input.trigger?(Input::USE)
pbPlayDecisionSE
if select_sprite
break
end
end
end
@sprites["uparrow"].visible = false
@sprites["downarrow"].visible = false
end
def is_main_sprite
return @selected_index == 0
end
def select_sprite
if is_main_sprite
pbMessage("This sprite is already the displayed sprite")
else
if pbConfirmMessage(_INTL('Would you like to use this sprite instead of the current sprite?'))
swap_main_sprite()
return true
end
end
return false
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
#
old_main_sprite = @available[0]
new_main_sprite = @available[@selected_index]
# code here
end
end