Files
infinitefusion-e18/Data/Scripts/016_UI/PokemonStorage/UI/PokemonBoxPartySprite.rb
2025-09-28 15:53:01 -04:00

122 lines
3.0 KiB
Ruby

#===============================================================================
# Party pop-up panel
#===============================================================================
class PokemonBoxPartySprite < SpriteWrapper
def initialize(party, viewport = nil)
super(viewport)
@party = party
@boxbitmap = AnimatedBitmap.new("Graphics/Pictures/Storage/overlay_party")
@pokemonsprites = []
for i in 0...Settings::MAX_PARTY_SIZE
@pokemonsprites[i] = nil
pokemon = @party[i]
if pokemon
@pokemonsprites[i] = PokemonBoxIcon.new(pokemon, viewport)
end
end
@contents = BitmapWrapper.new(172, 352)
self.bitmap = @contents
self.x = 182
self.y = Graphics.height - 352
pbSetSystemFont(self.bitmap)
refresh
end
def dispose
for i in 0...Settings::MAX_PARTY_SIZE
@pokemonsprites[i].dispose if @pokemonsprites[i]
end
@boxbitmap.dispose
@contents.dispose
super
end
def x=(value)
super
refresh
end
def y=(value)
super
refresh
end
def color=(value)
super
for i in 0...Settings::MAX_PARTY_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].color = pbSrcOver(@pokemonsprites[i].color, value)
end
end
end
def visible=(value)
super
for i in 0...Settings::MAX_PARTY_SIZE
if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
@pokemonsprites[i].visible = value
end
end
end
def getPokemon(index)
return @pokemonsprites[index]
end
def setPokemon(index, sprite)
@pokemonsprites[index] = sprite
@pokemonsprites.compact!
refresh
end
def grabPokemon(index, arrow)
sprite = @pokemonsprites[index]
if sprite
arrow.grab(sprite)
@pokemonsprites[index] = nil
@pokemonsprites.compact!
refresh
end
end
def deletePokemon(index)
@pokemonsprites[index].dispose
@pokemonsprites[index] = nil
@pokemonsprites.compact!
refresh
end
def refresh
@contents.blt(0, 0, @boxbitmap.bitmap, Rect.new(0, 0, 172, 352))
pbDrawTextPositions(self.bitmap, [
[_INTL("Back"), 86, 240, 2, Color.new(248, 248, 248), Color.new(80, 80, 80), 1]
])
xvalues = [] # [18, 90, 18, 90, 18, 90]
yvalues = [] # [2, 18, 66, 82, 130, 146]
for i in 0...Settings::MAX_PARTY_SIZE
xvalues.push(18 + 72 * (i % 2))
yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2))
end
for j in 0...Settings::MAX_PARTY_SIZE
@pokemonsprites[j] = nil if @pokemonsprites[j] && @pokemonsprites[j].disposed?
end
@pokemonsprites.compact!
for j in 0...Settings::MAX_PARTY_SIZE
sprite = @pokemonsprites[j]
next if sprite.nil? || sprite.disposed?
sprite.viewport = self.viewport
sprite.x = self.x + xvalues[j]
sprite.y = self.y + yvalues[j]
sprite.z = 1
end
end
def update
super
for i in 0...Settings::MAX_PARTY_SIZE
@pokemonsprites[i].update if @pokemonsprites[i] && !@pokemonsprites[i].disposed?
end
end
end