mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 05:34:58 +00:00
208 lines
6.3 KiB
Ruby
208 lines
6.3 KiB
Ruby
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
|
|
|
|
Y_POSITION_SMALL = 40
|
|
Y_POSITION_BIG = 50
|
|
|
|
X_POSITION_PREVIOUS=-20
|
|
X_POSITION_SELECTED=120
|
|
X_POSITION_NEXT=340
|
|
|
|
|
|
|
|
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
|
|
@selected_index=0
|
|
update_displayed
|
|
end
|
|
|
|
|
|
def initializeSpritesPage(altsList)
|
|
@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"].zoom_x = 1
|
|
@sprites["selectedSprite"].zoom_y = 1
|
|
|
|
@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"].zoom_x = Settings::FRONTSPRITE_SCALE
|
|
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE
|
|
|
|
@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"].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= %w[a b c d e f g h i j k x]
|
|
|
|
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"].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])
|
|
|
|
end
|
|
|
|
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)
|
|
|
|
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
|
|
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::RIGHT)
|
|
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::LEFT)
|
|
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
|
|
@endscene=true
|
|
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
|
|
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 |