class PokemonDataBox < SpriteWrapper
attr_reader :battler
attr_accessor :selected
attr_accessor :appearing
attr_reader :animatingHP
attr_reader :animatingEXP
def initialize(battler,doublebattle,viewport=nil)
super(viewport)
@explevel=0
@battler=battler
@spritebaseY=0
@selected=0
@frame=0
@showhp=false
@showexp=false
@appearing=false
@animatingHP=false
@currenthp=0
@endhp=0
@expflash=0
@statusCX=64
@statusY=28
if (@battler.index&1)==0 # if player's Pokemon
@spritebaseX=16
@pokeball=sprintf("Graphics/Pictures/ball%02d_0.png",(@battler.pokemon.ballused))
else
@spritebaseX=0
@pokeball=BitmapCache.load_bitmap("Graphics/Pictures/pokeball.png")
end
yoffset=(Graphics.height-320)
if doublebattle
case @battler.index
when 0
@databox=BitmapCache.load_bitmap("Graphics/Pictures/doublePlayerBox.png")
@spriteX=256
@spriteY=124+yoffset
when 1
@databox=BitmapCache.load_bitmap("Graphics/Pictures/doubleEnemyBox.png")
@spriteX=26
@spriteY=10+yoffset
@spritebaseX=0
@spritebaseY=0
when 2
@databox=BitmapCache.load_bitmap("Graphics/Pictures/doublePlayerBox.png")
@spriteX=280
@spriteY=174+yoffset
when 3
@databox=BitmapCache.load_bitmap("Graphics/Pictures/doubleEnemyBox.png")
@spriteX=2
@spriteY=60+yoffset
end
else
case @battler.index
when 0
@databox=BitmapCache.load_bitmap("Graphics/Pictures/singlePlayerBox.png")
@spriteX=254
@spriteY=148+yoffset
@showhp=true
@showexp=true
@statusCX=40
@statusY=44
when 1
@databox=BitmapCache.load_bitmap("Graphics/Pictures/singleEnemyBox.png")
@spriteX=26
@spriteY=32+yoffset
end
end
@statuses=BitmapCache.load_bitmap(_INTL("Graphics/Pictures/boxstatuses.png"))
@contents=Bitmap.new(@databox.width,@databox.height)
self.bitmap=@contents
self.visible=false
self.z=2
refreshExpLevel
refresh
end
def dispose
@statuses.dispose
@databox.dispose
@contents.dispose
super
end
def refreshExpLevel
if
[email protected]
@explevel=0
else
[email protected]
startexp=PBExperience.pbGetStartExperience(@battler.pokemon.level,growthrate)
endexp=PBExperience.pbGetStartExperience(@battler.pokemon.level+1,growthrate)
if startexp==endexp
@explevel=0
else
@explevel=(@battler.pokemon.exp-startexp)*PokeBattle_Scene::EXPGAUGESIZE/(endexp-startexp)
end
end
end
def exp
return @animatingEXP ? @currentexp : @explevel
end
def hp
return @animatingHP ? @currenthp : @battler.hp
end
def animateHP(oldhp,newhp)
@currenthp=oldhp
@endhp=newhp
@animatingHP=true
end
def animateEXP(oldexp,newexp)
@currentexp=oldexp
@endexp=newexp
@animatingEXP=true
end
def appear
refreshExpLevel
refresh
self.visible=true
self.opacity=255
if (@battler.index&1)==0 # if player's Pokemon
self.x=@spriteX+320
else
self.x=@spriteX-320
end
self.y=@spriteY
@appearing=true
end
def refresh
self.bitmap.clear
return if
[email protected]
self.bitmap.blt(0,0,@databox,Rect.new(0,0,@databox.width,@databox.height))
pbSetSmallFont(self.bitmap)
hpstring=_ISPRINTF("{1: 2d}/{2: 2d}",self.hp,@battler.totalhp)
textpos=[]
base=PokeBattle_Scene::BOXTEXTBASECOLOR
shadow=PokeBattle_Scene::BOXTEXTSHADOWCOLOR
genderX=self.bitmap.text_size(@battler.name).width
genderX+=@spritebaseX+14
textpos.push([@battler.name,@spritebaseX+14,@spritebaseY+6,false,base,shadow])
if @battler.gender==0 # Male
textpos.push([_INTL("♂"),genderX,@spritebaseY+6,false,Color.new(8*8,25*8,31*8),shadow])
elsif @battler.gender==1 # Female
textpos.push([_INTL("♀"),genderX,@spritebaseY+6,false,Color.new(31*8,19*8,18*8),shadow])
end
textpos.push([_INTL("Lv{1}",@battler.level),@spritebaseX+170,@spritebaseY+6,true,base,shadow])
if @showhp
textpos.push([hpstring,@spritebaseX+170,@spritebaseY+40,true,base,shadow])
end
pbCopyBitmap(self.bitmap,@pokeball,@spritebaseX+5,@spritebaseY+25) if $Trainer.owned[battler.species]
pbDrawTextPositions(self.bitmap,textpos)
if @battler.status>0
self.bitmap.blt(@spritebaseX+14,@spritebaseY+@statusY,@statuses,
Rect.new(0,(@battler.status-1)*16,@statusCX,16))
end
hpGaugeSize=PokeBattle_Scene::HPGAUGESIZE
[email protected]==0 ? 0 : (self.hp*hpGaugeSize/@battler.totalhp)
hpgauge=1 if hpgauge==0 && self.hp>0
hpzone=0
hpzone=1 if self.hp<=(@battler.totalhp/2).floor
hpzone=2 if self.hp<=(@battler.totalhp/4).floor
hpcolors=[
PokeBattle_Scene::HPCOLORSHADOW1,
PokeBattle_Scene::HPCOLORBASE1,
PokeBattle_Scene::HPCOLORSHADOW2,
PokeBattle_Scene::HPCOLORBASE2,
PokeBattle_Scene::HPCOLORSHADOW3,
PokeBattle_Scene::HPCOLORBASE3
]
# fill with HP color
hpGaugeX=PokeBattle_Scene::HPGAUGE_X
hpGaugeY=PokeBattle_Scene::HPGAUGE_Y
expGaugeX=PokeBattle_Scene::EXPGAUGE_X
expGaugeY=PokeBattle_Scene::EXPGAUGE_Y
self.bitmap.fill_rect(@spritebaseX+hpGaugeX,@spritebaseY+hpGaugeY,hpgauge,2,hpcolors[hpzone*2])
self.bitmap.fill_rect(@spritebaseX+hpGaugeX,@spritebaseY+hpGaugeY+2,hpgauge,2,hpcolors[hpzone*2+1])
# fill with black
self.bitmap.fill_rect(@spritebaseX+hpGaugeX+hpgauge,@spritebaseY+hpGaugeY,hpGaugeSize-hpgauge,2,PokeBattle_Scene::HPCOLORSHADOW4)
self.bitmap.fill_rect(@spritebaseX+hpGaugeX+hpgauge,@spritebaseY+hpGaugeY+2,hpGaugeSize-hpgauge,2,PokeBattle_Scene::HPCOLORBASE4)
if @showexp
# fill with EXP color
self.bitmap.fill_rect(@spritebaseX+expGaugeX,@spritebaseY+expGaugeY,self.exp,4,PokeBattle_Scene::EXPCOLOR)
end
end