Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PokemonPartyCancelSprite < PokemonPartyConfirmCancelSprite
- alias initialize_old initialize
- def initialize(viewport=nil)
- super(_INTL("CANCEL"),518,420,false,viewport)
- end
- end
- class PokemonIconOverWorldSprite < SpriteWrapper
- attr_accessor :selected
- attr_accessor :active
- attr_reader :pokemon
- def initialize(pokemon,viewport=nil)
- super(viewport)
- @animbitmap=nil
- @selected=false
- @animframe=0
- @active=false
- self.pokemon=pokemon
- @shiny=true if pokemon.isShiny?
- @frame=0
- @pokemon=pokemon
- @adjusted_x=0
- @adjusted_y=0
- @logical_x=0
- @logical_y=0
- end
- def pokemon=(value)
- @pokemon=value
- @animbitmap.dispose if @animbitmap
- @animbitmap=nil
- if @pokemon
- icon=pokemon.isShiny? ? "Graphics/Characters/%03ds" : "Graphics/Characters/%03d"
- @animbitmap=BitmapCache.load_bitmap(sprintf(icon,value.species))
- if value.species<493
- @frames=[
- Rect.new(0,0,@animbitmap.width/4,@animbitmap.height/4),
- Rect.new(128,0,@animbitmap.width/4,@animbitmap.height/4)
- ]
- else
- @frames=[
- Rect.new(0,0,@animbitmap.width/4,@animbitmap.height/4),
- Rect.new(@animbitmap.width/4,0,@animbitmap.width/4,@animbitmap.height/4)
- ]
- end
- self.bitmap=@animbitmap#.bitmap
- self.src_rect=@frames[@animframe]
- else
- self.bitmap=nil
- end
- end
- def dispose
- @animbitmap.dispose if @animbitmap
- super
- end
- def x
- @logical_x
- end
- def y
- @logical_y
- end
- def x=(value)
- @logical_x=value
- super(@logical_x+@adjusted_x)
- end
- def y=(value)
- @logical_y=value
- super(@logical_y+@adjusted_y)
- end
- def update
- @updating=true
- super
- if @animbitmap
- # @animbitmap.update
- self.bitmap=@animbitmap#.bitmap
- self.src_rect=@frames[@animframe]
- end
- self.color=Color.new(0,0,0,0)
- frameskip=5
- frameskip=10 if @pokemon && @pokemon.hp<=(@pokemon.totalhp/2)
- frameskip=20 if @pokemon && @pokemon.hp<=(@pokemon.totalhp/4)
- frameskip=-1 if @pokemon && @pokemon.hp==0
- if frameskip==-1
- @animframe=0
- self.src_rect=@frames[@animframe]
- else
- @frame+=1
- @frame=0 if @frame>100
- if @frame>=frameskip
- @animframe=(@animframe==1) ? 0 : 1
- self.src_rect=@frames[@animframe]
- @frame=0
- end
- end
- @adjusted_x=0
- @adjusted_y=0
- @updating=false
- self.x=self.x
- self.y=self.y
- end
- end
- class PokemonPartyPanel < SpriteWrapper
- alias initialize_old initialize
- def initialize(pokemon,index,viewport=nil)
- super(viewport)
- @viewport=viewport
- @pokemon = pokemon
- @active = (index==0) # true = rounded panel, false = rectangular panel
- @refreshing = true
- self.x = [20,326,20,326,20,326][index]
- self.y = [20,20,156,156,288,288][index]
- @panelbgsprite = ChangelingSprite.new(0,0,viewport)
- @panelbgsprite.z = self.z
- if @active # Rounded panel
- box=@pokemon.isMale? ? "Graphics/Pictures/Party/MaleBox" : "Graphics/Pictures/Party/femaleboxes"
- box="Graphics/Pictures/Party/MaleBox" if !@pokemon.isMale? && !@pokemon.isFemale?
- @panelbgsprite.addBitmap("able",box)
- @panelbgsprite.addBitmap("ablesel",box)
- else # Rectangular panel
- box=@pokemon.isMale? ? "Graphics/Pictures/Party/MaleBox" : "Graphics/Pictures/Party/femaleboxes"
- @panelbgsprite.addBitmap("able",box)
- @panelbgsprite.addBitmap("ablesel",box)
- end
- @hpbgsprite = ChangelingSprite.new(0,0,viewport)
- @hpbgsprite.z = self.z+1
- @hpbgsprite.addBitmap("able","Graphics/Pictures/Party/overlay_hp_back")
- @hpbgsprite.addBitmap("fainted","Graphics/Pictures/Party/overlay_hp_back_faint")
- @hpbgsprite.addBitmap("swap","Graphics/Pictures/Party/overlay_hp_back_swap")
- @ballcaught = AnimatedBitmap.new(_INTL("Graphics/Pictures/Party/pokeballs"))
- @pkmnsprite = PokemonIconOverWorldSprite.new(pokemon,viewport)
- @pkmnsprite.active = @active
- @pkmnsprite.z = self.z+2
- @helditemsprite = HeldItemIconSprite.new(0,0,@pokemon,viewport)
- @helditemsprite.z = self.z+3
- @overlaysprite = BitmapSprite.new(Graphics.width,Graphics.height,viewport)
- @overlaysprite.z = self.z+4
- @hpbar = AnimatedBitmap.new("Graphics/Pictures/Party/overlay_hp")
- @statuses = BitmapWrapperSprite.new(@viewport)
- @statuses.visible=false
- @selected = false
- @preselected = false
- @switching = false
- @text = nil
- @refreshBitmap = true
- @refreshing = false
- refresh
- end
- alias dispose_old dispose
- def dispose
- @panelbgsprite.dispose
- @hpbgsprite.dispose
- @pkmnsprite.dispose
- @helditemsprite.dispose
- @overlaysprite.bitmap.dispose
- @overlaysprite.dispose
- @hpbar.dispose
- @statuses.dispose
- super
- end
- alias refresh_old refresh
- def refresh
- return if disposed?
- return if @refreshing
- @refreshing = true
- if @panelbgsprite && !@panelbgsprite.disposed?
- if self.selected
- if self.preselected; @panelbgsprite.changeBitmap("able")
- elsif @switching; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,124,288,124)
- elsif @pokemon.fainted?; @panelbgsprite.changeBitmap("able"); @panelbgsprite.opacity=200; @panelbgsprite.src_rect=Rect.new(0,124,288,124)
- else; @panelbgsprite.changeBitmap("ablesel"); @panelbgsprite.src_rect=Rect.new(0,124,288,124)
- end
- else
- if self.preselected; @panelbgsprite.changeBitmap("able")
- elsif @pokemon.fainted?; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,0,288,124)
- else; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,0,288,124)
- end
- end
- @panelbgsprite.x = self.x
- @panelbgsprite.y = self.y
- @panelbgsprite.color = self.color
- end
- if @hpbgsprite && !@hpbgsprite.disposed?
- @hpbgsprite.visible = (!@pokemon.egg? && !(@text && @text.length>0))
- if @hpbgsprite.visible
- if self.preselected || (self.selected && @switching); @hpbgsprite.changeBitmap("swap")
- elsif @pokemon.fainted?; @panelbgsprite.opacity=200
- else; @hpbgsprite.changeBitmap("able")
- end
- @hpbgsprite.x = self.x+120
- @hpbgsprite.y = self.y+50
- @hpbgsprite.color = self.color
- end
- end
- if @pkmnsprite && !@pkmnsprite.disposed?
- extra_x=@pkmnsprite.bitmap.width>256 ? 34 : 0
- extra_y=@pkmnsprite.bitmap.width>256 ? 30 : 0
- @pkmnsprite.x = self.x+24-extra_x
- @pkmnsprite.y = self.y+20-extra_y
- @pkmnsprite.color = self.color
- @pkmnsprite.selected = self.selected
- end
- if @helditemsprite && !@helditemsprite.disposed?
- if @helditemsprite.visible
- @helditemsprite.x = self.x+110
- @helditemsprite.y = self.y+94
- @helditemsprite.color = self.color
- end
- end
- if @overlaysprite && !@overlaysprite.disposed?
- @overlaysprite.x = self.x
- @overlaysprite.y = self.y
- @overlaysprite.color = self.color
- end
- # Draw status
- if @refreshBitmap
- @refreshBitmap = false
- @overlaysprite.bitmap.clear if @overlaysprite.bitmap
- basecolor = Color.new(248,248,248)
- shadowcolor = Color.new(40,40,40)
- pbSetSystemFont(@overlaysprite.bitmap)
- textpos = []
- x=12
- # Draw Pokémon name
- textpos.push([@pokemon.name,98+x,12,0,basecolor,shadowcolor])
- if !@pokemon.egg?
- if !@text || @text.length==0
- # Draw HP numbers
- textpos.push([sprintf("% 3d /% 3d",@pokemon.hp,@pokemon.totalhp),224+x+12,60,1,basecolor,shadowcolor])
- # Draw HP bar
- if @pokemon.hp>0
- hpzone = 0
- hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
- hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
- hprect = Rect.new(0,hpzone*8,[@pokemon.hp*96/@pokemon.totalhp,2].max,8)
- @overlaysprite.bitmap.blt(152,52,@hpbar.bitmap,hprect)
- end
- end
- if @pokemon.item>0
- textpos.push([_INTL(PBItems.getName(@pokemon.item)),134,86,0,basecolor,shadowcolor])
- end
- # Draw gender icon
- end
- ballrect = Rect.new(@pokemon.ballused*41,0,41,40)
- @overlaysprite.bitmap.blt(8,8,@ballcaught.bitmap,ballrect)
- pbDrawTextPositions(@overlaysprite.bitmap,textpos)
- status = -1
- status = 6 if @pokemon.pokerusStage==1
- status = @pokemon.status-1 if @pokemon.status>0
- status = 5 if @pokemon.hp<=0
- if status>=0
- @statuses.visible=true
- @statuses.x=self.x+10
- @statuses.y=self.y+9
- @statuses.setBitmap("Graphics/Pictures/Party/status#{status}")
- @statuses.color=self.color
- end
- # Draw level text
- if !@pokemon.egg?
- pbDrawImagePositions(@overlaysprite.bitmap,[[
- "Graphics/Pictures/Party/overlay_lv",228,24,0,0,22,14]])
- pbSetSmallFont(@overlaysprite.bitmap)
- pbDrawTextPositions(@overlaysprite.bitmap,[
- [@pokemon.level.to_s,252,16,0,basecolor,shadowcolor]
- ])
- end
- # Draw annotation text
- if @text && @text.length>0
- pbSetSystemFont(@overlaysprite.bitmap)
- pbDrawTextPositions(@overlaysprite.bitmap,[
- [@text,96,58,0,basecolor,shadowcolor]
- ])
- end
- end
- @refreshing = false
- end
- alias update_old update
- def update
- super
- @panelbgsprite.update if @panelbgsprite && !@panelbgsprite.disposed?
- @hpbgsprite.update if @hpbgsprite && !@hpbgsprite.disposed?
- @pkmnsprite.update if @pkmnsprite && !@pkmnsprite.disposed?
- @helditemsprite.update if @helditemsprite && !@helditemsprite.disposed?
- @statuses.update if @statuses && !@statuses.disposed?
- end
- end
- class PokemonParty_Scene
- alias pbEndScene_old pbEndScene
- def pbEndScene
- pbFadeOutAndHide(@sprites) { update }
- pbDisposeSpriteHash(@sprites)
- @viewport.dispose
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement