Guest User

PartyUpdates

a guest
Jul 9th, 2018
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.00 KB | None | 0 0
  1. class PokemonPartyCancelSprite < PokemonPartyConfirmCancelSprite
  2. alias initialize_old initialize
  3. def initialize(viewport=nil)
  4. super(_INTL("CANCEL"),518,420,false,viewport)
  5. end
  6. end
  7.  
  8.  
  9. class PokemonIconOverWorldSprite < SpriteWrapper
  10. attr_accessor :selected
  11. attr_accessor :active
  12. attr_reader :pokemon
  13.  
  14. def initialize(pokemon,viewport=nil)
  15. super(viewport)
  16. @animbitmap=nil
  17.  
  18. @selected=false
  19. @animframe=0
  20. @active=false
  21. self.pokemon=pokemon
  22. @shiny=true if pokemon.isShiny?
  23. @frame=0
  24. @pokemon=pokemon
  25. @adjusted_x=0
  26. @adjusted_y=0
  27. @logical_x=0
  28. @logical_y=0
  29. end
  30.  
  31. def pokemon=(value)
  32. @pokemon=value
  33. @animbitmap.dispose if @animbitmap
  34. @animbitmap=nil
  35. if @pokemon
  36. icon=pokemon.isShiny? ? "Graphics/Characters/%03ds" : "Graphics/Characters/%03d"
  37. @animbitmap=BitmapCache.load_bitmap(sprintf(icon,value.species))
  38. @frames=[
  39. Rect.new(0,0,@animbitmap.width/4,@animbitmap.height/4),
  40. Rect.new(@animbitmap.width/4,0,@animbitmap.width/4,@animbitmap.height/4)
  41. ]
  42. self.bitmap=@animbitmap#.bitmap
  43. self.src_rect=@frames[@animframe]
  44. else
  45. self.bitmap=nil
  46. end
  47. end
  48.  
  49. def dispose
  50. @animbitmap.dispose if @animbitmap
  51. super
  52. end
  53.  
  54. def x
  55. @logical_x
  56. end
  57.  
  58. def y
  59. @logical_y
  60. end
  61.  
  62. def x=(value)
  63. @logical_x=value
  64. super(@logical_x+@adjusted_x)
  65. end
  66.  
  67. def y=(value)
  68. @logical_y=value
  69. super(@logical_y+@adjusted_y)
  70. end
  71.  
  72. def update
  73. @updating=true
  74. super
  75. if @animbitmap
  76. # @animbitmap.update
  77. self.bitmap=@animbitmap#.bitmap
  78. self.src_rect=@frames[@animframe]
  79. end
  80. self.color=Color.new(0,0,0,0)
  81. frameskip=5
  82. frameskip=10 if @pokemon && @pokemon.hp<=(@pokemon.totalhp/2)
  83. frameskip=20 if @pokemon && @pokemon.hp<=(@pokemon.totalhp/4)
  84. frameskip=-1 if @pokemon && @pokemon.hp==0
  85. if frameskip==-1
  86. @animframe=0
  87. self.src_rect=@frames[@animframe]
  88. else
  89. @frame+=1
  90. @frame=0 if @frame>100
  91. if @frame>=frameskip
  92. @animframe=(@animframe==1) ? 0 : 1
  93. self.src_rect=@frames[@animframe]
  94. @frame=0
  95. end
  96. end
  97. @adjusted_x=0
  98. @adjusted_y=0
  99. @updating=false
  100. self.x=self.x
  101. self.y=self.y
  102. end
  103. end
  104.  
  105. class PokemonPartyPanel < SpriteWrapper
  106. alias initialize_old initialize
  107. def initialize(pokemon,index,viewport=nil)
  108. super(viewport)
  109. viewport=viewport
  110. @pokemon = pokemon
  111. @active = (index==0) # true = rounded panel, false = rectangular panel
  112. @refreshing = true
  113. self.x = [20,326,20,326,20,326][index]
  114. self.y = [20,20,156,156,288,288][index]
  115. @panelbgsprite = ChangelingSprite.new(0,0,viewport)
  116. @panelbgsprite.z = self.z
  117. if @active # Rounded panel
  118. box=@pokemon.isMale? ? "Graphics/Pictures/Party/MaleBox" : "Graphics/Pictures/Party/femaleboxes"
  119. box="Graphics/Pictures/Party/MaleBox" if !@pokemon.isMale? && !@pokemon.isFemale?
  120. @panelbgsprite.addBitmap("able",box)
  121. @panelbgsprite.addBitmap("ablesel",box)
  122. else # Rectangular panel
  123. box=@pokemon.isMale? ? "Graphics/Pictures/Party/MaleBox" : "Graphics/Pictures/Party/femaleboxes"
  124. @panelbgsprite.addBitmap("able",box)
  125. @panelbgsprite.addBitmap("ablesel",box)
  126. end
  127. @hpbgsprite = ChangelingSprite.new(0,0,viewport)
  128. @hpbgsprite.z = self.z+1
  129. @hpbgsprite.addBitmap("able","Graphics/Pictures/Party/overlay_hp_back")
  130. @hpbgsprite.addBitmap("fainted","Graphics/Pictures/Party/overlay_hp_back_faint")
  131. @hpbgsprite.addBitmap("swap","Graphics/Pictures/Party/overlay_hp_back_swap")
  132. @ballcaught = AnimatedBitmap.new(_INTL("Graphics/Pictures/Party/pokeballs"))
  133. @pkmnsprite = PokemonIconOverWorldSprite.new(pokemon,viewport)
  134. @pkmnsprite.active = @active
  135. @pkmnsprite.z = self.z+2
  136. @helditemsprite = HeldItemIconSprite.new(0,0,@pokemon,viewport)
  137. @helditemsprite.z = self.z+3
  138. @overlaysprite = BitmapSprite.new(Graphics.width,Graphics.height,viewport)
  139. @overlaysprite.z = self.z+4
  140. @hpbar = AnimatedBitmap.new("Graphics/Pictures/Party/overlay_hp")
  141. @statuses = BitmapWrapperSprite.new(viewport)
  142. @statuses.setBitmap("Graphics/Pictures/Party/status#{@pokemon.status}")
  143. @statuses.visible=false
  144. @selected = false
  145. @preselected = false
  146. @switching = false
  147. @text = nil
  148. @refreshBitmap = true
  149. @refreshing = false
  150. refresh
  151. end
  152. alias dispose_old dispose
  153. def dispose
  154. @panelbgsprite.dispose
  155. @hpbgsprite.dispose
  156. @pkmnsprite.dispose
  157. @helditemsprite.dispose
  158. @overlaysprite.bitmap.dispose
  159. @overlaysprite.dispose
  160. @hpbar.dispose
  161. @statuses.dispose
  162. super
  163. end
  164.  
  165. alias refresh_old refresh
  166. def refresh
  167. return if disposed?
  168. return if @refreshing
  169. @refreshing = true
  170. if @panelbgsprite && !@panelbgsprite.disposed?
  171. if self.selected
  172. if self.preselected; @panelbgsprite.changeBitmap("able")
  173. elsif @switching; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,124,288,124)
  174. elsif @pokemon.fainted?; @panelbgsprite.changeBitmap("able"); @panelbgsprite.opacity=200; @panelbgsprite.src_rect=Rect.new(0,124,288,124)
  175. else; @panelbgsprite.changeBitmap("ablesel"); @panelbgsprite.src_rect=Rect.new(0,124,288,124)
  176. end
  177. else
  178. if self.preselected; @panelbgsprite.changeBitmap("able")
  179. elsif @pokemon.fainted?; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,0,288,124)
  180. else; @panelbgsprite.changeBitmap("able"); @panelbgsprite.src_rect=Rect.new(0,0,288,124)
  181. end
  182. end
  183. @panelbgsprite.x = self.x
  184. @panelbgsprite.y = self.y
  185. @panelbgsprite.color = self.color
  186. end
  187. if @hpbgsprite && !@hpbgsprite.disposed?
  188. @hpbgsprite.visible = (!@pokemon.egg? && !(@text && @text.length>0))
  189. if @hpbgsprite.visible
  190. if self.preselected || (self.selected && @switching); @hpbgsprite.changeBitmap("swap")
  191. elsif @pokemon.fainted?; @hpbgsprite.changeBitmap("fainted")
  192. else; @hpbgsprite.changeBitmap("able")
  193. end
  194. @hpbgsprite.x = self.x+120
  195. @hpbgsprite.y = self.y+50
  196. @hpbgsprite.color = self.color
  197. end
  198. end
  199. if @pkmnsprite && !@pkmnsprite.disposed?
  200. extra_x=@pkmnsprite.bitmap.width>256 ? 34 : 0
  201. extra_y=@pkmnsprite.bitmap.width>256 ? 30 : 0
  202. @pkmnsprite.x = self.x+24-extra_x
  203. @pkmnsprite.y = self.y+20-extra_y
  204. @pkmnsprite.color = self.color
  205. @pkmnsprite.selected = self.selected
  206. end
  207. if @helditemsprite && !@helditemsprite.disposed?
  208. if @helditemsprite.visible
  209. @helditemsprite.x = self.x+110
  210. @helditemsprite.y = self.y+94
  211. @helditemsprite.color = self.color
  212. end
  213. end
  214. if @overlaysprite && !@overlaysprite.disposed?
  215. @overlaysprite.x = self.x
  216. @overlaysprite.y = self.y
  217. @overlaysprite.color = self.color
  218. end
  219. # Draw status
  220. if @refreshBitmap
  221. @refreshBitmap = false
  222. @overlaysprite.bitmap.clear if @overlaysprite.bitmap
  223. basecolor = Color.new(248,248,248)
  224. shadowcolor = Color.new(40,40,40)
  225. pbSetSystemFont(@overlaysprite.bitmap)
  226. textpos = []
  227. x=12
  228. # Draw Pokémon name
  229. textpos.push([@pokemon.name,98+x,12,0,basecolor,shadowcolor])
  230. if !@pokemon.egg?
  231. if !@text || @text.length==0
  232. # Draw HP numbers
  233. textpos.push([sprintf("% 3d /% 3d",@pokemon.hp,@pokemon.totalhp),224+x+12,60,1,basecolor,shadowcolor])
  234. # Draw HP bar
  235. if @pokemon.hp>0
  236. hpzone = 0
  237. hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
  238. hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
  239. hprect = Rect.new(0,hpzone*8,[@pokemon.hp*96/@pokemon.totalhp,2].max,8)
  240. @overlaysprite.bitmap.blt(152,52,@hpbar.bitmap,hprect)
  241. end
  242. end
  243. if @pokemon.item>0
  244. textpos.push([_INTL(PBItems.getName(@pokemon.item)),134,86,0,basecolor,shadowcolor])
  245. end
  246. # Draw gender icon
  247. end
  248. ballrect = Rect.new(@pokemon.ballused*41,0,41,40)
  249. @overlaysprite.bitmap.blt(8,8,@ballcaught.bitmap,ballrect)
  250. pbDrawTextPositions(@overlaysprite.bitmap,textpos)
  251. status = -1
  252. status = 6 if @pokemon.pokerusStage==1
  253. status = @pokemon.status-1 if @pokemon.status>0
  254. status = 5 if @pokemon.hp<=0
  255. if status>=0
  256. @statuses.visible=true
  257. @statuses.x=self.x+10
  258. @statuses.y=self.y+9
  259.  
  260. end
  261. # Draw level text
  262. if !@pokemon.egg?
  263. pbDrawImagePositions(@overlaysprite.bitmap,[[
  264. "Graphics/Pictures/Party/overlay_lv",228,24,0,0,22,14]])
  265. pbSetSmallFont(@overlaysprite.bitmap)
  266. pbDrawTextPositions(@overlaysprite.bitmap,[
  267. [@pokemon.level.to_s,252,16,0,basecolor,shadowcolor]
  268. ])
  269. end
  270. # Draw annotation text
  271. if @text && @text.length>0
  272. pbSetSystemFont(@overlaysprite.bitmap)
  273. pbDrawTextPositions(@overlaysprite.bitmap,[
  274. [@text,96,58,0,basecolor,shadowcolor]
  275. ])
  276. end
  277. end
  278. @refreshing = false
  279. end
  280. alias update_old update
  281. def update
  282. super
  283. @panelbgsprite.update if @panelbgsprite && !@panelbgsprite.disposed?
  284. @hpbgsprite.update if @hpbgsprite && !@hpbgsprite.disposed?
  285. @pkmnsprite.update if @pkmnsprite && !@pkmnsprite.disposed?
  286. @helditemsprite.update if @helditemsprite && !@helditemsprite.disposed?
  287. @statuses.update if @statuses && !@statuses.disposed?
  288. end
  289. end
  290.  
  291. class PokemonParty_Scene
  292. alias pbEndScene_old pbEndScene
  293. def pbEndScene
  294. pbFadeOutAndHide(@sprites) { update }
  295. pbDisposeSpriteHash(@sprites)
  296. @viewport.dispose
  297. end
  298. end
Add Comment
Please, Sign In to add comment