jgamerx

Untitled

Aug 28th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 40.52 KB | None | 0 0
  1. #===============================================================================
  2. # Pantalla del menú del Pokédex
  3. # * Para elegir la lista de la región a ver. Sólo aparece cuando hay más de una lista posible
  4. # de elegir, y si DEXDEPENDSONLOCATION está en falso.
  5. # * Adaptación del script del menú del Pokégear de Maruno.
  6. #===============================================================================
  7. class Window_DexesList < Window_CommandPokemon
  8. def initialize(commands,width,seen,owned)
  9. @seen=seen
  10. @owned=owned
  11. super(commands,width)
  12. @selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrowwhite")
  13. self.windowskin=nil
  14. end
  15.  
  16. def drawItem(index,count,rect)
  17. super(index,count,rect)
  18. if index>=0 && index<@seen.length
  19. pbDrawShadowText(self.contents,rect.x+236,rect.y,64,rect.height,
  20. @seen[index],self.baseColor,self.shadowColor,1)
  21. pbDrawShadowText(self.contents,rect.x+332,rect.y,64,rect.height,
  22. @owned[index],self.baseColor,self.shadowColor,1)
  23. end
  24. end
  25. end
  26.  
  27.  
  28.  
  29. class Scene_PokedexMenu
  30. def initialize(menu_index = 0)
  31. @menu_index = menu_index
  32. end
  33.  
  34. def main
  35. commands=[]; seen=[]; owned=[]
  36. dexnames=pbDexNames
  37. for i in 0...$PokemonGlobal.pokedexViable.length
  38. index=$PokemonGlobal.pokedexViable[i]
  39. if dexnames[index]==nil
  40. commands.push(_INTL("Pokédex"))
  41. else
  42. if dexnames[index].is_a?(Array)
  43. commands.push(dexnames[index][0])
  44. else
  45. commands.push(dexnames[index])
  46. end
  47. end
  48. index=-1 if index>=$PokemonGlobal.pokedexUnlocked.length-1
  49. seen.push($Trainer.pokedexSeen(index).to_s)
  50. owned.push($Trainer.pokedexOwned(index).to_s)
  51. end
  52. commands.push(_INTL("Salir"))
  53. @sprites={}
  54. @sprites["background"] = IconSprite.new(0,0)
  55. @sprites["background"].setBitmap("Graphics/Pictures/pokedexMenubg")
  56. @sprites["commands"] = Window_DexesList.new(commands,Graphics.width,seen,owned)
  57. @sprites["commands"].index = @menu_index
  58. @sprites["commands"].x = 42
  59. @sprites["commands"].y = 160
  60. @sprites["commands"].width = Graphics.width-84
  61. @sprites["commands"].height = 224
  62. @sprites["commands"].windowskin=nil
  63. @sprites["commands"].baseColor=Color.new(248,248,248)
  64. @sprites["commands"].shadowColor=Color.new(0,0,0)
  65. @sprites["headings"]=Window_AdvancedTextPokemon.newWithSize(
  66. _INTL("<c3=F8F8F8,C02028>AVISTADOS<r>ATRAPADOS</c3>"),286,104,208,64,@viewport)
  67. @sprites["headings"].windowskin=nil
  68. Graphics.transition
  69. loop do
  70. Graphics.update
  71. Input.update
  72. update
  73. if $scene != self
  74. break
  75. end
  76. end
  77. Graphics.freeze
  78. pbDisposeSpriteHash(@sprites)
  79. end
  80.  
  81. def update
  82. pbUpdateSpriteHash(@sprites)
  83. if @sprites["commands"].active
  84. update_command
  85. return
  86. end
  87. end
  88.  
  89. def update_command
  90. if Input.trigger?(Input::B)
  91. pbPlayCancelSE()
  92. $scene = Scene_Map.new
  93. return
  94. end
  95. if Input.trigger?(Input::C)
  96. case @sprites["commands"].index
  97. when @sprites["commands"].itemCount-1
  98. pbPlayDecisionSE()
  99. $scene = Scene_Map.new
  100. else
  101. pbPlayDecisionSE()
  102. $PokemonGlobal.pokedexDex=$PokemonGlobal.pokedexViable[@sprites["commands"].index]
  103. $PokemonGlobal.pokedexDex=-1 if $PokemonGlobal.pokedexDex==$PokemonGlobal.pokedexUnlocked.length-1
  104. pbFadeOutIn(99999) {
  105. scene=PokemonPokedexScene.new
  106. screen=PokemonPokedex.new(scene)
  107. screen.pbStartScreen
  108. }
  109. end
  110. return
  111. end
  112. end
  113. end
  114.  
  115.  
  116.  
  117. #===============================================================================
  118. # Pantalla Principal del Pokédex
  119. #===============================================================================
  120. class Window_CommandPokemonWhiteArrow < Window_CommandPokemon
  121. def drawCursor(index,rect)
  122. selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrowwhite")
  123. if self.index==index
  124. pbCopyBitmap(self.contents,selarrow.bitmap,rect.x,rect.y)
  125. end
  126. return Rect.new(rect.x+16,rect.y,rect.width-16,rect.height)
  127. end
  128. end
  129.  
  130. class Window_Pokedex < Window_DrawableCommand
  131. def initialize(x,y,width,height)
  132. @pokeballOwned=AnimatedBitmap.new("Graphics/Pictures/pokedexOwned")
  133. @pokeballSeen=AnimatedBitmap.new("Graphics/Pictures/pokedexSeen")
  134. @commands=[]
  135. super(x,y,width,height)
  136. self.windowskin=nil
  137. self.baseColor=Color.new(88,88,80)
  138. self.shadowColor=Color.new(168,184,184)
  139. end
  140.  
  141. def drawCursor(index,rect)
  142. selarrow=AnimatedBitmap.new("Graphics/Pictures/pokedexSel")
  143. if self.index==index
  144. pbCopyBitmap(self.contents,selarrow.bitmap,rect.x,rect.y)
  145. end
  146. return Rect.new(rect.x+16,rect.y,rect.width-16,rect.height)
  147. end
  148.  
  149. def commands=(value)
  150. @commands=value
  151. refresh
  152. end
  153.  
  154. def dispose
  155. @pokeballOwned.dispose
  156. @pokeballSeen.dispose
  157. super
  158. end
  159.  
  160. def species
  161. return @commands.length==0 ? 0 : @commands[self.index][0]
  162. end
  163.  
  164. def itemCount
  165. return @commands.length
  166. end
  167.  
  168. def drawItem(index,count,rect)
  169. return if index >= self.top_row + self.page_item_max
  170. rect=drawCursor(index,rect)
  171. indexNumber=@commands[index][4]
  172. species=@commands[index][0]
  173. if $Trainer.seen[species]
  174. if $Trainer.owned[species]
  175. pbCopyBitmap(self.contents,@pokeballOwned.bitmap,rect.x-6,rect.y+8)
  176. else
  177. pbCopyBitmap(self.contents,@pokeballSeen.bitmap,rect.x-6,rect.y+8)
  178. end
  179. text=_ISPRINTF("{1:03d}{2:s} {3:s}",(@commands[index][5]) ? indexNumber-1 : indexNumber," ",@commands[index][1])
  180. else
  181. text=_ISPRINTF("{1:03d} ----------",(@commands[index][5]) ? indexNumber-1 : indexNumber)
  182. end
  183. pbDrawShadowText(self.contents,rect.x+34,rect.y+6,rect.width,rect.height,text,
  184. self.baseColor,self.shadowColor)
  185. overlapCursor=drawCursor(index-1,itemRect(index-1))
  186. end
  187. end
  188.  
  189.  
  190.  
  191. class Window_ComplexCommandPokemon < Window_DrawableCommand
  192. attr_reader :commands
  193.  
  194. def initialize(commands,width=nil)
  195. @starting=true
  196. @commands=commands
  197. dims=[]
  198. getAutoDims(commands,dims,width)
  199. super(0,0,dims[0],dims[1])
  200. @selarrow=AnimatedBitmap.new("Graphics/Pictures/selarrowwhite")
  201. @starting=false
  202. end
  203.  
  204. def self.newEmpty(x,y,width,height,viewport=nil)
  205. ret=self.new([],width)
  206. ret.x=x
  207. ret.y=y
  208. ret.width=width
  209. ret.height=height
  210. ret.viewport=viewport
  211. return ret
  212. end
  213.  
  214. def index=(value)
  215. super
  216. refresh if !@starting
  217. end
  218.  
  219. def indexToCommand(index)
  220. curindex=0
  221. i=0; loop do break unless i<@commands.length
  222. return [i/2,-1] if index==curindex
  223. curindex+=1
  224. return [i/2,index-curindex] if index-curindex<commands[i+1].length
  225. curindex+=commands[i+1].length
  226. i+=2
  227. end
  228. return [-1,-1]
  229. end
  230.  
  231. def getText(array,index)
  232. cmd=indexToCommand(index)
  233. return "" if cmd[0]==-1
  234. return array[cmd[0]*2] if cmd[1]<0
  235. return array[cmd[0]*2+1][cmd[1]]
  236. end
  237.  
  238. def commands=(value)
  239. @commands=value
  240. @item_max=commands.length
  241. self.index=self.index
  242. end
  243.  
  244. def width=(value)
  245. super
  246. if !@starting
  247. self.index=self.index
  248. end
  249. end
  250.  
  251. def height=(value)
  252. super
  253. if !@starting
  254. self.index=self.index
  255. end
  256. end
  257.  
  258. def resizeToFit(commands)
  259. dims=[]
  260. getAutoDims(commands,dims)
  261. self.width=dims[0]
  262. self.height=dims[1]
  263. end
  264.  
  265. def itemCount
  266. mx=0
  267. i=0; loop do break unless i<@commands.length
  268. mx+=1+@commands[i+1].length
  269. i+=2
  270. end
  271. return mx
  272. end
  273.  
  274. def drawItem(index,count,rect)
  275. command=indexToCommand(index)
  276. return if command[0]<0
  277. text=getText(@commands,index)
  278. if command[1]<0
  279. pbDrawShadowText(self.contents,rect.x+32,rect.y,rect.width,rect.height,text,
  280. self.baseColor,self.shadowColor)
  281. else
  282. rect=drawCursor(index,rect)
  283. pbDrawShadowText(self.contents,rect.x,rect.y,rect.width,rect.height,text,
  284. self.baseColor,self.shadowColor)
  285. end
  286. end
  287. end
  288.  
  289.  
  290.  
  291. class PokemonPokedexScene
  292. def pbUpdate
  293. pbUpdateSpriteHash(@sprites)
  294. end
  295.  
  296. def setIconBitmap(species)
  297. gender=($Trainer.formlastseen[species][0] rescue 0)
  298. form=($Trainer.formlastseen[species][1] rescue 0)
  299. @sprites["icon"].setSpeciesBitmap(species,(gender==1),form)
  300. pbPositionPokemonSprite(@sprites["icon"],116-64,164-64)
  301. end
  302.  
  303. # Obtiene la región usada para mostrar los accesos de la Pokédex. Las especies serán
  304. # listadas según la numeración de la región dada y la región devuelta puede tener
  305. # cualquier valor definido en el archivo de datos del mapa de pueblos.
  306. # Actualmente
  307. # Gets the region used for displaying Pokédex entries. Species will be listed
  308. # according to the given region's numbering and the returned region can have
  309. # any value defined in the town map data file. It is currently set to the
  310. # return value of pbGetCurrentRegion, and thus will change according to the
  311. # current map's MapPosition metadata setting.
  312. def pbGetPokedexRegion
  313. if DEXDEPENDSONLOCATION
  314. region=pbGetCurrentRegion
  315. region=-1 if region>=$PokemonGlobal.pokedexUnlocked.length-1
  316. return region
  317. else
  318. return $PokemonGlobal.pokedexDex # National Dex -1, regional dexes 0 etc.
  319. end
  320. end
  321.  
  322. # Determines which index of the array $PokemonGlobal.pokedexIndex to save the
  323. # "last viewed species" in. All regional dexes come first in order, then the
  324. # National Dex at the end.
  325. def pbGetSavePositionIndex
  326. index=pbGetPokedexRegion
  327. if index==-1 # National Dex
  328. index=$PokemonGlobal.pokedexUnlocked.length-1 # National Dex index comes
  329. end # after regional Dex indices
  330. return index
  331. end
  332.  
  333. def pbStartScene
  334. @dummypokemon=PokeBattle_Pokemon.new(1,1)
  335. @sprites={}
  336. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  337. @viewport.z=99999
  338. @sprites["dexentry"]=IconSprite.new(0,0,@viewport)
  339. @sprites["dexentry"].setBitmap(_INTL("Graphics/Pictures/pokedexEntry"))
  340. @sprites["dexentry"].visible=false
  341. @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  342. pbSetSystemFont(@sprites["overlay"].bitmap)
  343. @sprites["overlay"].x=0
  344. @sprites["overlay"].y=0
  345. @sprites["overlay"].visible=false
  346. @sprites["searchtitle"]=Window_AdvancedTextPokemon.newWithSize("",2,-18,Graphics.width,64,@viewport)
  347. @sprites["searchtitle"].windowskin=nil
  348. @sprites["searchtitle"].baseColor=Color.new(248,248,248)
  349. @sprites["searchtitle"].shadowColor=Color.new(0,0,0)
  350. @sprites["searchtitle"].text=_ISPRINTF("<ac>Modo de Búsqueda</ac>")
  351. @sprites["searchtitle"].visible=false
  352. @sprites["searchlist"]=Window_ComplexCommandPokemon.newEmpty(-6,32,284,352,@viewport)
  353. @sprites["searchlist"].baseColor=Color.new(248,248,248)
  354. @sprites["searchlist"].shadowColor=Color.new(0,0,0)
  355. @sprites["searchlist"].visible=false
  356. @sprites["auxlist"]=Window_CommandPokemonWhiteArrow.newEmpty(256,32,284,224,@viewport)
  357. @sprites["auxlist"].baseColor=Color.new(248,248,248)
  358. @sprites["auxlist"].shadowColor=Color.new(0,0,0)
  359. @sprites["auxlist"].visible=false
  360. @sprites["messagebox"]=Window_UnformattedTextPokemon.newWithSize("",254,256,264,128,@viewport)
  361. @sprites["messagebox"].baseColor=Color.new(248,248,248)
  362. @sprites["messagebox"].shadowColor=Color.new(0,0,0)
  363. @sprites["messagebox"].visible=false
  364. @sprites["messagebox"].letterbyletter=false
  365. @sprites["dexname"]=Window_AdvancedTextPokemon.newWithSize("",2,-18,Graphics.width,64,@viewport)
  366. @sprites["dexname"].windowskin=nil
  367. @sprites["dexname"].baseColor=Color.new(248,248,248)
  368. @sprites["dexname"].shadowColor=Color.new(0,0,0)
  369. @sprites["species"]=Window_AdvancedTextPokemon.newWithSize("",38,22,160,64,@viewport)
  370. @sprites["species"].windowskin=nil
  371. @sprites["species"].baseColor=Color.new(88,88,80)
  372. @sprites["species"].shadowColor=Color.new(168,184,184)
  373. @sprites["seen"]=Window_AdvancedTextPokemon.newWithSize("",38,4,164,64,@viewport)
  374. @sprites["seen"].windowskin=nil
  375. @sprites["seen"].baseColor=Color.new(88,88,80)
  376. @sprites["seen"].shadowColor=Color.new(168,184,184)
  377. @sprites["owned"]=Window_AdvancedTextPokemon.newWithSize("",38,282,164,64,@viewport)
  378. @sprites["owned"].windowskin=nil
  379. @sprites["owned"].baseColor=Color.new(88,88,80)
  380. @sprites["owned"].shadowColor=Color.new(168,184,184)
  381. addBackgroundPlane(@sprites,"searchbg",_INTL("pokedexSearchbg"),@viewport)
  382. @sprites["searchbg"].visible=false
  383.  
  384. @searchResults=false
  385. =begin
  386. # Suggestion for changing the background depending on region. You
  387. # can change the line below with the following:
  388. if pbGetPokedexRegion==-1 # Using national Pokédex
  389. addBackgroundPlane(@sprites,"background","pokedexbg_national",@viewport)
  390. elsif pbGetPokedexRegion==0 # Using first regional Pokédex
  391. addBackgroundPlane(@sprites,"background","pokedexbg_regional",@viewport)
  392. end
  393. =end
  394. addBackgroundPlane(@sprites,"background",_INTL("pokedexbg"),@viewport)
  395. @sprites["slider"]=IconSprite.new(Graphics.width-44,62,@viewport)
  396. @sprites["slider"].setBitmap(sprintf("Graphics/Pictures/pokedexSlider"))
  397. @sprites["icon"]=PokemonSprite.new(@viewport)
  398. @sprites["entryicon"]=PokemonSprite.new(@viewport)
  399. pbRefreshDexList($PokemonGlobal.pokedexIndex[pbGetSavePositionIndex])
  400. pbDeactivateWindows(@sprites)
  401. pbFadeInAndShow(@sprites)
  402. end
  403.  
  404. def CreateList()
  405. @index=0
  406. for i in 0..2
  407. for x in 0..2
  408. if @dexlist[@poke+@index]
  409. @sprites["index#{@index}"]=PokeBox.new(@dexlist[@poke+@index][4],@index,@viewport,i,x,@Selected)
  410. @index+=1
  411. end
  412. end
  413. end
  414. end
  415.  
  416. def DisposeList()
  417. @index=0
  418. for i in 0..8
  419. @sprites["index#{i}"].dispose
  420. @index+=1
  421. end
  422. end
  423.  
  424. def pbDexSearchCommands(commands,selitem,helptexts=nil)
  425. ret=-1
  426. auxlist=@sprites["auxlist"]
  427. messagebox=@sprites["messagebox"]
  428. auxlist.commands=commands
  429. auxlist.index=selitem
  430. messagebox.text=helptexts ? helptexts[auxlist.index] : ""
  431. pbActivateWindow(@sprites,"auxlist"){
  432. loop do
  433. Graphics.update
  434. Input.update
  435. oldindex=auxlist.index
  436. pbUpdate
  437. if auxlist.index!=oldindex && helptexts
  438. messagebox.text=helptexts[auxlist.index]
  439. end
  440. if Input.trigger?(Input::B)
  441. ret=selitem
  442. pbPlayCancelSE()
  443. break
  444. end
  445. if Input.trigger?(Input::C)
  446. ret=auxlist.index
  447. pbPlayDecisionSE()
  448. break
  449. end
  450. end
  451. @sprites["auxlist"].commands=[]
  452. }
  453. Input.update
  454. return ret
  455. end
  456.  
  457. def pbCanAddForModeList?(mode,nationalSpecies)
  458. case mode
  459. when 0
  460. return true
  461. when 1
  462. return $Trainer.seen[nationalSpecies]
  463. when 2, 3, 4, 5
  464. return $Trainer.owned[nationalSpecies]
  465. end
  466. end
  467.  
  468. def pbCanAddForModeSearch?(mode,nationalSpecies)
  469. case mode
  470. when 0, 1
  471. return $Trainer.seen[nationalSpecies]
  472. when 2, 3, 4, 5
  473. return $Trainer.owned[nationalSpecies]
  474. end
  475. end
  476.  
  477. def pbGetDexList()
  478. dexlist=[]
  479. dexdata=pbOpenDexData
  480. region=pbGetPokedexRegion()
  481. regionalSpecies=pbAllRegionalSpecies(region)
  482. if regionalSpecies.length==1
  483. # If no regional species defined, use National Pokédex order
  484. for i in 1..PBSpecies.maxValue
  485. regionalSpecies.push(i)
  486. end
  487. end
  488. for i in 1...regionalSpecies.length
  489. nationalSpecies=regionalSpecies[i]
  490. if pbCanAddForModeList?($PokemonGlobal.pokedexMode,nationalSpecies)
  491. pbDexDataOffset(dexdata,nationalSpecies,33)
  492. height=dexdata.fgetw
  493. weight=dexdata.fgetw
  494. # Pushing national species, name, height, weight, index number
  495. shift=DEXINDEXOFFSETS.include?(region)
  496. dexlist.push([nationalSpecies,
  497. PBSpecies.getName(nationalSpecies),height,weight,i,shift])
  498. end
  499. end
  500. dexdata.close
  501. return dexlist
  502. end
  503.  
  504. def pbRefreshDexList(index=0)
  505. dexlist=pbGetDexList()
  506. case $PokemonGlobal.pokedexMode
  507. when 0 # Numerical mode
  508. # Remove species not seen from the list
  509. i=0; loop do break unless i<dexlist.length
  510. break if $Trainer.seen[dexlist[i][0]]
  511. dexlist[i]=nil
  512. i+=1
  513. end
  514. i=dexlist.length-1; loop do break unless i>=0
  515. break if !dexlist[i] || $Trainer.seen[dexlist[i][0]]
  516. dexlist[i]=nil
  517. i-=1
  518. end
  519. dexlist.compact!
  520. # Sort species in ascending order by index number, not national species
  521. dexlist.sort!{|a,b| a[4]<=>b[4]}
  522. when 1 # Alphabetical mode
  523. dexlist.sort!{|a,b| a[1]==b[1] ? a[4]<=>b[4] : a[1]<=>b[1]}
  524. when 2 # Heaviest mode
  525. dexlist.sort!{|a,b| a[3]==b[3] ? a[4]<=>b[4] : b[3]<=>a[3]}
  526. when 3 # Lightest mode
  527. dexlist.sort!{|a,b| a[3]==b[3] ? a[4]<=>b[4] : a[3]<=>b[3]}
  528. when 4 # Tallest mode
  529. dexlist.sort!{|a,b| a[2]==b[2] ? a[4]<=>b[4] : b[2]<=>a[2]}
  530. when 5 # Smallest mode
  531. dexlist.sort!{|a,b| a[2]==b[2] ? a[4]<=>b[4] : a[2]<=>b[2]}
  532. end
  533. dexname=_INTL("Pokédex")
  534. if $PokemonGlobal.pokedexUnlocked.length>1
  535. thisdex=pbDexNames[pbGetSavePositionIndex]
  536. if thisdex!=nil
  537. if thisdex.is_a?(Array)
  538. dexname=thisdex[0]
  539. else
  540. dexname=thisdex
  541. end
  542. end
  543. end
  544. if !@searchResults
  545. @sprites["seen"].text=_ISPRINTF("Vistos:<r>{1:d}",$Trainer.pokedexSeen(pbGetPokedexRegion))
  546. @sprites["owned"].text=_ISPRINTF("Propios:<r>{1:d}",$Trainer.pokedexOwned(pbGetPokedexRegion))
  547. @sprites["dexname"].text=_ISPRINTF("<ac>{1:s}</ac>",dexname)
  548. else
  549. seenno=0
  550. ownedno=0
  551. for i in dexlist
  552. seenno+=1 if $Trainer.seen[i[0]]
  553. ownedno+=1 if $Trainer.owned[i[0]]
  554. end
  555. @sprites["seen"].text=_ISPRINTF("Vistos:<r>{1:d}",seenno)
  556. @sprites["owned"].text=_ISPRINTF("Propios:<r>{1:d}",ownedno)
  557. @sprites["dexname"].text=_ISPRINTF("<ac>{1:s} - Resultados</ac>",dexname)
  558. end
  559. @dexlist=dexlist
  560. # Draw the slider
  561. ycoord=62
  562. ycoord+=188.0 * @poke + @Selected/@dexlist.size
  563. @sprites["slider"].y=ycoord
  564. iconspecies=@dexlist[@poke+@Selected][0]
  565. iconspecies=0 if !$Trainer.seen[iconspecies]
  566. setIconBitmap(iconspecies)
  567. if iconspecies>0
  568. @sprites["species"].text=_ISPRINTF("<ac>{1:s}</ac>",PBSpecies.getName(iconspecies))
  569. else
  570. @sprites["species"].text=""
  571. end
  572. end
  573.  
  574. def pbSearchDexList(params)
  575. $PokemonGlobal.pokedexMode=params[4]
  576. dexlist=pbGetDexList()
  577. dexdata=pbOpenDexData()
  578. if params[0]!=0 # Filter by name
  579. nameCommands=[
  580. "",_INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
  581. _INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
  582. _INTL("STU"),_INTL("VWX"),_INTL("YZ")
  583. ]
  584. scanNameCommand=nameCommands[params[0]].scan(/./)
  585. dexlist=dexlist.find_all {|item|
  586. next false if !$Trainer.seen[item[0]]
  587. firstChar=item[1][0,1]
  588. next scanNameCommand.any? { |v| v==firstChar }
  589. }
  590. end
  591. if params[1]!=0 # Filter by color
  592. dexlist=dexlist.find_all {|item|
  593. next false if !$Trainer.seen[item[0]]
  594. pbDexDataOffset(dexdata,item[0],6)
  595. color=dexdata.fgetb
  596. next color==params[1]-1
  597. }
  598. end
  599. if params[2]!=0 || params[3]!=0 # Filter by type
  600. typeCommands=[-1]
  601. for i in 0..PBTypes.maxValue
  602. if !PBTypes.isPseudoType?(i)
  603. typeCommands.push(i) # Add type
  604. end
  605. end
  606. stype1=typeCommands[params[2]]
  607. stype2=typeCommands[params[3]]
  608. dexlist=dexlist.find_all {|item|
  609. next false if !$Trainer.owned[item[0]]
  610. pbDexDataOffset(dexdata,item[0],8)
  611. type1=dexdata.fgetb
  612. type2=dexdata.fgetb
  613. if stype1>=0 && stype2>=0
  614. # Find species that match both types
  615. next (stype1==type1 && stype2==type2) || (stype1==type2 && stype2==type1)
  616. elsif stype1>=0
  617. # Find species that match first type entered
  618. next type1==stype1 || type2==stype1
  619. else
  620. # Find species that match second type entered
  621. next type1==stype2 || type2==stype2
  622. end
  623. }
  624. end
  625. dexdata.close
  626. dexlist=dexlist.find_all {|item| # Remove all unseen species from the results
  627. next ($Trainer.seen[item[0]])
  628. }
  629. case params[4]
  630. when 0 # Numerical mode
  631. # Sort by index number, not national number
  632. dexlist.sort!{|a,b| a[4]<=>b[4]}
  633. when 1 # Alphabetical mode
  634. dexlist.sort!{|a,b| a[1]<=>b[1]}
  635. when 2 # Heaviest mode
  636. dexlist.sort!{|a,b| b[3]<=>a[3]}
  637. when 3 # Lightest mode
  638. dexlist.sort!{|a,b| a[3]<=>b[3]}
  639. when 4 # Tallest mode
  640. dexlist.sort!{|a,b| b[2]<=>a[2]}
  641. when 5 # Smallest mode
  642. dexlist.sort!{|a,b| a[2]<=>b[2]}
  643. end
  644. return dexlist
  645. end
  646.  
  647. def pbRefreshDexSearch(params)
  648. searchlist=@sprites["searchlist"]
  649. messagebox=@sprites["messagebox"]
  650. searchlist.commands=[
  651. _INTL("Búsqueda"),[
  652. _ISPRINTF("Nombre: {1:s}",@nameCommands[params[0]]),
  653. _ISPRINTF("Color: {1:s}",@colorCommands[params[1]]),
  654. _ISPRINTF("Tipo 1: {1:s}",@typeCommands[params[2]]),
  655. _ISPRINTF("Tipo 2: {1:s}",@typeCommands[params[3]]),
  656. _ISPRINTF("Orden: {1:s}",@orderCommands[params[4]]),
  657. _INTL("Iniciar Búsqueda")
  658. ],
  659. _INTL("Ordenamiento"),[
  660. _ISPRINTF("Orden: {1:s}",@orderCommands[params[5]]),
  661. _INTL("Iniciar Ordenamiento")
  662. ]
  663. ]
  664. helptexts=[
  665. _INTL("Búsqueda según los parámetros seleccionados."),[
  666. _INTL("Listar por primer letra del nombre.\r\nSólamente los vistos."),
  667. _INTL("Listar por color del cuerpo.\r\nSólamente los vistos."),
  668. _INTL("Listar por tipo.\r\nSólamente atrapados."),
  669. _INTL("Listar por tipo.\r\nSólamente atrapados."),
  670. _INTL("Seleccionar el modo de listado."),
  671. _INTL("Ejecutar búsqueda."),
  672. ],
  673. _INTL("Opciones de listado de la Pokédex."),[
  674. _INTL("Seleccionar el modo de listado."),
  675. _INTL("Ejecutar ordenamiento."),
  676. ]
  677. ]
  678. messagebox.text=searchlist.getText(helptexts,searchlist.index)
  679. end
  680.  
  681. def pbChangeToDexEntry(species)
  682. @sprites["entryicon"].visible=true
  683. @sprites["dexentry"].visible=true
  684. @sprites["overlay"].visible=true
  685. @sprites["overlay"].bitmap.clear
  686. basecolor=Color.new(88,88,80)
  687. shadowcolor=Color.new(168,184,184)
  688. indexNumber=pbGetRegionalNumber(pbGetPokedexRegion(),species)
  689. indexNumber=species if indexNumber==0
  690. indexNumber-=1 if DEXINDEXOFFSETS.include?(pbGetPokedexRegion)
  691. gender=($Trainer.formlastseen[species][0] rescue 0)
  692. form=($Trainer.formlastseen[species][1] rescue 0)
  693. @dummypokemon.species=species
  694. @dummypokemon.setGender(gender)
  695. @dummypokemon.forceForm(form)
  696. textpos=[
  697. [_ISPRINTF("{1:03d}{2:s} {3:s}",indexNumber," ",PBSpecies.getName(species)),
  698. 244,40,0,Color.new(248,248,248),Color.new(0,0,0)],
  699. [sprintf(_INTL("Alt.")),318,158,0,basecolor,shadowcolor],
  700. [sprintf(_INTL("Peso")),318,190,0,basecolor,shadowcolor]
  701. ]
  702. if $Trainer.owned[species]
  703. type1=@dummypokemon.type1
  704. type2=@dummypokemon.type2
  705. height=@dummypokemon.height
  706. weight=@dummypokemon.weight
  707. kind=@dummypokemon.kind
  708. dexentry=@dummypokemon.dexEntry
  709. inches=(height/0.254).round
  710. pounds=(weight/0.45359).round
  711. textpos.push([_ISPRINTF("Pokémon {1:s}",kind),244,74,0,basecolor,shadowcolor])
  712. if pbGetCountry()==0xF4 # If the user is in the United States
  713. textpos.push([_ISPRINTF("{1:d}'{2:02d}\"",inches/12,inches%12),456,158,1,basecolor,shadowcolor])
  714. textpos.push([_ISPRINTF("{1:4.1f} lbs.",pounds/10.0),490,190,1,basecolor,shadowcolor])
  715. else
  716. textpos.push([_ISPRINTF("{1:.1f} m",height/10.0),466,158,1,basecolor,shadowcolor])
  717. textpos.push([_ISPRINTF("{1:.1f} kg",weight/10.0),478,190,1,basecolor,shadowcolor])
  718. end
  719. drawTextEx(@sprites["overlay"].bitmap,
  720. 42,240,Graphics.width-(42*2),4,dexentry,basecolor,shadowcolor)
  721. footprintfile=pbPokemonFootprintFile(@dummypokemon)
  722. if footprintfile
  723. footprint=BitmapCache.load_bitmap(footprintfile)
  724. footprint.rect=Rect.new(0,footprint*0,64,64)
  725. @sprites["overlay"].bitmap.blt(226,136,footprint,footprint.rect)
  726. footprint.dispose
  727. end
  728. pbDrawImagePositions(@sprites["overlay"].bitmap,[["Graphics/Pictures/pokedexOwned",212,42,0,0,-1,-1]])
  729. typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/pokedexTypes"))
  730. type1rect=Rect.new(0,type1*32,96,32)
  731. type2rect=Rect.new(0,type2*32,96,32)
  732. @sprites["overlay"].bitmap.blt(316,108,typebitmap.bitmap,type1rect)
  733. @sprites["overlay"].bitmap.blt(396,108,typebitmap.bitmap,type2rect) if type1!=type2
  734. typebitmap.dispose
  735. else
  736. textpos.push([_INTL("Pokémon ?????"),244,74,0,basecolor,shadowcolor])
  737. if pbGetCountry()==0xF4 # If the user is in the United States
  738. textpos.push([_INTL("???'??\""),456,158,1,basecolor,shadowcolor])
  739. textpos.push([_INTL("????.? lbs."),490,190,1,basecolor,shadowcolor])
  740. else
  741. textpos.push([_INTL("????.? m"),466,158,1,basecolor,shadowcolor])
  742. textpos.push([_INTL("????.? kg"),478,190,1,basecolor,shadowcolor])
  743. end
  744. end
  745. pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
  746. @sprites["entryicon"].setSpeciesBitmap(species,(gender==1),form)
  747. pbPositionPokemonSprite(@sprites["entryicon"],40,70)
  748. pbPlayCry(@dummypokemon)
  749. end
  750.  
  751. def pbStartDexEntryScene(species) # Used only when capturing a new species
  752. @dummypokemon=PokeBattle_Pokemon.new(species,1)
  753. @sprites={}
  754. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  755. @viewport.z=99999
  756. @sprites["dexentry"]=IconSprite.new(0,0,@viewport)
  757. @sprites["dexentry"].setBitmap(_INTL("Graphics/Pictures/pokedexentry"))
  758. @sprites["dexentry"].visible=false
  759. @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  760. pbSetSystemFont(@sprites["overlay"].bitmap)
  761. @sprites["overlay"].x=0
  762. @sprites["overlay"].y=0
  763. @sprites["overlay"].visible=false
  764. @sprites["entryicon"]=PokemonSprite.new(@viewport)
  765. pbChangeToDexEntry(species)
  766. pbDrawImagePositions(@sprites["overlay"].bitmap,[["Graphics/Pictures/pokedexBlank",0,0,0,0,-1,-1]])
  767. pbFadeInAndShow(@sprites)
  768. end
  769.  
  770. def pbMiddleDexEntryScene # Used only when capturing a new species
  771. pbActivateWindow(@sprites,nil){
  772. loop do
  773. Graphics.update
  774. Input.update
  775. pbUpdate
  776. if Input.trigger?(Input::B) || Input.trigger?(Input::C)
  777. break
  778. end
  779. end
  780. }
  781. end
  782.  
  783. def pbDexEntry(index)
  784. oldsprites=pbFadeOutAndHide(@sprites)
  785. pbChangeToDexEntry(@dexlist[index][0])
  786. pbFadeInAndShow(@sprites)
  787. curindex=index
  788. page=1
  789. newpage=0
  790. ret=0
  791. pbActivateWindow(@sprites,nil){
  792. loop do
  793. Graphics.update if page==1
  794. Input.update
  795. pbUpdate
  796. if Input.trigger?(Input::B) || ret==1
  797. if page==1
  798. pbPlayCancelSE()
  799. pbFadeOutAndHide(@sprites)
  800. end
  801. @sprites["entryicon"].clearBitmap
  802. break
  803. elsif Input.trigger?(Input::UP) || ret==8
  804. nextindex=-1
  805. i=curindex-1; loop do break unless i>=0
  806. if $Trainer.seen[@dexlist[i][0]]
  807. nextindex=i
  808. break
  809. end
  810. i-=1
  811. end
  812. if nextindex>=0
  813. curindex=nextindex
  814. newpage=page
  815. end
  816. pbPlayCursorSE() if newpage>1
  817. elsif Input.trigger?(Input::DOWN) || ret==2
  818. nextindex=-1
  819. for i in curindex+1...@dexlist.length
  820. if $Trainer.seen[@dexlist[i][0]]
  821. nextindex=i
  822. break
  823. end
  824. end
  825. if nextindex>=0
  826. curindex=nextindex
  827. newpage=page
  828. end
  829. pbPlayCursorSE() if newpage>1
  830. elsif Input.trigger?(Input::LEFT) || ret==4
  831. newpage=page-1 if page>1
  832. pbPlayCursorSE() if newpage>1
  833. elsif Input.trigger?(Input::RIGHT) || ret==6
  834. newpage=page+1 if page<3
  835. pbPlayCursorSE() if newpage>1
  836. elsif Input.trigger?(Input::A)
  837. pbPlayCry(@dexlist[curindex][0])
  838. end
  839. ret=0
  840. if newpage>0
  841. page=newpage
  842. newpage=0
  843. listlimits=0
  844. listlimits+=1 if curindex==0 # At top of list
  845. listlimits+=2 if curindex==@dexlist.length-1 # At bottom of list
  846. case page
  847. when 1 # Show entry
  848. pbChangeToDexEntry(@dexlist[curindex][0])
  849. when 2 # Show nest
  850. region=-1
  851. if !DEXDEPENDSONLOCATION
  852. dexnames=pbDexNames
  853. if dexnames[pbGetSavePositionIndex].is_a?(Array)
  854. region=dexnames[pbGetSavePositionIndex][1]
  855. end
  856. end
  857. scene=PokemonNestMapScene.new
  858. screen=PokemonNestMap.new(scene)
  859. ret=screen.pbStartScreen(@dexlist[curindex][0],region,listlimits)
  860. when 3 # Show forms
  861. scene=PokedexFormScene.new
  862. screen=PokedexForm.new(scene)
  863. ret=screen.pbStartScreen(@dexlist[curindex][0],listlimits)
  864. end
  865. end
  866. end
  867. }
  868. $PokemonGlobal.pokedexIndex[pbGetSavePositionIndex]=curindex if !@searchResults
  869. iconspecies=@dexlist[@poke+@Selected][0]
  870. iconspecies=0 if !$Trainer.seen[iconspecies]
  871. setIconBitmap(iconspecies)
  872. if iconspecies>0
  873. @sprites["species"].text=_ISPRINTF("<ac>{1:s}</ac>",PBSpecies.getName(iconspecies))
  874. else
  875. @sprites["species"].text=""
  876. end
  877. # Update the slider
  878. ycoord=62
  879. pbFadeInAndShow(@sprites,oldsprites)
  880. end
  881.  
  882. def pbDexSearch
  883. oldsprites=pbFadeOutAndHide(@sprites)
  884. params=[]
  885. params[0]=0
  886. params[1]=0
  887. params[2]=0
  888. params[3]=0
  889. params[4]=0
  890. params[5]=$PokemonGlobal.pokedexMode
  891. @nameCommands=[
  892. _INTL("Don't specify"),
  893. _INTL("ABC"),_INTL("DEF"),_INTL("GHI"),
  894. _INTL("JKL"),_INTL("MNO"),_INTL("PQR"),
  895. _INTL("STU"),_INTL("VWX"),_INTL("YZ")
  896. ]
  897. @typeCommands=[
  898. _INTL("Ninguno"),
  899. _INTL("Normal"),_INTL("Lucha"),_INTL("Volador"),
  900. _INTL("Veneno"),_INTL("Tierra"),_INTL("Roca"),
  901. _INTL("Bicho"),_INTL("Fantasma"),_INTL("Acero"),
  902. _INTL("Fuego"),_INTL("Agua"),_INTL("Planta"),
  903. _INTL("Eléctrico"),_INTL("Psíquico"),_INTL("Hielo"),
  904. _INTL("Dragón"),_INTL("Oscuro")
  905. ]
  906. @colorCommands=[_INTL("Sin especificar")]
  907. for i in 0..PBColors.maxValue
  908. j=PBColors.getName(i)
  909. @colorCommands.push(j) if j
  910. end
  911. # @colorCommands=[
  912. # _INTL("Sin especificar"),
  913. # _INTL("Rojo"),_INTL("Azul"),_INTL("Amarillo"),
  914. # _INTL("Verde"),_INTL("Negro"),_INTL("Marrón"),
  915. # _INTL("Morado"),_INTL("Gris"),_INTL("Blanco"),_INTL("Rosa")
  916. # ]
  917. @orderCommands=[
  918. _INTL("Modo numérico"),
  919. _INTL("Modo alfabético"),
  920. _INTL("Modo más pesado"),
  921. _INTL("Modo más ligero"),
  922. _INTL("Modo más alto"),
  923. _INTL("Modo más bajo")
  924. ]
  925. @orderHelp=[
  926. _INTL("Los Pokémon se listan según su número."),
  927. _INTL("Los Pokémon vistos y atrapados se listan alfabéticamente."),
  928. _INTL("Los Pokémon atrapados se listan del más pesado al más ligero."),
  929. _INTL("Los Pokémon atrapados se listan del más ligero al más pesado."),
  930. _INTL("Los Pokémon atrapados se listan del más alto al más bajo."),
  931. _INTL("Los Pokémon atrapados se listan del más bajo al más alto.")
  932. ]
  933. @sprites["searchlist"].index=1
  934. searchlist=@sprites["searchlist"]
  935. @sprites["messagebox"].visible=true
  936. @sprites["auxlist"].visible=true
  937. @sprites["searchlist"].visible=true
  938. @sprites["searchbg"].visible=true
  939. @sprites["searchtitle"].visible=true
  940. pbRefreshDexSearch(params)
  941. pbFadeInAndShow(@sprites)
  942. pbActivateWindow(@sprites,"searchlist"){
  943. loop do
  944. Graphics.update
  945. Input.update
  946. oldindex=searchlist.index
  947. pbUpdate
  948. if searchlist.index==0
  949. if oldindex==9 && Input.trigger?(Input::DOWN)
  950. searchlist.index=1
  951. elsif oldindex==1 && Input.trigger?(Input::UP)
  952. searchlist.index=9
  953. else
  954. searchlist.index=1
  955. end
  956. elsif searchlist.index==7
  957. if oldindex==8
  958. searchlist.index=6
  959. else
  960. searchlist.index=8
  961. end
  962. end
  963. if searchlist.index!=oldindex
  964. pbRefreshDexSearch(params)
  965. end
  966. if Input.trigger?(Input::C)
  967. pbPlayDecisionSE()
  968. command=searchlist.indexToCommand(searchlist.index)
  969. if command==[2,0]
  970. break
  971. end
  972. if command==[0,0]
  973. params[0]=pbDexSearchCommands(@nameCommands,params[0])
  974. pbRefreshDexSearch(params)
  975. elsif command==[0,1]
  976. params[1]=pbDexSearchCommands(@colorCommands,params[1])
  977. pbRefreshDexSearch(params)
  978. elsif command==[0,2]
  979. params[2]=pbDexSearchCommands(@typeCommands,params[2])
  980. pbRefreshDexSearch(params)
  981. elsif command==[0,3]
  982. params[3]=pbDexSearchCommands(@typeCommands,params[3])
  983. pbRefreshDexSearch(params)
  984. elsif command==[0,4]
  985. params[4]=pbDexSearchCommands(@orderCommands,params[4],@orderHelp)
  986. pbRefreshDexSearch(params)
  987. elsif command==[0,5]
  988. dexlist=pbSearchDexList(params)
  989. if dexlist.length==0
  990. Kernel.pbMessage(_INTL("No se encontraron coincidencias."))
  991. else
  992. @dexlist=dexlist
  993. seenno=0
  994. ownedno=0
  995. for i in dexlist
  996. seenno+=1 if $Trainer.seen[i[0]]
  997. ownedno+=1 if $Trainer.owned[i[0]]
  998. end
  999. @sprites["seen"].text=_ISPRINTF("Seen:<r>{1:d}",seenno)
  1000. @sprites["owned"].text=_ISPRINTF("Owned:<r>{1:d}",ownedno)
  1001. dexname=_INTL("Pokédex")
  1002. if $PokemonGlobal.pokedexUnlocked.length>1
  1003. thisdex=pbDexNames[pbGetSavePositionIndex]
  1004. if thisdex!=nil
  1005. if thisdex.is_a?(Array)
  1006. dexname=thisdex[0]
  1007. else
  1008. dexname=thisdex
  1009. end
  1010. end
  1011. end
  1012. @sprites["dexname"].text=_ISPRINTF("<ac>{1:s} - Search results</ac>",dexname)
  1013. # Update the slider
  1014. ycoord=62
  1015. @sprites["slider"].y=ycoord
  1016. @searchResults=true
  1017. break
  1018. end
  1019. elsif command==[1,0]
  1020. params[5]=pbDexSearchCommands(@orderCommands,params[5],@orderHelp)
  1021. pbRefreshDexSearch(params)
  1022. elsif command==[1,1]
  1023. $PokemonGlobal.pokedexMode=params[5]
  1024. $PokemonGlobal.pokedexIndex[pbGetSavePositionIndex]=0
  1025. pbRefreshDexList
  1026. break
  1027. end
  1028. elsif Input.trigger?(Input::B)
  1029. pbPlayCancelSE()
  1030. break
  1031. end
  1032. end
  1033. }
  1034. pbFadeOutAndHide(@sprites)
  1035. pbFadeInAndShow(@sprites,oldsprites)
  1036. @Selected=0
  1037. @poke=0
  1038. DisposeList()
  1039. CreateList()
  1040. UpdateGraphics()
  1041. Input.update
  1042. return 0
  1043. end
  1044.  
  1045. def pbCloseSearch
  1046. oldsprites=pbFadeOutAndHide(@sprites)
  1047. @searchResults=false
  1048. $PokemonGlobal.pokedexMode=0
  1049. pbRefreshDexList($PokemonGlobal.pokedexIndex[pbGetSavePositionIndex])
  1050. pbFadeInAndShow(@sprites,oldsprites)
  1051. end
  1052.  
  1053. def pbPokedex
  1054. pbActivateWindow(@sprites,"pokedex"){
  1055. loop do
  1056. Graphics.update
  1057. Input.update
  1058. oldindex=@poke+@Selected
  1059. pbUpdate
  1060. if oldindex!=@poke+@Selected
  1061. $PokemonGlobal.pokedexIndex[pbGetSavePositionIndex]=@poke+@Selected if !@searchResults
  1062. iconspecies=@dexlist[@poke+@Selected][0] #@sprites["pokedex"].species
  1063. iconspecies=0 if !$Trainer.seen[iconspecies]
  1064. setIconBitmap(iconspecies)
  1065. if iconspecies>0
  1066. @sprites["species"].text=_ISPRINTF("<ac>{1:s}</ac>",PBSpecies.getName(iconspecies))
  1067. else
  1068. @sprites["species"].text=""
  1069. end
  1070. # Update the slider
  1071. ycoord=62
  1072. ycoord+=188.0 * (@poke+@Selected)/@pokelist.size
  1073. @sprites["slider"].y=ycoord
  1074. end
  1075. if Input.trigger?(Input::B)
  1076. pbPlayCancelSE()
  1077. if @searchResults
  1078. pbCloseSearch
  1079. else
  1080. break
  1081. end
  1082. elsif Input.trigger?(Input::C)
  1083. if $Trainer.seen[@dexlist[@poke+@Selected][0]]
  1084. pbPlayDecisionSE()
  1085. pbDexEntry(@poke+@Selected)#@sprites["pokedex"].index)
  1086. end
  1087. elsif Input.trigger?(Input::DOWN)
  1088. if @dexlist[@Selected+@poke+3]
  1089. if @Selected>=6
  1090. @poke+=3
  1091. else
  1092. @Selected+=3
  1093. end
  1094. UpdateGraphics()
  1095. DisposeList()
  1096. CreateList()
  1097. end
  1098. elsif Input.trigger?(Input::RIGHT)
  1099. if @dexlist[@Selected+@poke+1]
  1100. if @Selected==8
  1101. @poke+=3
  1102. @Selected=6
  1103. else
  1104. @Selected+=1
  1105. end
  1106. UpdateGraphics()
  1107. DisposeList()
  1108. CreateList()
  1109. end
  1110. elsif Input.trigger?(Input::LEFT)
  1111. if @poke+@Selected-1!=-1
  1112. if @Selected==0
  1113. @poke-=3
  1114. @Selected=2
  1115. else
  1116. @Selected-=1
  1117. end
  1118. UpdateGraphics()
  1119. DisposeList()
  1120. CreateList()
  1121. end
  1122. elsif Input.trigger?(Input::UP)
  1123. if @poke+@Selected>2
  1124. if @Selected<=2 && (@dexlist.size-(@Selected+@poke-3))>3
  1125. @poke-=3
  1126. else
  1127. @Selected-=3
  1128. end
  1129. UpdateGraphics()
  1130. DisposeList()
  1131. CreateList()
  1132. end
  1133. elsif Input.trigger?(Input::F5)
  1134. pbPlayDecisionSE()
  1135. pbDexSearch
  1136. end
  1137.  
  1138. Graphics.update
  1139. Input.update
  1140. end
  1141. }
  1142. end
  1143.  
  1144. def UpdateGraphics()
  1145. iconspecies=@dexlist[@poke+@Selected][0] #@sprites["pokedex"].species
  1146. iconspecies=0 if !$Trainer.seen[iconspecies]
  1147. setIconBitmap(iconspecies)
  1148. if iconspecies>0
  1149. @sprites["species"].text=_ISPRINTF("<ac>{1:s}</ac>",PBSpecies.getName(iconspecies))
  1150. else
  1151. @sprites["species"].text=""
  1152. end
  1153. @sprites["slider"].y=66+188.0 * (@poke+@Selected)/@dexlist.size
  1154. end
  1155.  
  1156. def pbEndScene
  1157. pbFadeOutAndHide(@sprites)
  1158. pbDisposeSpriteHash(@sprites)
  1159. @viewport.dispose
  1160. end
  1161. end
  1162.  
  1163. class PokeBox < SpriteWrapper
  1164. attr_reader :poke
  1165. def initialize(poke,index,viewport,y,x,pokeindex)
  1166. @index=index
  1167. @poke=poke
  1168. super(viewport)
  1169. self.bitmap=BitmapWrapper.new(Graphics.width,Graphics.height)
  1170. @sprites={}
  1171. @viewport=viewport
  1172. if @index==pokeindex
  1173. self.bitmap.blt(330+100*x,60+100*y,Bitmap.new("Graphics/Pictures/pokedexselect"),Rect.new(90,0,90,84))
  1174. else
  1175. self.bitmap.blt(330+100*x,60+100*y,Bitmap.new("Graphics/Pictures/pokedexselect"),Rect.new(0,0,90,84))
  1176. end
  1177. pbSetSystemFont(self.bitmap)
  1178. self.bitmap.font.size=20
  1179. if $Trainer.seen[poke]
  1180. self.bitmap.draw_text(332+100*x,63+100*y,86,19,sprintf("%03d",poke),1)
  1181. self.bitmap.blt(340+100*x,70+100*y,Bitmap.new(sprintf("Graphics/Icons/icon%03d",poke)),Rect.new(0,0,64,64))
  1182. else
  1183. self.bitmap.draw_text(332+100*x,63+100*y,86,19,"???",1)
  1184. self.bitmap.blt(340+100*x,70+100*y,Bitmap.new("Graphics/Icons/icon000"),Rect.new(0,0,64,64))
  1185. end
  1186. end
  1187.  
  1188. def update
  1189. end
  1190. end
  1191.  
  1192.  
  1193.  
  1194. class PokemonPokedex
  1195. def initialize(scene)
  1196. @scene=scene
  1197. end
  1198.  
  1199. def pbDexEntry(species)
  1200. @scene.pbStartDexEntryScene(species)
  1201. @scene.pbMiddleDexEntryScene
  1202. @scene.pbEndScene
  1203. end
  1204.  
  1205. def pbStartScreen
  1206. @scene.pbStartScene
  1207. @scene.pbPokedex
  1208. @scene.pbEndScene
  1209. end
  1210. end
Add Comment
Please, Sign In to add comment