Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # * BW2 Pokédex by shiney570 made from scratch.
- #===============================================================================
- # Generel Settings.
- # Whether to use the new Pokedex or not.
- USE_ADVANCED_BW2_POKEDEX = true
- # Change to false if you don't use Luka S.J's Elite Battle 2015.
- USING_BITMAP_WRAPPER = false
- # Whether you want to see all forms on the form page no matter whether
- # the player saw them or not.
- ALWAYSSHOWALLFORMS = false
- #===============================================================================
- # * SET UP YOUR REGIONAL DEXES HERE
- #===============================================================================
- # - Choose between: Kanto ("Kanto")
- # Johto ("Johto")
- # Hoenn ("Hoenn")
- # Sinnoh ("Sinnoh")
- # Sinnoh2 ("Sinnoh2")
- # Unova ("Unova")
- # Unova2 ("Unova2")
- # Custom ("Custom")
- # None ("")
- REGIONAL_DEX = "Unova2"
- REGIONAL_DEX2= "Sinnoh2"
- # This is just a quick example of a Custom Pokédex. Just add and edit values
- # of the array and change REGIONAL_DEX or REGIONAL_DEX2 to "Custom" to use
- # your selfmade Pokédex.
- CUSTOM_DEX = [151,152,153,154,155,156,157,158,159,10,11,12,13,14]
- # Change to false if you don't use Luka S.J's Elite Battle 2015.
- USING_BITMAP_WRAPPER = true
- # Dex Names which will appear in the Pokédex.
- def pbDexNames
- return ["UNOVA","SINNOH","NATIONAL"]
- end
- #==============================================================================#
- # * Regional Dex'es of already existing Pokémon Editions. #
- #==============================================================================#
- $regional_dex_1=[]
- $regional_dex_2=[]
- # Gen 1 Dex.
- if REGIONAL_DEX=="Kanto" || REGIONAL_DEX2=="Kanto"
- kanto_dex=[]
- for dex_num in 1..151
- kanto_dex.insert(kanto_dex.length,dex_num)
- end
- $regional_dex_1=kanto_dex if REGIONAL_DEX=="Kanto"
- $regional_dex_2=kanto_dex if REGIONAL_DEX2=="Kanto"
- end
- # Gen 2 Dex.
- if REGIONAL_DEX=="Johto" || REGIONAL_DEX2=="Johto"
- johto_dex=[152,153,154,155,156,157,158,159,160,16,17,18,21,22,163,164,19,
- 20,161,162,172,25,26,10,11,12,13,14,15,165,166,167,168,74,75,76,41,42,169,173,
- 35,36,174,39,40,175,176,27,28,23,24,206,179,180,181,194,195,92,93,94,201,95,
- 208,69,70,71,187,188,189,46,47,60,61,62,186,129,130,118,119,79,80,199,43,44,
- 45,182,96,97,63,64,65,132,204,205,29,30,31,32,33,34,193,469,191,192,102,103,
- 185,202,48,49,123,212,127,214,109,110,88,89,81,82,100,101,190,424,209,210,37,
- 38,58,59,234,183,184,50,51,56,57,52,53,54,55,66,67,68,236,106,107,237,203,128,
- 241,240,126,238,124,239,125,122,83,177,178,211,72,73,98,99,213,120,121,90,91,
- 222,223,223,170,171,86,87,108,463,114,465,133,134,135,136,169,197,116,117,230,
- 207,225,220,221,473,216,217,231,232,226,227,84,85,77,78,104,105,115,111,112,
- 198,228,229,218,219,215,200,137,233,113,242,131,138,139,140,141,142,143,1,2,3,
- 4,5,6,7,8,9,144,145,146,243,244,245,147,148,149,246,247,248,249,250,150,151,251]
- $regional_dex_1=johto_dex if REGIONAL_DEX=="Johto"
- $regional_dex_2=johto_dex if REGIONAL_DEX2=="Johto"
- end
- # Gen 3 Dex.
- if REGIONAL_DEX=="Hoenn" || REGIONAL_DEX2=="Hoenn"
- hoenn_dex=[252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,
- 267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,
- 286,287,288,289,63,64,65,290,291,292,293,294,295,296,297,118,119,129,130,298,
- 183,184,74,75,76,299,300,301,41,42,169,72,73,302,303,304,305,306,66,67,68,307,
- 308,309,310,311,312,81,82,100,101,313,314,43,44,45,182,84,85,315,316,317,318,
- 319,320,321,322,323,218,219,324,88,89,109,110,325,326,27,28,327,227,328,329,
- 330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,
- 174,39,40,349,350,351,120,121,352,353,354,355,356,357,358,359,37,38,172,25,26,
- 54,55,360,202,177,178,203,231,232,127,214,111,112,361,362,363,364,365,366,367,
- 368,369,222,170,171,370,116,117,230,371,372,373,374,375,376,377,378,379,380,
- 381,382,383,384,385,386]
- $regional_dex_1=hoenn_dex if REGIONAL_DEX=="Hoenn"
- $regional_dex_2=hoenn_dex if REGIONAL_DEX2=="Hoenn"
- end
- # Gen 4 Dex.
- # Gen 4 V2 Dex.
- if REGIONAL_DEX=="Sinnoh" || REGIONAL_DEX2=="Sinnoh"
- sinnoh2_dex=[387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,
- 403,404,405,63,64,65,129,130,406,315,407,41,42,169,74,75,76,95,208,408,409,410,
- 411,66,67,68,54,55,412,413,414,256,266,267,268,269,415,416,417,418,419,420,421,
- 422,423,214,190,424,425,426,427,428,92,93,94,200,429,198,430,431,432,118,119,
- 340,433,358,434,435,307,308,436,437,77,78,438,185,439,122,440,113,242,173,35,
- 36,441,172,25,26,163,164,442,443,444,445,446,143,201,447,448,194,195,278,279,
- 203,449,450,298,183,184,451,452,453,454,455,223,224,456,457,72,73,349,350,458,
- 226,459,460,215,461,480,481,482,483,484]
- $regional_dex_1=sinnoh2_dex if REGIONAL_DEX=="Sinnoh"
- $regional_dex_2=sinnoh2_dex if REGIONAL_DEX2=="Sinnoh"
- end
- # Gen 4 V2 Dex.
- if REGIONAL_DEX=="Sinnoh2" || REGIONAL_DEX2=="Sinnoh2"
- sinnoh2_dex=[387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,
- 403,404,405,63,64,65,129,130,406,315,407,41,42,169,74,75,76,95,208,408,409,410,
- 411,66,67,68,54,55,412,413,414,256,266,267,268,269,415,416,417,418,419,420,421,
- 422,423,214,190,424,425,426,427,428,92,93,94,200,429,198,430,431,432,118,119,
- 340,433,358,434,435,307,308,436,437,77,78,438,185,439,122,440,113,242,173,35,
- 36,441,172,25,26,163,164,442,443,444,445,446,143,201,447,448,194,195,278,279,
- 203,449,450,298,183,184,451,452,453,454,455,223,224,456,457,72,73,349,350,458,
- 226,459,460,215,461,480,481,482,483,484,490,479,207,472,299,476,280,281,282,
- 475,108,463,133,134,135,163,196,197,470,471,333,334,175,176,468,228,229,81,82,
- 462,114,465,193,469,357,111,112,464,355,356,477,137,233,474,123,212,239,125,
- 466,240,126,467,220,221,473,361,362,478,359,487]
- $regional_dex_1=sinnoh2_dex if REGIONAL_DEX=="Sinnoh2"
- $regional_dex_2=sinnoh2_dex if REGIONAL_DEX2=="Sinnoh2"
- end
- # Gen 5 Dex.
- if REGIONAL_DEX=="Unova" || REGIONAL_DEX2=="Unova"
- unova_dex=[]
- for dex_num in 495..649
- unova_dex.insert(unova_dex.length,dex_num)
- end
- $regional_dex_1=unova_dex if REGIONAL_DEX=="Unova"
- $regional_dex_2=unova_dex if REGIONAL_DEX2=="Unova"
- end
- # Gen 5 V2 Dex.
- if REGIONAL_DEX=="Unova2" || REGIONAL_DEX2=="Unova2"
- unova2_dex=[495,496,497,498,499,500,501,502,503,504,505,509,
- 510,519,520,521,540,541,542,191,192,506,507,508,179,180,181,54,55,298,183,184,
- 447,448,206,531,511,512,513,514,515,516,543,544,545,109,110,81,82,462,58,59,
- 240,126,467,239,125,466,19,20,41,42,169,88,89,527,528,524,525,526,95,208,532,
- 533,534,529,530,300,301,427,428,546,547,548,549,517,518,173,35,36,133,134,135,
- 136,196,197,470,471,551,552,553,554,555,550,568,569,572,573,627,628,629,630,27,
- 28,557,558,559,560,556,561,328,329,330,562,563,564,565,566,567,599,600,601,406,
- 315,407,574,575,576,577,578,579,415,416,587,214,127,522,523,418,419,570,571,580,
- 581,588,589,616,617,585,586,590,591,351,299,476,304,305,306,343,344,636,637,595,
- 596,597,598,602,603,604,592,593,594,610,611,612,335,336,605,606,607,608,609,631,
- 632,613,614,615,641,642,645,451,452,227,322,323,325,326,425,426,353,354,278,279,
- 337,338,359,114,465,619,620,207,472,624,625,638,639,640,535,536,537,618,213,458,
- 226,223,224,222,120,121,320,321,131,363,364,365,333,334,37,38,436,437,215,461,
- 225,582,583,584,220,221,473,132,374,375,376,86,87,538,539,626,621,622,623,633,
- 634,635,287,288,289,341,342,174,39,40,108,463,193,469,357,455,453,454,246,247,
- 248,643,644,646,647,648,649]
- $regional_dex_1=unova2_dex if REGIONAL_DEX=="Unova2"
- $regional_dex_2=unova2_dex if REGIONAL_DEX2=="Unova2"
- end
- # Custom Dex.
- if REGIONAL_DEX=="Custom" || REGIONAL_DEX2=="Custom"
- $regional_dex_1=CUSTOM_DEX if REGIONAL_DEX=="Custom"
- $regional_dex_2=CUSTOM_DEX if REGIONAL_DEX2=="Custom"
- end
- # Method which creates an array for the National Dex.
- def pbNationalDex
- national_dex=[]
- for dex_num in 1..PBSpecies.maxValue
- national_dex.insert(national_dex.length,dex_num)
- end
- return national_dex
- end
- #===============================================================================
- # * Updating existing methods to work with the new way of Regional Dex'es.
- #===============================================================================
- class PokeBattle_Trainer
- def pokedexSeen(region=-1) # Number of Pokémon seen
- ret=0
- if region==-1
- for i in 0..PBSpecies.maxValue
- ret+=1 if @seen[i]
- end
- else
- if pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==0
- regionlist=$regional_dex_1 # Region A
- else
- regionlist=$regional_dex_2 # Region B
- end
- regionlist=pbAllRegionalSpecies(region)
- for i in regionlist
- ret+=1 if @seen[i]
- end
- end
- return ret
- end
- def pokedexOwned(region=-1) # Number of Pokémon owned
- ret=0
- if region==-1
- for i in 0..PBSpecies.maxValue
- ret+=1 if @owned[i]
- end
- else
- if pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==0
- regionlist=$regional_dex_1 # Region A
- else
- regionlist=$regional_dex_2 # Region B
- end
- for i in regionlist
- ret+=1 if @owned[i]
- end
- return ret
- end
- end
- end
- def pbSetSpritePositionToMiddle(sprite)
- sprite.x=Graphics.width/2-(sprite.bitmap.width/2)
- sprite.y=Graphics.height/2-(sprite.bitmap.height/2)
- end
- #===============================================================================
- # * Starting the Pokédex.
- #===============================================================================
- class StartPokedex
- def initialize
- if !$Trainer.pokedex
- p "Pokédex isn't obtained yet. The game will return." if $DEBUG
- return
- end
- @bg=Sprite.new
- @bg.z=999999
- if $Trainer.isFemale?
- @bg.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/StartPokedex/OpenDex_f")
- else
- @bg.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/StartPokedex/OpenDex")
- end
- @load=Sprite.new
- @load.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/StartPokedex/load2")
- @load.y= -384
- @load.z=999999
- @black_bitmap=Bitmap.new(512,384)
- @black_sprite=Sprite.new
- @black_sprite.bitmap=@black_bitmap
- @black_sprite.z=999999
- @black_sprite.opacity=0
- @black_bitmap.fill_rect(0,0,512,384,Color.new(0,0,0))
- update
- end
- def update(frame=0)
- loop do
- Graphics.update
- Input.update
- frame+=1
- break if Input.trigger?(Input::B)
- break if Input.trigger?(Input::C)
- if defined?($mouse)
- break if $mouse.inAreaLeft?(0,0,512,384)
- end
- break if frame>=120
- end
- startMainPokedex
- end
- def startMainPokedex
- 20.times do
- @load.y+=384/20
- Graphics.update
- pbWait(1)
- end
- 10.times do
- @black_sprite.opacity+=255/10
- @load.ox+=@load.bitmap.width/20
- @load.oy+=@load.bitmap.height/20
- @load.zoom_x+=0.1
- @load.zoom_y+=0.1
- Graphics.update
- pbWait(1)
- end
- pbWait(25)
- @bg.dispose
- @load.dispose
- @black_sprite.dispose
- MainPokedex.new(0,0,-46,nil)
- end
- end
- #===============================================================================
- # * Main Pokédex Window.
- #===============================================================================
- class MainPokedex
- def initialize(dex_index,panel_y,panel_sel_y,pokedex) # 0,0,-46
- $pokedex=currentDex if panel_sel_y<0
- $pokedex=pokedex if (pokedex != nil)# <--Only used because of search function.
- @dex_index=dex_index
- @index=0
- @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
- @viewport.z=99999
- @sprites={}
- @sprites["bg"]=Sprite.new(@viewport)
- @sprites["bg"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/bg")
- @main_bitmap=Bitmap.new(302,2+$pokedex.length*48)
- @sprites["panels"]=Sprite.new(@viewport)
- @sprites["panels"].x=192
- @sprites["panels"].y=panel_y
- @sprites["panel_sel"]=Sprite.new(@viewport)
- @sprites["panel_sel"].y=panel_sel_y
- drawDexPanels
- drawPanels
- @sprites["scroll_bar"]=IconSprite.new(502,18,@viewport)
- @sprites["scroll_bar"].setBitmap("Graphics/Pictures/Pokedex/scroll_bar")
- @sprites["slider"]=IconSprite.new(500,16,@viewport)
- @sprites["slider"].setBitmap("Graphics/Pictures/Pokedex/slider")
- @sprites["undiscovered"]=IconSprite.new(34,82,@viewport)
- @sprites["undiscovered"].setBitmap("Graphics/Pictures/Pokedex/undiscovered")
- @sprites["undiscovered"].visible=false
- @sprites["pkmn_info"]=IconSprite.new(12,0,@viewport)
- @sprites["pkmn_info"].setBitmap("Graphics/Pictures/Pokedex/pkmn_info")
- @sprites["pkmn_info"].visible=false
- @sprites["pkmn_info"].z+=1
- @sprites["pkmn_sprite"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- @sprites["pkmn_sprite"].x=96
- @sprites["pkmn_sprite"].y=96
- @sprites["down_bg"]=Sprite.new(@viewport)
- @sprites["down_bg"].bitmap=Bitmap.new("Graphics/Pictures/Universal/down_bg")
- @sprites["down_bg"].y=336
- @sprites["select"]=IconSprite.new(10,340,@viewport)
- @sprites["select"].setBitmap("Graphics/Pictures/Pokedex/select")
- @sprites["start"]=IconSprite.new(142,340,@viewport)
- @sprites["start"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/start")
- @sprites["leftright"]=IconSprite.new(278,346,@viewport)
- @sprites["leftright"].setBitmap("Graphics/Pictures/Pokedex/leftright")
- @sprites["exit"]=IconSprite.new(426,346,@viewport)
- @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
- @sprites["return"]=IconSprite.new(474,346,@viewport)
- @sprites["return"].setBitmap("Graphics/Pictures/Universal/return")
- @sprites["leftright2"]=IconSprite.new(278,346,@viewport)
- @sprites["leftright2"].setBitmap("Graphics/Pictures/Pokedex/leftright4")
- updateLeftRight2Sprite
- @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- pbSetSystemFont(@sprites["overlay"].bitmap)
- update
- end
- # Method which returns an array of the current dex.
- def currentDex
- if $PokemonGlobal.pokedexUnlocked[0] && pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==0
- p "Your Regional Dex is empty. Please edit it in the Script-Editor." if REGIONAL_DEX.empty? && $DEBUG
- return $regional_dex_1 if !REGIONAL_DEX.empty?
- elsif $PokemonGlobal.pokedexUnlocked[1] && pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==1
- p "Your Regional Dex is empty. Please edit it in the Script-Editor." if REGIONAL_DEX2.empty? && $DEBUG
- return $regional_dex_2
- elsif $PokemonGlobal.pokedexUnlocked[0] && !REGIONAL_DEX.empty?
- return $regional_dex_1
- elsif $PokemonGlobal.pokedexUnlocked[1] && !REGIONAL_DEX2.empty?
- return $regional_dex_2
- elsif $PokemonGlobal.pokedexUnlocked[-1]
- return pbNationalDex
- else
- p "None of the Dex'es is unlocked yet." if $DEBUG
- return nil
- end
- end
- # Method for drawing the panels.
- def drawPanels
- @main_bitmap=Bitmap.new(302,2+$pokedex.length*48)
- @main_bitmap.clear
- @sprites["panels"].bitmap=@main_bitmap
- for i in 0..$pokedex.length-1
- species=PokeBattle_Pokemon.new($pokedex[i],1)
- # Drawing panels.
- panel=Sprite.new
- if $Trainer.seen[$pokedex[i]]
- panel.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/panel_pkmn")
- @main_bitmap.blt(0,2+i*48,panel.bitmap,Rect.new(0,0,panel.bitmap.width,
- panel.bitmap.height))
- # Drawing little Pokémon icon.
- icon=Sprite.new
- icon.bitmap=Bitmap.new(sprintf("Graphics/Icons/icon%03d",$pokedex[i]))
- # icon.src_rect.width=64
- @main_bitmap.blt(2,i*48-18,icon.bitmap,Rect.new(0,0,
- icon.bitmap.width/2,icon.bitmap.height))
- icon.dispose
- else
- panel.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/panel")
- @main_bitmap.blt(64,2+i*48,panel.bitmap,Rect.new(0,0,panel.bitmap.width,
- panel.bitmap.height))
- end
- panel.dispose
- # Drawing little caught icon.
- if $Trainer.owned[$pokedex[i]]
- owned=Sprite.new(@viewport)
- owned.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/caught")
- @main_bitmap.blt(82,10+i*48,owned.bitmap,Rect.new(0,0,owned.bitmap.width,
- owned.bitmap.height))
- owned.dispose
- end
- # Drawing text.
- text=BitmapSprite.new(Graphics.width, Graphics.height)
- pbSetSystemFont(text.bitmap)
- dex_number=(i+1).to_s
- if dex_number.length==1
- dex_number.insert(0,"0")
- end
- if dex_number.length==2
- dex_number.insert(0,"0")
- end
- textpos=[]
- textpos.push([dex_number,0,0,0,Color.new(222,222,222),
- Color.new(132,132,132)])
- if $Trainer.seen[$pokedex[i]]
- pkmn_name=species.name
- else
- pkmn_name="?????"
- end
- textpos.push([pkmn_name,56,0,0,Color.new(222,222,222),
- Color.new(132,132,132)])
- pbDrawTextPositions(text.bitmap,textpos)
- @main_bitmap.blt(112,6+48*i,text.bitmap,Rect.new(0,0,190,32))
- text.dispose
- end
- end
- # Method for drawing the Dex Panels.
- def drawDexPanels
- num=0
- num+=1 if $PokemonGlobal.pokedexUnlocked[0] # Regional Dex 1
- num+=1 if $PokemonGlobal.pokedexUnlocked[1] # Regional Dex 2
- num+=1 if $PokemonGlobal.pokedexUnlocked[-1]# National Dex
- for i in 1..num
- @sprites["dex_panel#{i}"]=IconSprite.new(0,290-46*i+46,@viewport)
- @sprites["dex_panel#{i}"].setBitmap("Graphics/Pictures/Pokedex/leftpanel")
- end
- dexnames=pbDexNames
- base=Color.new(255,255,255)
- shadow=Color.new(165,165,173)
- textos=[]
- if num==3 && pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==0
- @dexes=[2,1,0]
- elsif num==3 && pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==1
- @dexes=[2,0,1]
- elsif num==3 && pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]>1
- @dexes=[1,0,2]
- elsif num==2
- if pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==0 && $PokemonGlobal.pokedexUnlocked[0]
- @dexes=[1,0] if $PokemonGlobal.pokedexUnlocked[1]
- @dexes=[2,0] if $PokemonGlobal.pokedexUnlocked[-1]
- elsif pbGetMetadata($game_map.map_id,MetadataMapPosition)[0]==1 && $PokemonGlobal.pokedexUnlocked[1]
- @dexes=[0,1] if $PokemonGlobal.pokedexUnlocked[0]
- @dexes=[2,1] if $PokemonGlobal.pokedexUnlocked[-1]
- elsif $PokemonGlobal.pokedexUnlocked[0]
- textos.push([_INTL("{1}", dexnames[0]),4,252,false,base,shadow])
- @dexes=[1,0] if $PokemonGlobal.pokedexUnlocked[1]
- @dexes=[2,0] if $PokemonGlobal.pokedexUnlocked[-1]
- elsif $PokemonGlobal.pokedexUnlocked[1]
- @dexes=[0,1] if $PokemonGlobal.pokedexUnlocked[0]
- @dexes=[2,1] if $PokemonGlobal.pokedexUnlocked[-1]
- end
- elsif num==1
- @dexes=[0] if $PokemonGlobal.pokedexUnlocked[0]
- @dexes=[1] if $PokemonGlobal.pokedexUnlocked[1]
- @dexes=[2] if $PokemonGlobal.pokedexUnlocked[-1]
- end
- textos.push([_INTL("{1}", dexnames[@dexes[0]]),4,298,false,base,shadow])
- if num>=2
- textos.push([_INTL("{1}", dexnames[@dexes[1]]),4,252,false,base,shadow])
- end
- if num==3
- textos.push([_INTL("{1}", dexnames[@dexes[2]]),4,206,false,base,shadow])
- end
- normal_dexes=[$regional_dex_1,$regional_dex_2,pbNationalDex]
- y=5000
- y=290 if num==3 && $pokedex==normal_dexes[@dexes[0]]
- y=244 if num==3 && $pokedex==normal_dexes[@dexes[1]]
- y=198 if num==3 && $pokedex==normal_dexes[@dexes[2]]
- y=290 if num==2 && $pokedex==normal_dexes[@dexes[0]]
- y=244 if num==2 && $pokedex==normal_dexes[@dexes[1]]
- y=290 if num==1
- @sprites["dex_panel_sel"]=IconSprite.new(0,y,@viewport)
- @sprites["dex_panel_sel"].setBitmap("Graphics/Pictures/Pokedex/leftpanel2")
- @sprites["dexnames"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- pbSetSystemFont(@sprites["dexnames"].bitmap)
- pbDrawTextPositions(@sprites["dexnames"].bitmap,textos)
- end
- # Method for checking and updating if a species is in the dex and the
- # dex has changed.
- def updateDexIndexIfDexHasChanged(species)
- return if @dex_index<1
- #if @dex_index<1
- # @sprites["panels"].y=0
- # @sprites["panel_sel"].y= -46
- # return
- #end
- for i in 0...$pokedex.length
- if $pokedex[i]==species
- @dex_index=i+1
- if @dex_index<8
- @sprites["panels"].y=0
- @sprites["panel_sel"].y=@dex_index*48-46
- elsif @dex_index>$pokedex.length-8
- @sprites["panels"].y= -48*($pokedex.length-7)
- @sprites["panel_sel"].y=290-($pokedex.length-@dex_index)*48
- else
- @sprites["panels"].y= -48*(@dex_index-1)
- @sprites["panel_sel"].y=2
- end
- return
- end
- end
- @sprites["panels"].y=0
- @sprites["panel_sel"].y=2
- @dex_index=1
- end
- # Updates the leftright2 sprite.
- def updateLeftRight2Sprite
- @sprites["leftright2"].x=278
- if @dex_index<8 && (@dex_index>($pokedex.length-7))
- @sprites["leftright2"].src_rect.x=0
- @sprites["leftright2"].src_rect.width=96
- elsif @dex_index<8
- @sprites["leftright2"].src_rect.x=0
- @sprites["leftright2"].src_rect.width=48
- elsif (@dex_index>($pokedex.length-7))
- @sprites["leftright2"].src_rect.x=48
- @sprites["leftright2"].src_rect.width=48
- @sprites["leftright2"].x=278+50
- else
- @sprites["leftright2"].src_rect.x=0
- @sprites["leftright2"].src_rect.width=0
- end
- end
- # Method which checks whether you can scroll down or not.
- def canScrollDown
- return (@dex_index>7 && @sprites["panel_sel"].y==290 && ((@sprites["panels"].bitmap.height+@sprites["panels"].y)>338))
- end
- # Method which checks whether you can scroll up or not.
- def canScrollUp
- return (@dex_index>0 && @sprites["panel_sel"].y==2 )
- end
- # This method updates the position of the slider.
- def updateSliderPosition
- pos=16
- pos+=300*@dex_index/$pokedex.length
- @sprites["slider"].y=pos
- end
- # Method returning the number of the current selected Pokémon.
- def currentPokemon
- return ($pokedex[@dex_index-1])
- end
- # Method for updating the background.
- def updateBackground
- return if !@sprites["bg"]
- @sprites["bg"].x-=2
- @sprites["bg"].x=0 if @sprites["bg"].x <= -512
- end
- # Method which is basically pbWait(x) but with a background update added.
- def waitAndUpdate(x)
- x.times do
- updateBackground
- pbWait(1)
- end
- end
- # Method for scrolling 7 Pokémon up.
- def scrollToLeft
- return if @dex_index<8
- @sprites["leftright"].setBitmap("Graphics/Pictures/Pokedex/leftright2")
- 7.times do
- @dex_index-=1
- if @sprites["panel_sel"].y>10
- @sprites["panel_sel"].y-=48
- else
- @sprites["panels"].y+=48
- end
- updatePokemonSprite
- updateSliderPosition
- waitAndUpdate(1)
- end
- waitAndUpdate(3)
- @sprites["leftright"].setBitmap("Graphics/Pictures/Pokedex/leftright")
- end
- # Method for scrolling 7 Pokémon down.
- def scrollToRight
- return if (@dex_index>($pokedex.length-7))
- @sprites["leftright"].setBitmap("Graphics/Pictures/Pokedex/leftright3")
- 7.times do
- @dex_index+=1
- if @sprites["panel_sel"].y<280
- @sprites["panel_sel"].y+=48
- else
- @sprites["panels"].y-=48
- end
- updatePokemonSprite
- updateSliderPosition
- waitAndUpdate(1)
- end
- waitAndUpdate(3)
- @sprites["leftright"].setBitmap("Graphics/Pictures/Pokedex/leftright")
- end
- # updates the Pokemon Sprite when called.
- def updatePokemonSprite
- @sprites["pkmn_sprite"].bitmap.clear
- if $Trainer.seen[currentPokemon]
- @sprites["panel_sel"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/panel_sel_pkmn")
- @sprites["panel_sel"].x=192
- if USING_BITMAP_WRAPPER==true && defined?(AnimatedBitmapWrapper)
- pkmnbitmap=AnimatedBitmapWrapper.new(pbPokemonBitmapFile(currentPokemon,false))
- else
- pkmnbitmap=AnimatedBitmap.new(pbPokemonBitmapFile(currentPokemon,false))
- end
- @sprites["pkmn_sprite"].bitmap.blt(0,0,
- pkmnbitmap.bitmap,Rect.new(0,0,pkmnbitmap.bitmap.width,pkmnbitmap.bitmap.height))
- @sprites["pkmn_sprite"].ox=pkmnbitmap.bitmap.width/2
- @sprites["pkmn_sprite"].oy=pkmnbitmap.bitmap.height/2
- @sprites["pkmn_info"].visible=true
- @sprites["undiscovered"].visible=false
- else
- @sprites["panel_sel"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/panel_sel")
- @sprites["panel_sel"].x=256
- @pokemon_sprite.visible=false if @pokemon_sprite
- @sprites["pkmn_info"].visible=false
- @sprites["undiscovered"].visible=true
- end
- end
- # Function for using the mouse for the scrolling bar.
- def mouseScrollBar
- if $mouse.inAreaPress?(494,10,18,315)#16, 300
- if $mouse.y>316
- @sprites["slider"].y=316
- elsif $mouse.y<16
- @sprites["slider"].y=16
- else
- @sprites["slider"].y=$mouse.y
- end
- @dex_index=(@sprites["slider"].y-16)*$pokedex.length/300
- @dex_index=1 if @dex_index<1
- if @sprites["slider"].y>16
- @sprites["panels"].y= -48*($pokedex.length-7)
- @sprites["panels"].y= -48*(@dex_index-1) if @dex_index<($pokedex.length-5)
- @sprites["panels"].y=0 if ($pokedex.length<7)
- @sprites["panel_sel"].y=48*(@dex_index-1)+@sprites["panels"].y+2
- else
- @sprites["panels"].y=0
- end
- end
- end
- # Method for updating the Dex Panels.
- def mouseDexPanels
- update=false
- current= -1
- if @nextDex
- current=(@sprites["dex_panel_sel"].y-198)/48
- max=0
- for i in 0...3
- max+=1 if @sprites["dex_panel#{i}"]
- end
- if max==current
- current=4-max
- else
- current+=1
- end
- end
- if $mouse.leftClick?(@sprites["dex_panel1"]) || current==1
- return if @sprites["dex_panel_sel"].y==@sprites["dex_panel1"].y
- pkmn=currentPokemon
- if @dexes[0]==0
- $pokedex=$regional_dex_1
- elsif @dexes[0]==1
- $pokedex=$regional_dex_2
- else
- $pokedex=pbNationalDex
- end
- @sprites["dex_panel_sel"].y=@sprites["dex_panel1"].y
- update=true
- end
- if @sprites["dex_panel2"]
- if $mouse.leftClick?(@sprites["dex_panel2"]) || current==2
- return if @sprites["dex_panel_sel"].y==@sprites["dex_panel2"].y
- pkmn=currentPokemon
- if @dexes[1]==0
- $pokedex=$regional_dex_1
- elsif @dexes[1]==1
- $pokedex=$regional_dex_2
- else
- $pokedex=pbNationalDex
- end
- @sprites["dex_panel_sel"].y=@sprites["dex_panel2"].y
- update=true
- end
- end
- if @sprites["dex_panel3"]
- if $mouse.leftClick?(@sprites["dex_panel3"]) || current==3
- return if @sprites["dex_panel_sel"].y==@sprites["dex_panel3"].y
- pkmn=currentPokemon
- if @dexes[2]==0
- $pokedex=$regional_dex_1
- elsif @dexes[2]==1
- $pokedex=$regional_dex_2
- else
- $pokedex=pbNationalDex
- end
- @sprites["dex_panel_sel"].y=@sprites["dex_panel3"].y
- update=true
- end
- end
- return if !update
- @black=Sprite.new(@viewport)
- @black.z=9999999
- black_bitmap=Bitmap.new(512,384)
- black_bitmap.fill_rect(0,0,512,384,Color.new(0,0,0))
- @black.bitmap=black_bitmap
- @black.opacity=0
- $pokedex2=$pokedex
- 10.times do
- @black.opacity+=255/10
- waitAndUpdate(1)
- end
- @sprites["dex_panel_sel"].visible=false
- updateDexIndexIfDexHasChanged(pkmn)
- drawPanels
- updateSliderPosition
- updatePokemonSprite if @dex_index>0
- @sprites["dex_panel_sel"].visible=true
- 10.times do
- @black.opacity-=255/10
- waitAndUpdate(1)
- end
- @black.dispose
- @nextDex=false
- end
- # If a Panel was being pressed this will return the current clicked Pokémon.
- def mousePanelInput
- return if !$mouse.leftPressed?(@sprites["panels"])
- # when clicking on a panel and no panel is selected yet.
- if @sprites["panel_sel"].y<0
- for i in 0..6
- if $mouse.inArea?(192,i*48+2,302,42) && Input.releaseex?(Input::Mouse_Left)
- @sprites["panel_sel"].y+=48*(i+1)
- @dex_index+=i+1
- @sprites["panel_sel"].x=192
- @sprites["panel_sel"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/panel_sel_pkmn")
- updatePokemonSprite
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=false
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=true
- @scene=2 if $Trainer.seen[currentPokemon]
- return
- end
- end
- end
- # when clicking on the selected panel.
- if $mouse.leftPressed?(@sprites["panel_sel"])
- updatePokemonSprite
- @sprites["panel_sel"].visible=true
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=false
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=true
- @scene=2 if $Trainer.seen[currentPokemon]
- return
- end
- # when clicking on a panel which is not the selected panel.
- subtract=(@sprites["panel_sel"].y-2)/48
- for i in 0..6
- if $mouse.inArea?(192,i*48+2,302,42) && $mouse.leftPressed?(@sprites["panels"])
- addition=i
- end
- end
- return if !addition
- species=currentPokemon+addition-subtract
- @dex_index+=addition-subtract
- graphic_change=(addition-subtract)*48
- @sprites["panel_sel"].y+=graphic_change
- @sprites["panel_sel"].visible=true
- updatePokemonSprite
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=false
- waitAndUpdate(5)
- @sprites["panel_sel"].visible=true
- @scene=2 if $Trainer.seen[currentPokemon]
- end
- # Method for ending the scene.
- def pbEndScene
- pbFadeOutAndHide(@sprites)
- pbDisposeSpriteHash(@sprites)
- @viewport.dispose
- end
- def update(current_dex_index=0,current_index=0)
- @scene= -1 # 0=exit , 1=Search Function , 2=Pokémon information
- @nextDex=false
- while @scene<0
- Graphics.update
- Input.update
- # Animating background.
- updateBackground
- # Inputs
- if Input.trigger?(Input::DOWN) && @index==0
- if @dex_index<$pokedex.length
- @dex_index+=1
- if @sprites["panel_sel"].y<290
- @sprites["panel_sel"].y+=48
- else
- @sprites["panels"].y-=48 if canScrollDown
- end
- end
- end
- if Input.trigger?(Input::UP) && @index==0
- if @dex_index>1
- @dex_index-=1
- if @sprites["panel_sel"].y>2
- @sprites["panel_sel"].y-=48
- else
- @sprites["panels"].y+=48 if canScrollUp
- end
- end
- end
- if Input.trigger?(Input::C)
- case @index
- when 0
- @scene=2
- end
- end
- if Input.trigger?(Input::B)
- pbShowAnimation("exit")
- @scene=0
- end
- if defined?($mouse)
- mousePanelInput
- mouseScrollBar
- mouseDexPanels
- if $mouse.inAreaLeft?(278,346,34,28)
- scrollToLeft
- end
- if $mouse.inAreaLeft?(328,346,34,28)
- scrollToRight
- end
- if $mouse.leftClick?(@sprites["exit"])
- pbShowAnimation("exit")
- @scene=0
- end
- if $mouse.leftClick?(@sprites["return"])
- @sprites["return"].setBitmap("Graphics/Pictures/Universal/return2")
- pbWait(10)
- @sprites["return"].setBitmap("Graphics/Pictures/Universal/return")
- pbWait(5)
- @scene=0
- $MenuClose=true
- end
- if $mouse.leftClick?(@sprites["start"])
- @sprites["start"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/start2")
- waitAndUpdate(10)
- @sprites["start"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/start")
- waitAndUpdate(5)
- @scene=1
- end
- if $mouse.leftClick?(@sprites["select"])
- @sprites["select"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/select2")
- waitAndUpdate(10)
- @sprites["select"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/select")
- waitAndUpdate(5)
- @nextDex=true
- mouseDexPanels
- end
- end
- # updating if index has changed.
- if @index != current_index
- if !@sprites["cursor_1"]
- drawBW2Cursor(469,339,23,25) if @index==1
- end
- current_index=@index
- end
- # updating if dex index has changed.
- if @dex_index != current_dex_index
- updatePokemonSprite
- updateSliderPosition
- current_dex_index=@dex_index
- updateLeftRight2Sprite
- end
- end
- a=@sprites["panels"].y if @scene==2
- b=@sprites["panel_sel"].y if @scene==2
- pbEndScene
- PokedexSearch.new if @scene==1
- if a && b && @dex_index && currentPokemon
- PokedexPages.new(@dex_index,a,b) if $Trainer.seen[currentPokemon] && @scene==2
- end
- end
- end
- #===============================================================================
- # * Four Pokédex Pages
- #===============================================================================
- class PokedexPages
- def initialize(dex_index,panel_y,panel_sel_y)
- @dex_index=dex_index
- @old_dex_index=dex_index
- @species=$pokedex[@dex_index-1]
- @panel_y=panel_y
- @panel_sel_y=panel_sel_y
- @pokemon=PokeBattle_Pokemon.new(@species,1)
- @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
- @viewport.z=99999
- @sprites={}
- @sprites["bg"]=Sprite.new(@viewport)
- @sprites["bg"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/bg1")
- @sprites["down_bg"]=IconSprite.new(0,336,@viewport)
- @sprites["down_bg"].bitmap=Bitmap.new("Graphics/Pictures/Universal/down_bg")
- @sprites["updown"]=IconSprite.new(10,342,@viewport)
- @sprites["updown"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/updown")
- @sprites["info"]=IconSprite.new(96,340,@viewport)
- @sprites["info"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/info")
- @sprites["area"]=IconSprite.new(160,340,@viewport)
- @sprites["area"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/area")
- @sprites["forms"]=IconSprite.new(224,340,@viewport)
- @sprites["forms"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/forms")
- @sprites["exit"]=IconSprite.new(426,346,@viewport)
- @sprites["exit"].bitmap=Bitmap.new("Graphics/Pictures/Universal/exit")
- @sprites["return"]=IconSprite.new(474,346,@viewport)
- @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return")
- @page=1
- @sel=0
- update
- end
- # Method for updating the background.
- def updateBackground
- return if !@sprites["bg"]
- @sprites["bg"].x-=2
- @sprites["bg"].x=0 if @sprites["bg"].x <= -512
- end
- # Method which is basically pbWait(x) but with a background update added.
- def waitAndUpdate(x)
- x.times do
- updateBackground
- pbWait(1)
- end
- end
- # Method for disposing all necessary sprites if the page changes.
- def disposeSprites
- # Page 1 Sprites
- @sprites["overlay"].dispose if @sprites["overlay"]
- @sprites["page1"].dispose if @sprites["page1"]
- @sprites["owned"].dispose if @sprites["owned"]
- @sprites["pokemon"].dispose if @sprites["pokemon"]
- @sprites["dexentry"].dispose if @sprites["dexentry"]
- # Page 2 Sprites
- @sprites["map"].dispose if @sprites["map"]
- @sprites["map2"].dispose if @sprites["map2"]
- @sprites["mapbottom"].dispose if @sprites["mapbottom"]
- # Page 3 Sprites
- @sprites["formname_bg"].dispose if @sprites["formname_bg"]
- @sprites["front"].dispose if @sprites["front"]
- @sprites["back"].dispose if @sprites["back"]
- @sprites["select"].dispose if @sprites["select"]
- @sprites["start"].dispose if @sprites["start"]
- @sprites["text"].dispose if @sprites["text"]
- @sprites["leftarrow"].dispose if @sprites["leftarrow"]
- @sprites["rightarrow"].dispose if @sprites["rightarrow"]
- end
- # Method which checks whether you can scroll down or not.
- def canScrollDown
- return (@dex_index != ($pokedex.length))
- end
- # Method which checks whether you can scroll up or not.
- def canScrollUp
- return (@dex_index != 1)
- end
- # Method for pressing exit.
- def pressedExit
- @sprites["exit"].bitmap=Bitmap.new("Graphics/Pictures/Universal/exit2")
- waitAndUpdate(10)
- @sprites["exit"].bitmap=Bitmap.new("Graphics/Pictures/Universal/exit")
- waitAndUpdate(5)
- end
- # Method for ending the scene.
- def pbEndScene
- pbFadeOutAndHide(@sprites)
- pbDisposeSpriteHash(@sprites)
- @viewport.dispose
- end
- # Method for getting the next seen Pokémon in the dex. Will return 0
- # if there if there is no next seen Pokémon.
- def searchNextSeenPokemon(dir)
- if dir==2 # DOWN
- for i in @dex_index...$pokedex.length
- return (i+1) if $Trainer.seen[$pokedex[i]]
- end
- return 0
- elsif dir==8 # UP
- i=@dex_index-2
- while !$Trainer.seen[$pokedex[i]]
- i-=1
- return 0 if i==0
- end
- return (i+1)
- end
- end
- def changePokemon(dir)
- new_index=searchNextSeenPokemon(dir)
- if dir==2 # DOWN
- return if !canScrollDown
- if new_index != @dex_index && new_index != 0 && new_index
- @dex_index=new_index
- else
- return
- end
- @sprites["updown"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/updown3")
- elsif dir==8 # UP
- return if !canScrollUp
- if new_index != @dex_index && new_index != 0 && new_index
- @dex_index=new_index
- else
- return
- end
- @sprites["updown"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/updown2")
- end
- waitAndUpdate(10)
- @sprites["updown"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/updown")
- waitAndUpdate(5)
- disposeSprites
- @species=$pokedex[@dex_index-1]
- @pokemon=PokeBattle_Pokemon.new(@species,1)
- drawPageOne if @page==1
- drawPageTwo if @page==2
- @backSprite=nil if @page==3
- @frontSprite=nil if @page==3
- drawPageThree if @page==3
- end
- # Method for updating Page 2.
- def updatePage2
- @numpoints.times {|i|
- @sprites["point#{i}"].opacity=[64,96,128,160,128,96][(Graphics.frame_count/4)%6] if @sprites["point#{i}"]
- }
- end
- def update
- @animSprite=false # For Page 3 whether the Pokémon sprite is animated or not.
- page=0
- @spriteIsFrontSprite=true
- loop do
- Graphics.update
- Input.update
- updateBackground
- updatePage2 if @page==2
- updatePage3 if @page==3
- if !@sprites
- break
- end
- # Inputs
- if Input.trigger?(Input::DOWN)
- if @sel==0
- changePokemon(2)
- end
- end
- if Input.trigger?(Input::UP)
- if @sel==0
- changePokemon(8)
- end
- end
- if Input.trigger?(Input::RIGHT)
- @page+=1 if @page<3
- end
- if Input.trigger?(Input::LEFT)
- @page-=1 if @page>1
- end
- if Input.trigger?(Input::B)
- pressedExit
- break
- end
- if defined?($mouse)
- if $mouse.inAreaLeft?(10,342,28,34) # up arrow
- changePokemon(8)
- end
- if $mouse.inAreaLeft?(58,344,28,34) # down arrow
- changePokemon(2)
- end
- if $mouse.leftClick?(@sprites["exit"])
- pressedExit
- break
- end
- if $mouse.leftClick?(@sprites["info"])
- @page=1
- end
- if $mouse.leftClick?(@sprites["area"])
- @page=2
- end
- if $mouse.leftClick?(@sprites["forms"])
- @page=3
- end
- if @page==3
- if @sprites["leftarrow"]
- if !@sprites["leftarrow"].disposed?
- if $mouse.leftClick?(@sprites["leftarrow"])
- switchFormToLeft
- end
- end
- end
- if @sprites["rightarrow"]
- if !@sprites["rightarrow"].disposed?
- if $mouse.leftClick?(@sprites["rightarrow"])
- switchFormToRight
- end
- end
- end
- if @sprites["select"]
- if !@sprites["select"].disposed?
- if $mouse.leftClick?(@sprites["select"])
- @sprites["select"].setBitmap("Graphics/Pictures/Pokedex/Pages/turn_sprite2")
- waitAndUpdate(10)
- @sprites["front"].visible=@sprites["back"].visible
- @spriteIsFrontSprite=@sprites["front"].visible
- @sprites["back"].visible=(@sprites["front"].visible)? false : true
- @sprites["select"].setBitmap("Graphics/Pictures/Pokedex/Pages/turn_sprite")
- waitAndUpdate(5)
- end
- end
- end
- if @sprites["start"]
- if !@sprites["start"].disposed?
- if $mouse.leftClick?(@sprites["start"])
- @sprites["start"].setBitmap("Graphics/Pictures/Pokedex/Pages/start_sprite2")
- waitAndUpdate(10)
- if @animSprite
- @animSprite=false
- else
- @animSprite=true
- end
- @sprites["start"].setBitmap("Graphics/Pictures/Pokedex/Pages/start_sprite")
- end
- end
- end
- end
- end
- # If the page changes.
- if @page != page
- @sprites["info"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/info") if page==1
- @sprites["area"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/area") if page==2
- @sprites["forms"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/forms") if page==3
- @sprites["info"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/info2") if @page==1
- @sprites["area"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/area2") if @page==2
- @sprites["forms"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/forms2") if @page==3
- disposeSprites
- drawPageOne if @page==1
- drawPageTwo if @page==2
- drawPageThree if @page==3
- page=@page
- end
- end
- pbEndScene
- if @dex_index<8
- @panel_y=0
- @panel_sel_y=@dex_index*48-46
- elsif @dex_index>$pokedex.length-8
- @panel_y= -48*($pokedex.length-7)
- @panel_sel_y=290-($pokedex.length-@dex_index)*48
- else
- @panel_y= -48*(@dex_index-1)
- @panel_sel_y=2
- end
- MainPokedex.new(@dex_index,@panel_y,@panel_sel_y,$pokedex)
- end
- #===============================================================================
- # * Pokédex INFO
- #===============================================================================
- def drawPageOne
- @sprites["bg"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/bg1")
- @sprites["page1"]=Sprite.new(@viewport)
- @sprites["page1"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/page1")
- @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- @sprites["dexentry"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- pbSetSystemFont(@sprites["overlay"].bitmap)
- pbSetSystemFont(@sprites["dexentry"].bitmap)
- baseColor=Color.new(90,82,82)
- baseColor2=Color.new(255,255,255)
- shadowColor=Color.new(165,165,173)
- textpos=[
- [sprintf(_INTL("HT")),288,152,0,baseColor,shadowColor],
- [sprintf(_INTL("WT")),288,184,0,baseColor,shadowColor]
- ]
- dex_num=@dex_index.to_s
- if dex_num.length==1
- dex_num.insert(0,"0")
- end
- if dex_num.length==2
- dex_num.insert(0,"0")
- end
- textpos.push([_INTL("#{dex_num}"),272,26,0,baseColor,shadowColor])
- textpos.push([_INTL("#{@pokemon.name}"),352,26,0,baseColor,shadowColor])
- if $Trainer.owned[@species]
- @sprites["owned"]=IconSprite.new(204,16,@viewport)
- @sprites["owned"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/owned")
- dexdata=pbOpenDexData
- pbDexDataOffset(dexdata,@species,8)
- type1=dexdata.fgetb
- type2=dexdata.fgetb
- pbDexDataOffset(dexdata,@species,33)
- height=dexdata.fgetw
- weight=dexdata.fgetw
- dexdata.close
- kind=pbGetMessage(MessageTypes::Kinds,@species)
- dexentry=pbGetMessage(MessageTypes::Entries,@species)
- inches=(height/0.254).round
- pounds=(weight/0.45359).round
- textpos.push([_ISPRINTF("{1:s} Pokémon",kind),376,60,2,baseColor,shadowColor])
- if pbGetCountry()==0xF4 # If the user is in the United States
- textpos.push([_ISPRINTF("{1:d}'{2:02d}\"",inches/12,inches%12),490,152,1,baseColor,shadowColor])
- textpos.push([_ISPRINTF("{1:4.1f} lbs.",pounds/10.0),490,184,1,baseColor,shadowColor])
- else
- textpos.push([_ISPRINTF("{1:.1f} m",height/10.0),490,152,1,baseColor,shadowColor])
- textpos.push([_ISPRINTF("{1:.1f} kg",weight/10.0),490,184,1,baseColor,shadowColor])
- end
- drawTextEx(@sprites["dexentry"].bitmap,
- 36,234,Graphics.width-36,3,dexentry,baseColor2,shadowColor)
- footprintfile=pbPokemonFootprintFile(@species)
- if footprintfile
- footprint=BitmapCache.load_bitmap(footprintfile)
- @sprites["overlay"].bitmap.blt(225,116,footprint,footprint.rect)
- footprint.dispose
- end
- typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
- type1rect=Rect.new(0,type1*24,64,24)
- type2rect=Rect.new(0,type2*24,64,24)
- @sprites["overlay"].bitmap.blt(304,108,typebitmap.bitmap,type1rect)
- @sprites["overlay"].bitmap.blt(384,108,typebitmap.bitmap,type2rect) if type1!=type2
- typebitmap.dispose
- else
- # if $Trainer.seen[@species]
- # typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
- # type1rect=Rect.new(0,type1*24,64,24)
- # type2rect=Rect.new(0,type2*24,64,24)
- # @sprites["overlay"].bitmap.blt(304,108,typebitmap.bitmap,type1rect)
- # @sprites["overlay"].bitmap.blt(384,108,typebitmap.bitmap,type2rect) if type1!=type2
- # typebitmap.dispose
- # end
- textpos.push([_INTL("????? Pokémon"),376,60,2,baseColor,shadowColor])
- if pbGetCountry()==0xF4 # If the user is in the United States
- textpos.push([_INTL("???'??\""),490,152,1,baseColor,shadowColor])
- textpos.push([_INTL("????.? lbs."),490,184,1,baseColor,shadowColor])
- else
- textpos.push([_INTL("????.? m"),490,152,1,baseColor,shadowColor])
- textpos.push([_INTL("????.? kg"),490,184,1,baseColor,shadowColor])
- end
- end
- pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
- if USING_BITMAP_WRAPPER && defined?(AnimatedBitmapWrapper)
- pkmnbitmap=AnimatedBitmapWrapper.new(pbPokemonBitmapFile(@species,false))
- else
- pkmnbitmap=AnimatedBitmap.new(pbPokemonBitmapFile(@species,false))
- end
- @sprites["pokemon"]=BitmapSprite.new(pkmnbitmap.bitmap.width,
- pkmnbitmap.bitmap.height,@viewport)
- @sprites["pokemon"].bitmap.blt(0,0,
- pkmnbitmap.bitmap,pkmnbitmap.bitmap.rect)
- @sprites["pokemon"].mirror=true
- @sprites["pokemon"].ox=pkmnbitmap.width/2
- @sprites["pokemon"].oy=pkmnbitmap.height/2
- @sprites["pokemon"].x=96
- @sprites["pokemon"].y=96
- pkmnbitmap.dispose
- pbPlayCry(@species)
- end
- #===============================================================================
- # * Pokédex AREA
- #===============================================================================
- def drawPageTwo
- regionmap= -1
- pbRgssOpen("Data/townmap.dat","rb"){|f|
- @mapdata=Marshal.load(f)
- }
- mappos=!$game_map ? nil : pbGetMetadata($game_map.map_id,MetadataMapPosition)
- region=regionmap
- if region<0 # Use player's current region
- region=mappos ? mappos[0] : 0 # Region 0 default
- end
- @sprites["map"]=IconSprite.new(0,0,@viewport)
- @sprites["map"].setBitmap("Graphics/Pictures/#{@mapdata[region][1]}")
- @sprites["map"].x+=(Graphics.width-@sprites["map"].bitmap.width)/2
- for hidden in REGIONMAPEXTRAS
- if hidden[0]==region && hidden[1]>0 && $game_switches[hidden[1]]
- if !@sprites["map2"]
- @sprites["map2"]=BitmapSprite.new(480,320,@viewport)
- @sprites["map2"].x=@sprites["map"].x; @sprites["map2"].y=@sprites["map"].y
- end
- pbDrawImagePositions(@sprites["map2"].bitmap,[
- ["Graphics/Pictures/#{hidden[4]}",
- hidden[2]*PokemonRegionMapScene::SQUAREWIDTH,
- hidden[3]*PokemonRegionMapScene::SQUAREHEIGHT,0,0,-1,-1]
- ])
- end
- end
- @point=BitmapWrapper.new(PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT+4)
- @point.fill_rect(0,0,
- PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT+4,Color.new(255,0,0))
- @point2=BitmapWrapper.new(PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT+4)
- @point2.fill_rect(4,0,
- PokemonRegionMapScene::SQUAREWIDTH,
- PokemonRegionMapScene::SQUAREHEIGHT+4,Color.new(255,0,0))
- @point3=BitmapWrapper.new(PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT+4)
- @point3.fill_rect(0,4,
- PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT,Color.new(255,0,0))
- @point4=BitmapWrapper.new(PokemonRegionMapScene::SQUAREWIDTH+4,
- PokemonRegionMapScene::SQUAREHEIGHT+4)
- @point4.fill_rect(4,4,
- PokemonRegionMapScene::SQUAREWIDTH,
- PokemonRegionMapScene::SQUAREHEIGHT,Color.new(255,0,0))
- encdata=load_data("Data/encounters.dat")
- points=[]
- mapwidth=1+PokemonRegionMapScene::RIGHT-PokemonRegionMapScene::LEFT
- for enc in encdata.keys
- enctypes=encdata[enc][1]
- if pbFindEncounter(enctypes,@species)
- mappos=pbGetMetadata(enc,MetadataMapPosition)
- if mappos && mappos[0]==region
- showpoint=true
- for loc in @mapdata[region][2]
- showpoint=false if loc[0]==mappos[1] && loc[1]==mappos[2] &&
- loc[7] && !$game_switches[loc[7]]
- end
- if showpoint
- mapsize=pbGetMetadata(enc,MetadataMapSize)
- if mapsize && mapsize[0] && mapsize[0]>0
- sqwidth=mapsize[0]
- sqheight=(mapsize[1].length*1.0/mapsize[0]).ceil
- for i in 0...sqwidth
- for j in 0...sqheight
- if mapsize[1][i+j*sqwidth,1].to_i>0
- points[mappos[1]+i+(mappos[2]+j)*mapwidth]=true
- end
- end
- end
- else
- points[mappos[1]+mappos[2]*mapwidth]=true
- end
- end
- end
- end
- end
- i=0
- for j in 0...points.length
- if points[j]
- s=SpriteWrapper.new(@viewport)
- s.x=(j%mapwidth)*PokemonRegionMapScene::SQUAREWIDTH-2
- s.x+=(Graphics.width-@sprites["map"].bitmap.width)/2
- s.y=(j/mapwidth)*PokemonRegionMapScene::SQUAREHEIGHT-2
- s.y+=(Graphics.height-@sprites["map"].bitmap.height)/2
- if j>=1 && points[j-1]
- if j>=mapwidth && points[j-mapwidth]
- s.bitmap=@point4
- else
- s.bitmap=@point2
- end
- else
- if j>=mapwidth && points[j-mapwidth]
- s.bitmap=@point3
- else
- s.bitmap=@point
- end
- end
- @sprites["point#{i}"]=s
- i+=1
- end
- end
- @numpoints=i
- return true
- end
- #===============================================================================
- # * Pokédex FORMS
- #===============================================================================
- def drawPageThree
- species=@species
- @gender=$Trainer.formlastseen[species][0]
- @form=$Trainer.formlastseen[species][1]
- @available=pbGetAvailable # [name, gender, form]
- @sprites["bg"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Pages/bg3")
- @sprites["formname_bg"]=IconSprite.new(130,6,@viewport)
- @sprites["formname_bg"].setBitmap("Graphics/Pictures/Pokedex/Pages/formname")
- @sprites["text"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- @sprites["front"]=PokemonSprite.new(@viewport)
- @sprites["back"]=PokemonSprite.new(@viewport)
- if @spriteIsFrontSprite
- @sprites["back"].visible=false
- else
- @sprites["front"].visible=false
- end
- @sprites["icon"]=PokemonSpeciesIconSprite.new(@species,@viewport)
- @sprites["icon"].gender=@gender
- @sprites["icon"].form=@form
- @sprites["icon"].x=52
- @sprites["icon"].y=290
- @sprites["icon"].visible=false
- @sprites["select"]=IconSprite.new(130,306,@viewport)
- @sprites["select"].setBitmap("Graphics/Pictures/Pokedex/Pages/turn_sprite")
- @sprites["start"]=IconSprite.new(258,306,@viewport)
- @sprites["start"].setBitmap("Graphics/Pictures/Pokedex/Pages/start_sprite")
- @sprites["leftarrow"]=IconSprite.new(8,0,@viewport)
- @sprites["leftarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_left")
- @sprites["rightarrow"]=IconSprite.new(484,0,@viewport)
- @sprites["rightarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_right")
- @frontSprite=nil; @backSprite=nil; @formNeedsRefresh=false
- end
- # Updating Page 3. Will be called every frame.
- def updatePage3
- @sprites["text"].bitmap.clear
- pbSetSystemFont(@sprites["text"].bitmap)
- name=""
- for i in @available
- if i[1]==@gender && i[2]==@form
- name=i[0]
- break
- end
- end
- text=[
- [_INTL("{1}",name),
- 256,44,2,
- Color.new(255,255,255),Color.new(165,165,173)],
- ]
- pbDrawTextPositions(@sprites["text"].bitmap,text)
- frontBitmap=pbCheckPokemonBitmapFiles([@species,false,(@gender==1),false,@form,false])
- if (frontBitmap && !@frontSprite) || @formNeedsRefresh
- frontSprite=AnimatedBitmap.new(frontBitmap)
- if USING_BITMAP_WRAPPER && defined?(AnimatedBitmapWrapper)
- frontSprite=AnimatedBitmapWrapper.new(frontBitmap)
- else
- frontSprite=AnimatedBitmap.new(frontBitmap)
- end
- @sprites["front"].bitmap=frontSprite.bitmap
- end
- backBitmap=pbCheckPokemonBitmapFiles([@species,true,(@gender==1),false,@form,false])
- if (backBitmap && !@backSprite) || @formNeedsRefresh
- if USING_BITMAP_WRAPPER && defined?(AnimatedBitmapWrapper)
- backSprite=AnimatedBitmapWrapper.new(backBitmap)
- else
- backSprite=AnimatedBitmap.new(backBitmap)
- end
- @sprites["back"].bitmap=backSprite.bitmap
- end
- metrics=load_data("Data/metrics.dat")
- backMetric=metrics[0][@species]
- pbSetSpritePositionToMiddle(@sprites["front"])
- pbSetSpritePositionToMiddle(@sprites["back"])
- @sprites["icon"].update
- if Input.trigger?(Input::C)
- pbChooseForm
- end
- if (!@frontSprite || !@backSprite) || @formNeedsRefresh
- @frontSprite=frontSprite
- @backSprite=backSprite
- @formNeedsRefresh=false
- end
- animateSprite
- end
- # Checking for available forms.
- def pbGetAvailable
- available=[] # [name, gender, form]
- dexdata=pbOpenDexData
- pbDexDataOffset(dexdata,@species,18)
- genderbyte=dexdata.fgetb
- dexdata.close
- formnames=pbGetMessage(MessageTypes::FormNames,@species)
- if !formnames || formnames==""
- formnames=[""]
- else
- formnames=strsplit(formnames,/,/)
- end
- @gender=0 if genderbyte==0 || genderbyte==255 # Always male or genderless
- @gender=1 if genderbyte==254 # Always female
- if formnames && formnames[0]!=""
- for j in 0...2
- if $Trainer.formseen[@species][j][0] || ALWAYSSHOWALLFORMS # That gender/form has been seen
- if pbResolveBitmap(sprintf("Graphics/Battlers/%sf",getConstantName(PBSpecies,@species))) ||
- pbResolveBitmap(sprintf("Graphics/Battlers/%03df",@species))
- available.push([_INTL("{1} Male",formnames[0]),j,0]) if j==0
- available.push([_INTL("{1} Female",formnames[0]),j,0]) if j==1
- else
- gendertopush=(genderbyte==254) ? 1 : 0
- available.push([formnames[0],gendertopush,0])
- break
- end
- end
- end
- else
- if $Trainer.formseen[@species][0][0] || ALWAYSSHOWALLFORMS # Male/form 0 has been seen
- if genderbyte!=254 && genderbyte!=255 # Not always female & not genderless
- available.push([_INTL("Male"),0,0])
- end
- end
- if $Trainer.formseen[@species][1][0] || ALWAYSSHOWALLFORMS # Female/form 0 has been seen
- if genderbyte!=0 && genderbyte!=255 # Not always male & not genderless
- available.push([_INTL("Female"),1,0])
- end
- end
- if $Trainer.formseen[@species][0][0] || ALWAYSSHOWALLFORMS # Genderless/form 0 has been seen
- if genderbyte==255 # Genderless
- if formnames && formnames.length>1
- available.push([_INTL("One Form"),0,0])
- else
- available.push([_INTL("Genderless"),0,0])
- end
- end
- end
- end
- for i in 1...formnames.length
- for j in 0...2
- if $Trainer.formseen[@species][j][i] || ALWAYSSHOWALLFORMS # That gender/form has been seen
- if pbResolveBitmap(sprintf("Graphics/Battlers/%sf_%d",getConstantName(PBSpecies,@species),i)) ||
- pbResolveBitmap(sprintf("Graphics/Battlers/%03df_%d",@species,i))
- available.push([_INTL("{1} Male",formnames[i]),j,i]) if j==0
- available.push([_INTL("{1} Female",formnames[i]),j,i]) if j==1
- else
- available.push([formnames[i],j,i])
- break
- end
- end
- end
- end
- return available
- end
- # Checking for commands.
- def pbGetCommands
- commands=[]
- for i in @available
- commands.push(i[0])
- end
- return commands
- end
- # Animates the Sprite. Thanks Luka for his BitmapWrapper class.
- def animateSprite
- if !defined?(AnimatedBitmapWrapper)
- p "Animation can only be played when using AnimatedBitmapWrapper." if $DEBUG
- return
- end
- if @animSprite
- if @frontSprite.finished?
- @frontSprite.toFrame(0)
- @backSprite.toFrame(0)
- end
- @frontSprite.play
- @backSprite.play
- @sprites["front"].bitmap=@frontSprite.bitmap.clone
- @sprites["back"].bitmap=@backSprite.bitmap.clone
- end
- end
- # Switches the form to the left.
- def switchFormToLeft
- @sprites["leftarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_left2")
- x=@sprites["front"].x
- 10.times do
- @sprites["front"].x-=(x+@sprites["front"].bitmap.width/2)/10
- @sprites["back"].x=@sprites["front"].x
- updateBackground
- animateSprite
- pbWait(1)
- end
- @sprites["leftarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_left")
- minForm=0
- for i in 0...@available.length
- if @gender==@available[i][1] && @form==@available[i][2]
- currentForm=i
- break
- end
- end
- if currentForm==minForm
- nextForm=@available.length-1
- else
- nextForm=currentForm-1
- end
- @gender=@sprites["icon"].gender=@available[nextForm][1]
- @form=@sprites["icon"].form=@available[nextForm][2]
- @formNeedsRefresh=true
- updatePage3
- @sprites["front"].x=512+(@sprites["front"].bitmap.width/2)
- x=@sprites["front"].x/2
- 10.times do
- @sprites["front"].x-=(x+@sprites["front"].bitmap.width/2)/10
- @sprites["back"].x=@sprites["front"].x
- updateBackground
- animateSprite
- pbWait(1)
- end
- end
- # Switches the form to the right.
- def switchFormToRight
- @sprites["rightarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_right2")
- x=@sprites["front"].x
- 10.times do
- @sprites["front"].x+=(x+@sprites["front"].bitmap.width/2)/10
- @sprites["back"].x=@sprites["front"].x
- updateBackground
- animateSprite
- pbWait(1)
- end
- @sprites["rightarrow"].setBitmap("Graphics/Pictures/Pokedex/Pages/arrow_right")
- maxForm=@available.length-1
- for i in 0...@available.length
- if @gender==@available[i][1] && @form==@available[i][2]
- currentForm=i
- break
- end
- end
- if currentForm==maxForm
- nextForm=0
- else
- nextForm=currentForm+1
- end
- @gender=@sprites["icon"].gender=@available[nextForm][1]
- @form=@sprites["icon"].form=@available[nextForm][2]
- @formNeedsRefresh=true
- updatePage3
- @sprites["front"].x=0-(@sprites["front"].bitmap.width/2)
- x=256-(@sprites["front"].bitmap.width/2)
- 10.times do
- @sprites["front"].x+=(x+@sprites["front"].bitmap.width/2)/10
- @sprites["back"].x=@sprites["front"].x
- updateBackground
- animateSprite
- pbWait(1)
- end
- end
- # Choosing the form manually by pressing enter.
- def pbChooseForm
- oldgender=@gender
- oldform=@form
- commands=pbGetCommands
- using(cmdwindow=Window_CommandPokemon.new(commands)) {
- cmdwindow.height=128 if cmdwindow.height>128
- cmdwindow.z=@viewport.z+1
- pbBottomRight(cmdwindow)
- for i in 0...@available.length
- if @available[i][1]==@gender && @available[i][2]==@form
- cmdwindow.index=i
- break
- end
- end
- loop do
- updateBackground
- oldindex=cmdwindow.index
- Graphics.update
- Input.update
- cmdwindow.update
- @sprites["icon"].update
- if cmdwindow.index!=oldindex
- @gender=@sprites["icon"].gender=@available[cmdwindow.index][1]
- @form=@sprites["icon"].form=@available[cmdwindow.index][2]
- @formNeedsRefresh=true
- updatePage3
- end
- if Input.release?(Input::B)
- pbPlayCancelSE()
- @gender=@sprites["icon"].gender=oldgender
- @form=@sprites["icon"].form=oldform
- break
- end
- if Input.trigger?(Input::C)
- pbPlayDecisionSE()
- break
- end
- end
- }
- end
- end
- #===============================================================================
- # Pokédex Search
- #===============================================================================
- class PokedexSearch
- def initialize
- @options=["ORDER","NAME","TYPE","COLOR"]
- @order=["NUMBER","A to Z","Heavy to Light","Light to Heavy",
- "Tall to Short","Short to Tall"]
- @name=["--","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P",
- "Q","R","S","T","U","V","W","X","Y","Z"]
- @type=["-","Normal","Fighting","Flying","Poison","Ground","Rock","Bug",
- "Ghost","Steel","Fire","Water","Grass","Electric","Psychic",
- "Ice","Dragon","Dark"]
- @color=["-","Red","Blue","Yellow","Green","Black","Brown","Purple","Gray",
- "White","Pink"]
- @stuff=[@order,@name,@type,@color]
- @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
- @viewport.z=99999
- @sprites={}
- @sprites["bg"]=Sprite.new(@viewport)
- @sprites["bg"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/bg")
- for i in 0...@options.length
- @sprites["index_panel#{i+1}"]=IconSprite.new(8,4+50*i,@viewport)
- @sprites["index_panel#{i+1}"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/index_panel")
- end
- drawPanels
- @sprites["check0"]=IconSprite.new(262,0,@viewport)
- @sprites["check0"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/checked")
- @sprites["check0"].visible=false
- @sprites["check1"]=IconSprite.new(262,0,@viewport)
- @sprites["check1"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/checked")
- @sprites["check1"].visible=false
- @sprites["down_bg"]=Sprite.new(@viewport)
- @sprites["down_bg"].bitmap=Bitmap.new("Graphics/Pictures/Universal/down_bg")
- @sprites["down_bg"].y=Graphics.height-@sprites["down_bg"].bitmap.height
- @sprites["functions"]=IconSprite.new(0,288,@viewport)
- @sprites["functions"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/functions")
- @sprites["exit"]=IconSprite.new(426,346,@viewport)
- @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
- @sprites["return"]=IconSprite.new(474,346,@viewport)
- @sprites["return"].setBitmap("Graphics/Pictures/Universal/return")
- @sprites["index_panel_sel"]=IconSprite.new(262,-5000,@viewport)
- @sprites["index_panel_sel"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/index_panel_sel")
- @sprites["panel_sel"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/panel_sel")
- @sprites["panel_sel"].visible=false
- @sprites["sort"]=IconSprite.new(8,124,@viewport)
- @sprites["overlay"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
- @sprites["overlay2"]=BitmapSprite.new(Graphics.width, Graphics.height, @viewport)
- @sprites["scroll_bar"]=IconSprite.new(502,18,@viewport)
- @sprites["scroll_bar"].setBitmap("Graphics/Pictures/Pokedex/scroll_bar")
- @sprites["scroll_bar"].visible=false
- @sprites["slider"]=IconSprite.new(500,16,@viewport)
- @sprites["slider"].setBitmap("Graphics/Pictures/Pokedex/slider")
- @sprites["slider"].visible=false
- update
- end
- # Method for updating the background.
- def updateBackground
- return if !@sprites["bg"]
- @sprites["bg"].x-=2
- @sprites["bg"].x=0 if @sprites["bg"].x <= -512
- end
- # Method which is basically pbWait(x) but with a background update added.
- def waitAndUpdate(frames)
- frames.times do
- updateBackground
- pbWait(1)
- end
- end
- # Method for ending the scene.
- def pbEndScene
- pbFadeOutAndHide(@sprites)
- pbDisposeSpriteHash(@sprites)
- @viewport.dispose
- end
- # Method for updating the Index panel.
- def updateIndexPanel
- @sprites["index_panel_sel"].y= 2+50*(@index-1)
- end
- # Method for the action which happens when pressing exit.
- def exitPressed
- @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit2")
- waitAndUpdate(10)
- @sprites["exit"].setBitmap("Graphics/Pictures/Universal/exit")
- waitAndUpdate(5)
- end
- # Method for drawing the second page.
- def drawPageTwo
- @index2=0
- @sprites["scroll_bar"].visible=true
- @sprites["slider"].visible=true
- @sprites["panel_sel"].y=2
- @sprites["panel_sel"].visible=true
- @sprites["panel_#{@index}"].visible=true
- @sprites["overlay_#{@index}"].visible=true
- @sprites["overlay2"].visible=true
- @sprites["functions"].visible=false
- @sprites["exit"].visible=false
- @sprites["overlay"].visible=false
- @sprites["check0"].visible=true if $searchSettings[@index][0]>(-1)
- if ($searchSettings[2][1]>(-1)) && @index==2
- @sprites["check1"].visible=true
- end
- updateCheckSprite
- updateSliderPosition
- index2Text
- for i in 0...@options.length
- @sprites["index_panel#{i+1}"].visible=false
- end
- @sprites["sort"].visible=true
- @sprites["sort"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/sort")
- @sprites["sort"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/sort2") if @index==2
- end
- # Method for drawing the first page.
- def drawPageOne
- @sprites["scroll_bar"].visible=false
- @sprites["slider"].visible=false
- @sprites["panel_sel"].visible=false
- @sprites["panel_#{@index}"].visible=false
- @sprites["overlay_#{@index}"].visible=false
- @sprites["sort"].visible=false
- @sprites["panel_#{@index}"].y=2
- @sprites["panel_#{@index}"].visible=false
- @sprites["overlay_#{@index}"].y=@sprites["panel_#{@index}"].y
- @sprites["overlay_#{@index}"].visible=false
- @sprites["overlay2"].visible=false
- @sprites["check0"].visible=false
- @sprites["check1"].visible=false
- @sprites["functions"].visible=true
- @sprites["exit"].visible=true
- @sprites["overlay"].visible=true
- @sprites["index_panel_sel"].visible=true
- indexText
- for i in 0...@options.length
- @sprites["index_panel#{i+1}"].visible=true
- end
- @index+=1
- end
- # Method for drawing panels.
- def drawPanels
- @count=0 if !@count
- @count+=1
- panel=Sprite.new
- panel.bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/panel")
- baseColor = Color.new(255,255,255)
- shadowColor = Color.new(165,165,173)
- for i in 0...@stuff.length
- @sprites["panel_#{i}"]=Sprite.new(@viewport)
- @sprites["panel_#{i}"].bitmap=Bitmap.new(240,48*@stuff[i].length-1)
- @sprites["panel_#{i}"].x=258
- @sprites["panel_#{i}"].y=2
- @sprites["panel_#{i}"].visible=false
- end
- @sprites["panel_sel"]=IconSprite.new(256,2,@viewport)
- for i in 0...@stuff.length
- @sprites["overlay_#{i}"]=BitmapSprite.new(240,48*@stuff[i].length-1,@viewport)
- @sprites["overlay_#{i}"].visible=false
- @sprites["overlay_#{i}"].x=258
- @sprites["overlay_#{i}"].y=2
- pbSetSystemFont(@sprites["overlay_#{i}"].bitmap)
- textpos=[]
- for u in 0...@stuff[i].length
- if u != @stuff[i].length
- textpos.push([_INTL("#{@stuff[i][u+1]}"),120,8+48*u,2,baseColor,shadowColor])
- end
- @sprites["panel_#{i}"].bitmap.blt(0,u*48,panel.bitmap,Rect.new(
- 0,0,panel.bitmap.width,panel.bitmap.height))
- end
- pbDrawTextPositions(@sprites["overlay_#{i}"].bitmap,textpos)
- end
- panel.dispose
- @sprites["panel_0"].src_rect.height-=48
- end
- # Method for drawing the text of the index Page.
- def indexText
- @sprites["overlay"].bitmap.clear
- baseColor = Color.new(255,255,255)
- shadowColor = Color.new(165,165,173)
- pbSetSystemFont(@sprites["overlay"].bitmap)
- textpos=[]
- for i in 0...@options.length
- textpos.push([_INTL("#{@options[i]}"),98,8+50*i,false,baseColor,shadowColor])
- textpos.push([_INTL("#{@stuff[i][0]}"),385,8+50*i,2,baseColor,shadowColor]) if !$searchSettings
- end
- if $searchSettings
- for i in 0...@options.length
- if i ==2
- if $searchSettings[2][0]>(-1) && $searchSettings[2][1]>(-1) # Two types are selected.
- v=$searchSettings[2][0]+1; v2=$searchSettings[2][1]+1
- txt="#{@stuff[2][v]}/#{@stuff[2][v2]}"
- elsif $searchSettings[2][0]>(-1)
- v=$searchSettings[2][0]+1
- txt="#{@stuff[2][v]}"
- elsif $searchSettings[2][1]>(-1)
- v=$searchSettings[2][1]+1
- txt="#{@stuff[2][v]}"
- else
- txt="#{@stuff[2][0]}"
- end
- elsif $searchSettings[i]>(-1)
- v=$searchSettings[i]+1
- txt="#{@stuff[i][v]}"
- else
- txt="#{@stuff[i][0]}"
- end
- textpos.push([_INTL("#{txt}"),385,8+50*i,2,baseColor,shadowColor])
- end
- end
- pbDrawTextPositions(@sprites["overlay"].bitmap,textpos)
- end
- # Method for drawing the text of the second Page (does not include
- # the text on the panels).
- def index2Text
- @sprites["overlay2"].bitmap.clear
- baseColor = Color.new(255,255,255)
- shadowColor = Color.new(165,165,173)
- pbSetSystemFont(@sprites["overlay2"].bitmap)
- textpos=[]
- textpos.push([_INTL("#{@options[@index]}"),128,128,2,baseColor,shadowColor])
- if @index==2
- if $searchSettings[2][0]>(-1) && $searchSettings[2][1]>(-1) # Two types are selected.
- v=$searchSettings[2][0]+1; v2=$searchSettings[2][1]+1
- txt="#{@stuff[2][v]}"
- txt2="#{@stuff[2][v2]}"
- elsif $searchSettings[2][0]>(-1)
- v=$searchSettings[2][0]+1
- txt="#{@stuff[2][v]}"
- txt2="#{@stuff[2][0]}"
- elsif $searchSettings[2][1]>(-1)
- v=$searchSettings[2][1]+1
- txt2="#{@stuff[2][v]}"
- txt="#{@stuff[2][0]}"
- else
- txt="#{@stuff[2][0]}"
- txt2="#{@stuff[2][0]}"
- end
- elsif $searchSettings[@index]>(-1)
- v=$searchSettings[@index]+1
- txt="#{@stuff[@index][v]}"
- else
- txt="#{@stuff[@index][0]}"
- end
- textpos.push([_INTL("#{txt}"),128,176,2,baseColor,shadowColor])
- if txt2
- textpos.push([_INTL("#{txt2}"),128,224,2,baseColor,shadowColor])
- end
- pbDrawTextPositions(@sprites["overlay2"].bitmap,textpos)
- end
- # Method for scrolling down.
- def scrollDownPanel
- return if currentIndex<7
- return if @sprites["panel_sel"].y<290
- if ((maxIndex)>=currentIndex)
- @sprites["panel_#{@index}"].y-=48
- @sprites["overlay_#{@index}"].y-=48
- end
- updateSliderPosition
- end
- # Method for scrolling up.
- def scrollUpPanel
- @sprites["panel_#{@index}"].y+=48
- @sprites["overlay_#{@index}"].y+=48
- end
- # Method which checks if you can scroll down.
- def canScrollDown
- return (@index2.length-2-@index2)>0
- end
- # Method which checks if you can scroll up.
- def canScrollUp
- return (@index2>0)
- end
- # Method which will return the current Index.
- def currentIndex
- return @index2
- end
- # Method which will current the maximum reachable Index.
- def maxIndex
- return (@stuff[@index].length-2)
- end
- # This method updates the position of the slider.
- def updateSliderPosition
- pos=16
- pos+=300*currentIndex/maxIndex
- @sprites["slider"].y=pos
- end
- # This method updates the little checked sprite in the second page
- # when a panel was selected.
- def updateCheckSprite
- if @index==2
- if $searchSettings[2][0]>(-1)
- y=14+@sprites["panel_#{@index}"].y+$searchSettings[2][0]*48
- @sprites["check0"].y=y
- @sprites["check0"].visible=true
- else
- @sprites["check0"].visible=false
- end
- if $searchSettings[2][1]>(-1)
- y=14+@sprites["panel_#{@index}"].y+$searchSettings[2][1]*48
- @sprites["check1"].y=y
- @sprites["check1"].visible=true
- else
- @sprites["check1"].visible=false
- end
- elsif $searchSettings[@index]>(-1)
- y=14+@sprites["panel_#{@index}"].y+$searchSettings[@index]*48
- @sprites["check0"].y=y
- @sprites["check0"].visible=true
- else
- @sprites["check0"].visible=false
- end
- end
- # Will return true if it's the first side. the method is using the visibility
- # of the object @sprites["exit"] to check.
- def firstPage
- return (@sprites["exit"].visible==true)
- end
- # Will return true if it's the second side. the method is using the visibility
- # of the object @sprites["exit"] to check.
- def secondPage
- return (@sprites["exit"].visible==false)
- end
- # Function which will return the index.
- def mousePanelClick
- for i in 0..6
- if $mouse.inAreaLeft?(256,2+i*48,240,44)
- val=i
- end
- end
- return if !val
- val-= (@sprites["panel_#{@index}"].y-2)/48
- return val
- end
- # Function for saving the setting when clicking on on a panel with the mouse.
- def mousePanelClickUpdate
- val=mousePanelClick
- if val
- # Lines which are handling the Types since you can select two types.
- if @index==2
- if $searchSettings[2][0]==val
- $searchSettings[2][0]= -1
- elsif $searchSettings[2][1]==val
- $searchSettings[2][1]= -1
- elsif $searchSettings[2][0]== -1
- $searchSettings[2][0]=val
- elsif $searchSettings[2][0]>(-1)
- $searchSettings[2][1]=val
- end
- # Lines which are handling everything except the Types.
- elsif $searchSettings[@index]==val
- $searchSettings[@index]= -1
- else
- $searchSettings[@index]=val
- end
- end
- updateCheckSprite
- index2Text
- end
- # Function for using the mouse for the scrolling bar.
- def mouseScrollBar
- return if @sprites["exit"].visible
- return if !$mouse.inAreaPress?(494,10,18,315)
- # Updating slider.
- if $mouse.y>316
- @sprites["slider"].y=316
- elsif $mouse.y<16
- @sprites["slider"].y=16
- else
- @sprites["slider"].y=$mouse.y
- end
- # Updating index.
- @index2= (@sprites["slider"].y-16)*maxIndex/300
- @index2=0 if @index2<0
- # Updating panel position.
- y_pos=@sprites["panel_#{@index}"].y
- @sprites["panel_#{@index}"].y= -48*(currentIndex-6)+2 if @sprites["panel_sel"].y>=290
- @sprites["panel_#{@index}"].y= -48*currentIndex+2 if @sprites["panel_sel"].y<=2
- if y_pos<@sprites["panel_#{@index}"].y && @sprites["panel_sel"].y>10
- @sprites["panel_#{@index}"].y=y_pos
- end
- # Updating overlay.
- @sprites["overlay_#{@index}"].y=@sprites["panel_#{@index}"].y
- # Updating selected panel.
- @sprites["panel_sel"].y=2+48*currentIndex+@sprites["panel_#{@index}"].y
- end
- # Update Method
- def update
- index= -1 ; index2=0
- @index=0 ; @index2=0;
- @searchStarted=false; returnpressed=false
- if !$searchSettings
- $searchSettings=[]
- @options.length.times do
- $searchSettings.push(-1)
- end
- $searchSettings[2]=[-1,-1] # 2 Types can be choosen.
- end
- loop do
- Graphics.update
- Input.update
- updateBackground
- updateIndexPanel
- if @newDex
- if @newDex.empty?
- @sprites["search"].dispose
- @newDex=nil
- else
- break
- end
- end
- if Input.trigger?(Input::B)
- if firstPage
- exitPressed
- break
- elsif secondPage
- @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return2")
- waitAndUpdate(10)
- @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return")
- waitAndUpdate(5)
- drawPageOne
- end
- end
- # Scrolling down.
- if Input.trigger?(Input::DOWN) && @index<@options.length
- if secondPage
- if currentIndex<maxIndex
- @index2+=1
- scrollDownPanel if @sprites["panel_sel"].y>=290
- @sprites["panel_sel"].y+=48 if @sprites["panel_sel"].y<290
- updateSliderPosition
- end
- else
- @index+=1
- end
- end
- # Scrolling up.
- if Input.trigger?(Input::UP) && @index>0
- if secondPage
- if currentIndex>0
- @index2-=1
- scrollUpPanel if @sprites["panel_sel"].y<10
- @sprites["panel_sel"].y-=48 if @sprites["panel_sel"].y>5
- updateSliderPosition
- end
- else
- @index-=1
- end
- end
- if Input.trigger?(Input::C)
- if firstPage
- waitAndUpdate(10)
- @sprites["index_panel_sel"].visible=false
- waitAndUpdate(5)
- drawPageTwo
- elsif secondPage
- if ($searchSettings[3][0]>(-1)) && @index==2
- $searchSettings[3][1]=@index2
- else
- $searchSettings[@index]=@index2
- end
- updateCheckSprite
- index2Text
- end
- end
- if defined?($mouse)
- for i in 0...@options.length
- if firstPage && $mouse.inAreaLeft?(262,4+50*i,
- @sprites["index_panel#{i+1}"].bitmap.width,
- @sprites["index_panel#{i+1}"].bitmap.height)
- @index=i
- @sprites["index_panel_sel"].y=2+50*i
- waitAndUpdate(10)
- @sprites["index_panel_sel"].visible=false
- waitAndUpdate(5)
- drawPageTwo
- end
- end
- if firstPage && $mouse.leftClick?(@sprites["exit"])
- exitPressed
- break
- end
- if firstPage && $mouse.inAreaLeft?(4,299,98,36)
- pbReset
- end
- if firstPage && $mouse.inAreaLeft?(226,294,286,46)
- pbStartSearch
- end
- if secondPage && $mouse.leftClick?(@sprites["panel_#{@index}"])
- mousePanelClickUpdate
- end
- if $mouse.leftPressed?(@sprites["return"])
- @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return2")
- waitAndUpdate(10)
- @sprites["return"].bitmap=Bitmap.new("Graphics/Pictures/Universal/return")
- waitAndUpdate(5)
- returnpressed=true if firstPage
- break if firstPage
- drawPageOne if secondPage
- end
- mouseScrollBar
- end
- # Index Index changes.
- if @index != index
- indexText
- index=@index
- end
- # if panel index changes.
- if @index2 != index2
- updateCheckSprite
- index2=@index2
- end
- end
- pbEndScene
- if @newDex
- MainPokedex.new(0,0,-46,@newDex)
- elsif !returnpressed
- MainPokedex.new(0,0,-46,nil)
- end
- end
- # Will return the pokedex without species which the trainer didn't see.
- def convertDex(dex)
- ret=[]
- for i in 0...dex.length
- ret.push(dex[i]) if $Trainer.seen[dex[i]]
- end
- return ret
- end
- # Method will return the number of total search criteria (created for the
- # search bar).
- def totalCriteria
- ret=0
- ret+=1 if $searchSettings[0]>(-1)
- ret+=1 if $searchSettings[1]>(-1)
- ret+=1 if $searchSettings[2][0]>(-1) || $searchSettings[2][1]>(-1)
- ret+=1 if $searchSettings[3]>(-1)
- return ret
- end
- # Method which will reset all the settings.
- def pbReset
- @sprites["reset2"]=IconSprite.new(4,300,@viewport)
- @sprites["reset2"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/reset2")
- waitAndUpdate(10)
- @sprites["reset2"].dispose
- $searchSettings=[]
- @options.length.times do
- $searchSettings.push(-1)
- end
- $searchSettings[2]=[-1,-1] # Creating a 2nd option for the Type.
- indexText
- end
- # This method is basically the core of the class. It will sort out every
- # Pokémon which has the choosen settings.
- def pbStartSearch
- @sprites["start2"]=IconSprite.new(226,294,@viewport)
- @sprites["start2"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/start2")
- waitAndUpdate(10)
- @sprites["start2"].dispose
- waitAndUpdate(5)
- @sprites["search"]=Sprite.new(@viewport)
- @sprites["search"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/pkmn_search")
- @sprites["search"].y=DEFAULTSCREENHEIGHT-@sprites["search"].bitmap.height
- @sprites["search_bar"].dispose if @sprites["search_bar"]
- @sprites["search_bar"]=Sprite.new(@viewport)
- @sprites["search_bar"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/search_bar")
- @sprites["search_bar"].x=18
- bar_width=@sprites["search_bar"].bitmap.width
- @sprites["search_bar"].y=@sprites["search"].y+58
- @sprites["search_bar"].src_rect.width=0
- wasNoScanBefore=true
- criteria=totalCriteria
- if !$pokedex2
- $pokedex2=$pokedex
- end
- $pokedex=$pokedex2
- newDex=[]
- # Searching Pokémon by name.
- if $searchSettings[1]>(-1)
- alphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- letter=alphabet[$searchSettings[1],1]
- letter2=letter.downcase
- oldDex=$pokedex.clone
- for i in 0...oldDex.length
- pokemon=PokeBattle_Pokemon.new(oldDex[i],1)
- if pokemon.name[0,1]==(letter || letter2)
- newDex.push(oldDex[i])
- end
- end
- wasNoScanBefore=false
- end
- # Searching Pokémon by type.
- if $searchSettings[2][0]>(-1) || $searchSettings[2][1]>(-1) ||
- ($searchSettings[2][0]>(-1) && $searchSettings[2][1]>(-1))
- type=$searchSettings[2][0] if $searchSettings[2][0]>(-1)
- type2=$searchSettings[2][1] if $searchSettings[2][1]>(-1)
- # Since the 9th type is "???" we need to adapt the variable type.
- if ($searchSettings[2][0])>8
- type+=1
- end
- if ($searchSettings[2][1])>8
- type2+=1
- end
- oldDex=newDex
- oldDex=$pokedex.clone if wasNoScanBefore
- newDex=[]
- for i in 0...oldDex.length
- pokemon=PokeBattle_Pokemon.new(oldDex[i],1)
- if pokemon.hasType?(type) && !type2
- newDex.push(oldDex[i])
- elsif pokemon.hasType?(type2) && !type
- newDex.push(oldDex[i])
- elsif pokemon.hasType?(type) && pokemon.hasType?(type2)
- newDex.push(oldDex[i])
- end
- end
- wasNoScanBefore=false
- end
- # Searching Pokémon by color.
- if $searchSettings[3]>(-1)
- color=$searchSettings[3]
- oldDex=newDex
- oldDex=$pokedex.clone if wasNoScanBefore
- newDex=[]
- for i in 0...oldDex.length
- pokemon=PokeBattle_Pokemon.new(oldDex[i],1)
- if pokemon.hasColor?(color)
- newDex.push(oldDex[i])
- end
- end
- end
- # Sorting Pokémon from A to Z.
- if $searchSettings[0] == 0
- wasAlreadyOneOption=true
- oldDex=newDex
- oldDex=$pokedex.clone if wasNoScanBefore
- oldDex2=oldDex.clone
- newDex=[]
- for i in 0...oldDex2.length
- pokemon=PokeBattle_Pokemon.new(oldDex2[i],1)
- oldDex[i]=[pokemon.name,oldDex[i]]
- oldDex2[i]=pokemon.name
- end
- oldDex2=oldDex2.sort
- for i in 0...oldDex2.length
- pokemon=oldDex2[i]
- for i in 0...oldDex.length
- if pokemon==oldDex[i][0]
- newDex.push(oldDex[i][1])
- break
- end
- end
- end
- wasNoScanBefore=false
- end
- # Sorting Pokémon from Heavy to Light and from Light to Heavy.
- if $searchSettings[0]==1 || $searchSettings[0]==2
- oldDex=newDex
- oldDex=$pokedex.clone if wasNoScanBefore
- oldDex2=oldDex.clone
- newDex=[]
- for i in 0...oldDex2.length
- pokemon=PokeBattle_Pokemon.new(oldDex2[i],1)
- oldDex[i]=[pokemon.weight,oldDex[i]]
- oldDex2[i]=pokemon.weight
- end
- oldDex2=oldDex2.sort
- oldDex2=oldDex2.reverse if $searchSettings[0]==1
- for i in 0...oldDex2.length
- weight=oldDex2[i]
- for i in 0...oldDex.length
- if weight==oldDex[i][0]
- newDex.push(oldDex[i][1]) if oldDex[i][1] != newDex[newDex.length-1]
- break
- end
- end
- end
- wasNoScanBefore=false
- end
- # Sorting Pokémon from Tall to Short and from Short to Tall.
- if $searchSettings[0]==3 || $searchSettings[0]==4
- wasAlreadyOneOption=true
- oldDex=newDex
- oldDex=$pokedex.clone if wasNoScanBefore
- oldDex2=oldDex.clone
- newDex=[]
- for i in 0...oldDex2.length
- dexdata=pbOpenDexData
- pbDexDataOffset(dexdata,oldDex2[i],33)
- height=dexdata.fgetb
- dexdata.close
- pokemon=PokeBattle_Pokemon.new(oldDex2[i],1)
- oldDex[i]=[height,oldDex[i]]
- oldDex2[i]=height
- end
- oldDex2=oldDex2.sort
- oldDex2.reverse! if $searchSettings[0]==3
- for a in 0...oldDex2.length
- height=oldDex2[a]
- for b in 0...oldDex.length
- if height==oldDex[b][0]
- check=true
- if !newDex.empty?
- for c in 0...newDex.length
- check=false if newDex[c]==oldDex[b][1]
- end
- end
- if check==true
- newDex.push(oldDex[b][1])
- break
- end
- end
- end
- @sprites["search_bar"].src_rect.width+=(bar_width/criteria)/oldDex2.length
- end
- end
- # Finished search.
- frames=40
- frame=0
- frames.times do
- frame+=1
- waitAndUpdate(1)
- @sprites["search_bar"].src_rect.width=(bar_width*frame)/frames
- end
- waitAndUpdate(20)
- @sprites["search_bar"].dispose
- newDex=convertDex(newDex)
- newDex=$pokedex if totalCriteria==0
- if newDex.empty?
- @sprites["search"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/no_pkmn_found")
- else
- @sprites["search"].bitmap=Bitmap.new("Graphics/Pictures/Pokedex/Search/pkmn_found")
- end
- loop do
- waitAndUpdate(1)
- break if Input.trigger?(Input::C)
- if defined?($mouse)
- if $mouse.inAreaLeft?(0,0,Graphics.width,Graphics.height)
- break
- end
- end
- end
- @searchStarted=true
- @newDex=newDex
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement