# Shows the player's (or partner's) Pokémon being thrown out. It appears at
# (@spritex,@spritey), and moves in y to @endspritey where it stays for the rest
# of the battle, i.e. the latter is the more important value.
# Doesn't show the ball itself being thrown.
class PokeballPlayerSendOutAnimation
# Ball curve: 8,52; 22,44; 52, 96
# Player: Color.new(16*8,23*8,30*8)
SPRITESTEPS=10
STARTZOOM=0.125
def initialize(sprite,spritehash,pkmn,doublebattle)
@disposed=false
@PokemonBattlerSprite=sprite
@pkmn=pkmn
@PokemonBattlerSprite.visible=false
@PokemonBattlerSprite.tone=Tone.new(248,248,248,248)
@spritehash=spritehash
if doublebattle
@spritex=pkmn.index==0 ? 64 : 180 # x coordinate of player's Pokémon
else
@spritex=128 # x coordinate of player's Pokémon
end
@spritey=Graphics.height-64 # Start y coordinate of player's Pokémon
@endspritey=adjustBattleSpriteY(@PokemonBattlerSprite,pkmn.species,pkmn.index)
@animdone=false
@frame=0
end
def disposed?
return @disposed
end
def animdone?
return @animdone
end
def dispose
return if disposed?
@disposed=true
end
def update
return if disposed?
@frame+=1
if @frame==4
@PokemonBattlerSprite.visible=true
@PokemonBattlerSprite.zoom_x=STARTZOOM
@PokemonBattlerSprite.zoom_y=STARTZOOM
pbSEPlay("recall")
pbSpriteSetCenter(@PokemonBattlerSprite,@spritex,@spritey)
pbPlayCry(@pkmn.pokemon ? @pkmn.pokemon : @pkmn.species)
end
if @frame>8 && @frame<=16
color=Color.new(248,248,248,256-(16-@frame)*32)
@spritehash["enemybase"].color=color
@spritehash["playerbase"].color=color
@spritehash["battlebg"].color=color
for i in 0...4
@spritehash["shadow#{i}"].color=color if @spritehash["shadow#{i}"]
end
end
if @frame>16 && @frame<=24
color=Color.new(248,248,248,(24-@frame)*32)
tone=(24-@frame)*32
@PokemonBattlerSprite.tone=Tone.new(tone,tone,tone,tone)
@spritehash["enemybase"].color=color
@spritehash["playerbase"].color=color
@spritehash["battlebg"].color=color
for i in 0...4
@spritehash["shadow#{i}"].color=color if @spritehash["shadow#{i}"]
end
end
if @frame>5 && @PokemonBattlerSprite.zoom_x<1.0
@PokemonBattlerSprite.zoom_x+=0.1
@PokemonBattlerSprite.zoom_y+=0.1
@PokemonBattlerSprite.zoom_x=1.0 if @PokemonBattlerSprite.zoom_x > 1.0
@PokemonBattlerSprite.zoom_y=1.0 if @PokemonBattlerSprite.zoom_y > 1.0
pbSpriteSetCenter(@PokemonBattlerSprite,@spritex,0)
@PokemonBattlerSprite.y=@spritey+(@endspritey-@spritey)*@PokemonBattlerSprite.zoom_y
end
if @PokemonBattlerSprite.tone.gray<=0 && @PokemonBattlerSprite.zoom_x>=1.0
@animdone=true
end
end
end