show selected sprite in preview underneath in pc fusion screen

This commit is contained in:
infinitefusion
2022-07-20 16:08:34 -04:00
parent fa80d2cd7c
commit 140ad57244

View File

@@ -56,13 +56,17 @@ class PokemonBoxIcon < IconSprite
@startRelease = true
end
def refresh
def refresh(fusion_enabled = true)
return if !@pokemon
if useRegularIcon(@pokemon.species) || @pokemon.egg?
self.setBitmap(GameData::Species.icon_filename_from_pokemon(@pokemon))
else
self.setBitmapDirectly(createFusionIcon(@pokemon.species))
if fusion_enabled
self.visible = true
else
self.visible = false
end
end
self.src_rect = Rect.new(0, 0, self.bitmap.height, self.bitmap.height)
end
@@ -349,7 +353,7 @@ class PokemonBoxSprite < SpriteWrapper
attr_accessor :refreshBox
attr_accessor :refreshSprites
def initialize(storage,boxnumber,viewport=nil)
def initialize(storage, boxnumber, viewport = nil, fusionsEnabled=true )
super(viewport)
@storage = storage
@boxnumber = boxnumber
@@ -365,9 +369,25 @@ class PokemonBoxSprite < SpriteWrapper
self.bitmap = @contents
self.x = 184
self.y = 18
@fusions_enabled = fusionsEnabled
refresh
end
def disableFusions()
@fusions_enabled = false
refreshAllBoxSprites()
end
def enableFusions()
@fusions_enabled = true
refreshAllBoxSprites()
end
def isFusionEnabled
return @fusions_enabled
end
def dispose
if !disposed?
for i in 0...PokemonBox::BOX_SIZE
@@ -448,14 +468,14 @@ class PokemonBoxSprite < SpriteWrapper
if sprite
arrow.grab(sprite)
@pokemonsprites[index] = nil
refresh
update
end
end
def deletePokemon(index)
@pokemonsprites[index].dispose
@pokemonsprites[index] = nil
refresh
update
end
def refresh
@@ -487,6 +507,14 @@ class PokemonBoxSprite < SpriteWrapper
end
end
def refreshAllBoxSprites
for i in 0...PokemonBox::BOX_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].refresh(@fusions_enabled)
end
end
end
def update
super
for i in 0...PokemonBox::BOX_SIZE
@@ -624,6 +652,7 @@ end
#===============================================================================
class PokemonStorageScene
attr_reader :quickswap
attr_accessor :sprites
def initialize
@command = 1
@@ -1073,7 +1102,7 @@ class PokemonStorageScene
end
def pbSwitchBoxToRight(newbox)
newbox = PokemonBoxSprite.new(@storage,newbox,@boxviewport)
newbox = PokemonBoxSprite.new(@storage, newbox, @boxviewport,@sprites["box"].isFusionEnabled)
newbox.x = 520
Graphics.frame_reset
distancePerFrame = 64 * 20 / Graphics.frame_rate
@@ -1090,10 +1119,11 @@ class PokemonStorageScene
@sprites["box"].x -= diff
@sprites["box"].dispose
@sprites["box"] = newbox
newbox.refreshAllBoxSprites
end
def pbSwitchBoxToLeft(newbox)
newbox = PokemonBoxSprite.new(@storage,newbox,@boxviewport)
newbox = PokemonBoxSprite.new(@storage, newbox, @boxviewport,@sprites["box"].isFusionEnabled)
newbox.x = -152
Graphics.frame_reset
distancePerFrame = 64 * 20 / Graphics.frame_rate
@@ -1110,6 +1140,7 @@ class PokemonStorageScene
@sprites["box"].x -= diff
@sprites["box"].dispose
@sprites["box"] = newbox
newbox.refreshAllBoxSprites
end
def pbJumpToBox(newbox)
@@ -1120,6 +1151,7 @@ class PokemonStorageScene
pbSwitchBoxToLeft(newbox)
end
@storage.currentBox = newbox
newbox.refreshAllBoxSprites
end
end
@@ -1340,16 +1372,24 @@ class PokemonStorageScene
selection -= 3 if selection % 3 == 0
end
when Input::UP
if selection==7; selection = 6
elsif selection==6; selection = 4
elsif selection<3; selection = 7
else; selection -= 3
if selection == 7;
selection = 6
elsif selection == 6;
selection = 4
elsif selection < 3;
selection = 7
else
; selection -= 3
end
when Input::DOWN
if selection==7; selection = 1
elsif selection==6; selection = 7
elsif selection>=3; selection = 6
else; selection += 3
if selection == 7;
selection = 1
elsif selection == 6;
selection = 7
elsif selection >= 3;
selection = 6
else
; selection += 3
end
end
return selection
@@ -1470,7 +1510,7 @@ class PokemonStorageScene
[_INTL("Exit"), 446, 326, 2, buttonbase, buttonshadow, 1],
])
pokemon = nil
if @screen.pbHeldPokemon
if @screen.pbHeldPokemon && !@screen.fusionMode
pokemon = @screen.pbHeldPokemon
elsif selection >= 0
pokemon = (party) ? party[selection] : @storage[@storage.currentBox, selection]
@@ -1532,9 +1572,6 @@ class PokemonStorageScene
pbUpdateSpriteHash(@sprites)
end
def setFusing(fusing, item = 0)
sprite = @sprites["arrow"].setFusing(fusing)
if item == :INFINITESPLICERS
@@ -1556,6 +1593,7 @@ class PokemonStorageScreen
attr_reader :scene
attr_reader :storage
attr_accessor :heldpkmn
attr_accessor :fusionMode
def initialize(scene, storage)
@scene = scene
@@ -1563,8 +1601,6 @@ class PokemonStorageScreen
@pbHeldPokemon = nil
end
def pbStartScreen(command)
@heldpkmn = nil
if command == 0 # Organise
@@ -1696,10 +1732,13 @@ class PokemonStorageScreen
_INTL("Cancel")
])
case command
when 0 then pbWithdraw(selected, nil)
when 1 then pbSummary(selected, nil)
when 0 then
pbWithdraw(selected, nil)
when 1 then
pbSummary(selected, nil)
#when 2 then pbMark(selected, nil)
when 2 then pbRelease(selected, nil)
when 2 then
pbRelease(selected, nil)
end
end
@@ -1730,10 +1769,14 @@ class PokemonStorageScreen
_INTL("Cancel")
])
case command
when 0 then pbStore([-1, selected], nil)
when 1 then pbSummary([-1, selected], nil)
when 2 then pbMark([-1, selected], nil)
when 3 then pbRelease([-1, selected], nil)
when 0 then
pbStore([-1, selected], nil)
when 1 then
pbSummary([-1, selected], nil)
when 2 then
pbMark([-1, selected], nil)
when 3 then
pbRelease([-1, selected], nil)
end
end
end
@@ -1752,7 +1795,8 @@ class PokemonStorageScreen
@scene.pbHardRefresh
end
def pbRefreshSingle(i) # For debug
def pbRefreshSingle(i)
# For debug
@scene.pbUpdateOverlay(i[1], (i[0] == -1) ? @storage.party : nil)
@scene.pbHardRefresh
end
@@ -2095,7 +2139,6 @@ class PokemonStorageScreen
return retval
end
#
# Fusion stuff
#
@@ -2112,13 +2155,11 @@ class PokemonStorageScreen
end
end
splicerItem = selectSplicer()
if splicerItem == nil
cancelFusion()
return
end
isSuperSplicer = isSuperSplicer?(splicerItem)
if !heldpoke
@fusionMode = true
@@ -2126,6 +2167,7 @@ class PokemonStorageScreen
@scene.setFusing(true, @fusionItem)
pbHold(selected)
pbDisplay(_INTL("Select a Pokémon to fuse it with"))
@scene.sprites["box"].disableFusions()
return
end
if !poke_body
@@ -2146,6 +2188,7 @@ class PokemonStorageScreen
@splicerItem = nil
@scene.setFusing(false)
@fusionMode = false
@scene.sprites["box"].enableFusions()
end
def canDeleteItem(item)
@@ -2156,7 +2199,6 @@ class PokemonStorageScreen
return item == :SUPERSPLICERS || item == :INFINITESPLICERS2
end
def pbFusionCommands(selected)
heldpoke = pbHeldPokemon
pokemon = @storage[selected[0], selected[1]]
@@ -2202,6 +2244,7 @@ class PokemonStorageScreen
deleteHeldPokemon(heldpoke, selected)
@scene.setFusing(false)
@fusionMode = false
@scene.sprites["box"].enableFusions()
return
else
# print "fusion cancelled"
@@ -2242,7 +2285,6 @@ class PokemonStorageScreen
end
end
def selectSplicer()
dna_splicers_const = "DNA Splicers"
super_splicers_const = "Super Splicers"
@@ -2278,5 +2320,4 @@ class PokemonStorageScreen
return nil
end
end