Advertisement
venom12314

PArtyUpdate1.1

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