Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def testSum
- # oldsprites = pbFadeOutAndHide(@sprites)
- scene = TestSummary_Scene.new
- screen = TestSummaryScreen.new(scene)
- screen.pbStartTestScreen
- yield if block_given?
- pbFadeInAndShow(@sprites)#,oldsprites)
- end
- class TestSummary_Scene
- def pbUpdate
- pbUpdateSpriteHash(@sprites)
- end
- def pbStartScene
- @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
- @viewport.z = 99999
- @pokemon = $game_variables[1]
- @page = 1
- @typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
- @markingbitmap = AnimatedBitmap.new("Graphics/Pictures/Summary/markings")
- @sprites = {}
- @sprites["background"] = IconSprite.new(0,0,@viewport)
- @sprites["pokemon"] = PokemonSprite.new(@viewport)
- @sprites["pokemon"].setOffset(PictureOrigin::Center)
- @sprites["pokemon"].x = 104
- @sprites["pokemon"].y = 206
- @sprites["pokemon"].setPokemonBitmap(@pokemon)
- @sprites["pokeicon"] = PokemonIconSprite.new(@pokemon,@viewport)
- @sprites["pokeicon"].setOffset(PictureOrigin::Center)
- @sprites["pokeicon"].x = 46
- @sprites["pokeicon"].y = 92
- @sprites["pokeicon"].visible = false
- @sprites["itemicon"] = ItemIconSprite.new(30,320,@pokemon.item,@viewport)
- @sprites["itemicon"].blankzero = true
- @sprites["overlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- pbSetSystemFont(@sprites["overlay"].bitmap)
- @sprites["movepresel"] = MoveSelectionSprite.new(@viewport)
- @sprites["movepresel"].visible = false
- @sprites["movepresel"].preselected = true
- @sprites["movesel"] = MoveSelectionSprite.new(@viewport)
- @sprites["movesel"].visible = false
- @sprites["ribbonpresel"] = RibbonSelectionSprite.new(@viewport)
- @sprites["ribbonpresel"].visible = false
- @sprites["ribbonpresel"].preselected = true
- @sprites["ribbonsel"] = RibbonSelectionSprite.new(@viewport)
- @sprites["ribbonsel"].visible = false
- @sprites["uparrow"] = AnimatedSprite.new("Graphics/Pictures/uparrow",8,28,40,2,@viewport)
- @sprites["uparrow"].x = 350
- @sprites["uparrow"].y = 56
- @sprites["uparrow"].play
- @sprites["uparrow"].visible = false
- @sprites["downarrow"] = AnimatedSprite.new("Graphics/Pictures/downarrow",8,28,40,2,@viewport)
- @sprites["downarrow"].x = 350
- @sprites["downarrow"].y = 260
- @sprites["downarrow"].play
- @sprites["downarrow"].visible = false
- @sprites["markingbg"] = IconSprite.new(260,88,@viewport)
- @sprites["markingbg"].setBitmap("Graphics/Pictures/Summary/overlay_marking")
- @sprites["markingbg"].visible = false
- @sprites["markingoverlay"] = BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
- @sprites["markingoverlay"].visible = false
- pbSetSystemFont(@sprites["markingoverlay"].bitmap)
- @sprites["markingsel"] = IconSprite.new(0,0,@viewport)
- @sprites["markingsel"].setBitmap("Graphics/Pictures/Summary/cursor_marking")
- @sprites["markingsel"].src_rect.height = @sprites["markingsel"].bitmap.height/2
- @sprites["markingsel"].visible = false
- @sprites["messagebox"] = Window_AdvancedTextPokemon.new("")
- @sprites["messagebox"].viewport = @viewport
- @sprites["messagebox"].visible = false
- @sprites["messagebox"].letterbyletter = true
- pbBottomLeftLines(@sprites["messagebox"],2)
- drawPage(@page)
- pbFadeInAndShow(@sprites) { pbUpdate }
- end
- def pbEndScene
- pbFadeOutAndHide(@sprites) { pbUpdate }
- pbDisposeSpriteHash(@sprites)
- @typebitmap.dispose
- @markingbitmap.dispose if @markingbitmap
- @viewport.dispose
- end
- def pbDisplay(text)
- @sprites["messagebox"].text = text
- @sprites["messagebox"].visible = true
- pbPlayDecisionSE()
- loop do
- Graphics.update
- Input.update
- pbUpdate
- if @sprites["messagebox"].busy?
- if Input.trigger?(Input::C)
- pbPlayDecisionSE() if @sprites["messagebox"].pausing?
- @sprites["messagebox"].resume
- end
- elsif Input.trigger?(Input::C) || Input.trigger?(Input::B)
- break
- end
- end
- @sprites["messagebox"].visible = false
- end
- def pbConfirm(text)
- ret = -1
- @sprites["messagebox"].text = text
- @sprites["messagebox"].visible = true
- using(cmdwindow = Window_CommandPokemon.new([_INTL("Yes"),_INTL("No")])) {
- cmdwindow.z = @viewport.z+1
- cmdwindow.visible = false
- pbBottomRight(cmdwindow)
- cmdwindow.y -= @sprites["messagebox"].height
- loop do
- Graphics.update
- Input.update
- cmdwindow.visible = true if !@sprites["messagebox"].busy?
- cmdwindow.update
- pbUpdate
- if !@sprites["messagebox"].busy?
- if Input.trigger?(Input::B)
- ret = false
- break
- elsif Input.trigger?(Input::C) && @sprites["messagebox"].resume
- ret = (cmdwindow.index==0)
- break
- end
- end
- end
- }
- @sprites["messagebox"].visible = false
- return ret
- end
- def pbShowCommands(commands,index=0)
- ret = -1
- using(cmdwindow = Window_CommandPokemon.new(commands)) {
- cmdwindow.z = @viewport.z+1
- cmdwindow.index = index
- pbBottomRight(cmdwindow)
- loop do
- Graphics.update
- Input.update
- cmdwindow.update
- pbUpdate
- if Input.trigger?(Input::B)
- pbPlayCancelSE
- ret = -1
- break
- elsif Input.trigger?(Input::C)
- pbPlayDecisionSE
- ret = cmdwindow.index
- break
- end
- end
- }
- return ret
- end
- def drawMarkings(bitmap,x,y)
- markings = @pokemon.markings
- markrect = Rect.new(0,0,16,16)
- for i in 0...6
- markrect.x = i*16
- markrect.y = (markings&(1<<i)!=0) ? 16 : 0
- bitmap.blt(x+i*16,y,@markingbitmap.bitmap,markrect)
- end
- end
- def drawPage(page)
- if @pokemon.egg?
- drawPageOneEgg; return
- end
- @sprites["itemicon"].item = @pokemon.item
- overlay = @sprites["overlay"].bitmap
- overlay.clear
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- # Set background image
- @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_#{page}")
- imagepos=[]
- # Show the Poké Ball containing the Pokémon
- ballimage = sprintf("Graphics/Pictures/Summary/icon_ball_%02d",@pokemon.ballused)
- imagepos.push([ballimage,14,60])
- # Show status/fainted/Pokérus infected icon
- status = -1
- status = 6 if @pokemon.pokerusStage==1
- status = @pokemon.status-1 if @pokemon.status>0
- status = 5 if @pokemon.hp==0
- if status>=0
- imagepos.push(["Graphics/Pictures/statuses",124,100,0,16*status,44,16])
- end
- # Show Pokérus cured icon
- if @pokemon.pokerusStage==2
- imagepos.push([sprintf("Graphics/Pictures/Summary/icon_pokerus"),176,100])
- end
- # Show shininess star
- if @pokemon.shiny?
- imagepos.push([sprintf("Graphics/Pictures/shiny"),2,134])
- end
- # Draw all images
- pbDrawImagePositions(overlay,imagepos)
- # Write various bits of text
- pagename = [_INTL("INFO"),
- _INTL("TRAINER MEMO"),
- _INTL("SKILLS"),
- _INTL("MOVES"),
- _INTL("RIBBONS")][page-1]
- textpos = [
- [pagename,26,16,0,base,shadow],
- [@pokemon.name,46,62,0,base,shadow],
- [@pokemon.level.to_s,46,92,0,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Item"),66,318,0,base,shadow]
- ]
- # Write the held item's name
- if @pokemon.hasItem?
- textpos.push([PBItems.getName(@pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
- else
- textpos.push([_INTL("None"),16,352,0,Color.new(192,200,208),Color.new(208,216,224)])
- end
- # Write the gender symbol
- if @pokemon.male?
- textpos.push([_INTL("♂"),178,62,0,Color.new(24,112,216),Color.new(136,168,208)])
- elsif @pokemon.female?
- textpos.push([_INTL("♀"),178,62,0,Color.new(248,56,32),Color.new(224,152,144)])
- end
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- # Draw the Pokémon's markings
- drawMarkings(overlay,84,292)
- # Draw page-specific information
- case page
- when 1; drawPageOne
- when 2; drawPageTwo
- when 3; drawPageThree
- when 4; drawPageFour
- when 5; drawPageFive
- end
- end
- def drawPageOne
- overlay = @sprites["overlay"].bitmap
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- dexNumBase = (@pokemon.shiny?) ? Color.new(248,56,32) : Color.new(64,64,64)
- dexNumShadow = (@pokemon.shiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
- # If a Shadow Pokémon, draw the heart gauge area and bar
- if @pokemon.shadowPokemon?
- shadowfract = @pokemon.heartgauge*1.0/PokeBattle_Pokemon::HEARTGAUGESIZE
- imagepos = [
- ["Graphics/Pictures/Summary/overlay_shadow",224,240],
- ["Graphics/Pictures/Summary/overlay_shadowbar",242,280,0,0,(shadowfract*248).floor,-1]
- ]
- pbDrawImagePositions(overlay,imagepos)
- end
- # Write various bits of text
- textpos = [
- [_INTL("Dex No."),238,80,0,base,shadow],
- [_INTL("Species"),238,112,0,base,shadow],
- [PBSpecies.getName(@pokemon.species),435,112,2,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Type"),238,144,0,base,shadow],
- [_INTL("OT"),238,176,0,base,shadow],
- [_INTL("ID No."),238,208,0,base,shadow],
- ]
- # Write the Regional/National Dex number
- dexnum = @pokemon.species
- dexnumshift = false
- if $PokemonGlobal.pokedexUnlocked[$PokemonGlobal.pokedexUnlocked.length-1]
- dexnumshift = true if DEXES_WITH_OFFSETS.include?(-1)
- else
- dexnum = 0
- for i in 0...$PokemonGlobal.pokedexUnlocked.length-1
- next if !$PokemonGlobal.pokedexUnlocked[i]
- num = pbGetRegionalNumber(i,@pokemon.species)
- next if num<=0
- dexnum = num
- dexnumshift = true if DEXES_WITH_OFFSETS.include?(i)
- break
- end
- end
- if dexnum<=0
- textpos.push(["???",435,80,2,dexNumBase,dexNumShadow])
- else
- dexnum -= 1 if dexnumshift
- textpos.push([sprintf("%03d",dexnum),435,80,2,dexNumBase,dexNumShadow])
- end
- # Write Original Trainer's name and ID number
- if @pokemon.ot==""
- textpos.push([_INTL("RENTAL"),435,176,2,Color.new(64,64,64),Color.new(176,176,176)])
- textpos.push(["?????",435,208,2,Color.new(64,64,64),Color.new(176,176,176)])
- else
- ownerbase = Color.new(64,64,64)
- ownershadow = Color.new(176,176,176)
- case @pokemon.otgender
- when 0; ownerbase = Color.new(24,112,216); ownershadow = Color.new(136,168,208)
- when 1; ownerbase = Color.new(248,56,32); ownershadow = Color.new(224,152,144)
- end
- textpos.push([@pokemon.ot,435,176,2,ownerbase,ownershadow])
- textpos.push([sprintf("%05d",@pokemon.publicID),435,208,2,Color.new(64,64,64),Color.new(176,176,176)])
- end
- # Write Exp text OR heart gauge message (if a Shadow Pokémon)
- if @pokemon.shadowPokemon?
- textpos.push([_INTL("Heart Gauge"),238,240,0,base,shadow])
- heartmessage = [_INTL("The door to its heart is open! Undo the final lock!"),
- _INTL("The door to its heart is almost fully open."),
- _INTL("The door to its heart is nearly open."),
- _INTL("The door to its heart is opening wider."),
- _INTL("The door to its heart is opening up."),
- _INTL("The door to its heart is tightly shut.")][@pokemon.heartStage]
- memo = sprintf("<c3=404040,B0B0B0>%s\n",heartmessage)
- drawFormattedTextEx(overlay,234,304,264,memo)
- else
- endexp = PBExperience.pbGetStartExperience(@pokemon.level+1,@pokemon.growthrate)
- textpos.push([_INTL("Exp. Points"),238,240,0,base,shadow])
- textpos.push([@pokemon.exp.to_s_formatted,488,272,1,Color.new(64,64,64),Color.new(176,176,176)])
- textpos.push([_INTL("To Next Lv."),238,304,0,base,shadow])
- textpos.push([(endexp-@pokemon.exp).to_s_formatted,488,336,1,Color.new(64,64,64),Color.new(176,176,176)])
- end
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- # Draw Pokémon type(s)
- type1rect = Rect.new(0,@pokemon.type1*28,64,28)
- type2rect = Rect.new(0,@pokemon.type2*28,64,28)
- if @pokemon.type1==@pokemon.type2
- overlay.blt(402,146,@typebitmap.bitmap,type1rect)
- else
- overlay.blt(370,146,@typebitmap.bitmap,type1rect)
- overlay.blt(436,146,@typebitmap.bitmap,type2rect)
- end
- # Draw Exp bar
- if @pokemon.level<PBExperience.maxLevel
- w = @pokemon.expFraction*128
- w = ((w/2).round)*2
- pbDrawImagePositions(overlay,[
- ["Graphics/Pictures/Summary/overlay_exp",362,372,0,0,w,6]
- ])
- end
- end
- def drawPageOneEgg
- @sprites["itemicon"].item = @pokemon.item
- overlay = @sprites["overlay"].bitmap
- overlay.clear
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- # Set background image
- @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_egg")
- imagepos = []
- # Show the Poké Ball containing the Pokémon
- ballimage = sprintf("Graphics/Pictures/Summary/icon_ball_%02d",@pokemon.ballused)
- imagepos.push([ballimage,14,60])
- # Draw all images
- pbDrawImagePositions(overlay,imagepos)
- # Write various bits of text
- textpos = [
- [_INTL("TRAINER MEMO"),26,16,0,base,shadow],
- [@pokemon.name,46,62,0,base,shadow],
- [_INTL("Item"),66,318,0,base,shadow]
- ]
- # Write the held item's name
- if @pokemon.hasItem?
- textpos.push([PBItems.getName(@pokemon.item),16,352,0,Color.new(64,64,64),Color.new(176,176,176)])
- else
- textpos.push([_INTL("None"),16,352,0,Color.new(192,200,208),Color.new(208,216,224)])
- end
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- memo = ""
- # Write date received
- if @pokemon.timeReceived
- date = @pokemon.timeReceived.day
- month = pbGetMonthName(@pokemon.timeReceived.mon)
- year = @pokemon.timeReceived.year
- memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
- end
- # Write map name egg was received on
- mapname = pbGetMapNameFromId(@pokemon.obtainMap)
- if (@pokemon.obtainText rescue false) && @pokemon.obtainText!=""
- mapname = @pokemon.obtainText
- end
- if mapname && mapname!=""
- memo += _INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg received from <c3=F83820,E09890>{1}<c3=404040,B0B0B0>.\n",mapname)
- else
- memo += _INTL("<c3=404040,B0B0B0>A mysterious Pokémon Egg.\n",mapname)
- end
- memo += "\n" # Empty line
- # Write Egg Watch blurb
- memo += _INTL("<c3=404040,B0B0B0>\"The Egg Watch\"\n")
- eggstate = _INTL("It looks like this Egg will take a long time to hatch.")
- eggstate = _INTL("What will hatch from this? It doesn't seem close to hatching.") if @pokemon.eggsteps<10200
- eggstate = _INTL("It appears to move occasionally. It may be close to hatching.") if @pokemon.eggsteps<2550
- eggstate = _INTL("Sounds can be heard coming from inside! It will hatch soon!") if @pokemon.eggsteps<1275
- memo += sprintf("<c3=404040,B0B0B0>%s\n",eggstate)
- # Draw all text
- drawFormattedTextEx(overlay,232,78,268,memo)
- # Draw the Pokémon's markings
- drawMarkings(overlay,84,292)
- end
- def drawPageTwo
- overlay = @sprites["overlay"].bitmap
- memo = ""
- # Write nature
- showNature = !@pokemon.shadowPokemon? || @pokemon.heartStage>3
- if showNature
- natureName = PBNatures.getName(@pokemon.nature)
- memo += _INTL("<c3=F83820,E09890>{1}<c3=404040,B0B0B0> nature.\n",natureName)
- end
- # Write date received
- if @pokemon.timeReceived
- date = @pokemon.timeReceived.day
- month = pbGetMonthName(@pokemon.timeReceived.mon)
- year = @pokemon.timeReceived.year
- memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
- end
- # Write map name Pokémon was received on
- mapname = pbGetMapNameFromId(@pokemon.obtainMap)
- if (@pokemon.obtainText rescue false) && @pokemon.obtainText!=""
- mapname = @pokemon.obtainText
- end
- mapname = _INTL("Faraway place") if !mapname || mapname==""
- memo += sprintf("<c3=F83820,E09890>%s\n",mapname)
- # Write how Pokémon was obtained
- mettext = [_INTL("Met at Lv. {1}.",@pokemon.obtainLevel),
- _INTL("Egg received."),
- _INTL("Traded at Lv. {1}.",@pokemon.obtainLevel),
- "",
- _INTL("Had a fateful encounter at Lv. {1}.",@pokemon.obtainLevel)
- ][@pokemon.obtainMode]
- memo += sprintf("<c3=404040,B0B0B0>%s\n",mettext) if mettext && mettext!=""
- # If Pokémon was hatched, write when and where it hatched
- if @pokemon.obtainMode==1
- if @pokemon.timeEggHatched
- date = @pokemon.timeEggHatched.day
- month = pbGetMonthName(@pokemon.timeEggHatched.mon)
- year = @pokemon.timeEggHatched.year
- memo += _INTL("<c3=404040,B0B0B0>{1} {2}, {3}\n",date,month,year)
- end
- mapname = pbGetMapNameFromId(@pokemon.hatchedMap)
- mapname = _INTL("Faraway place") if !mapname || mapname==""
- memo += sprintf("<c3=F83820,E09890>%s\n",mapname)
- memo += _INTL("<c3=404040,B0B0B0>Egg hatched.\n")
- else
- memo += "\n" # Empty line
- end
- # Write characteristic
- if showNature
- bestiv = 0
- tiebreaker = @pokemon.personalID%6
- for i in 0...6
- if @pokemon.iv[i]==@pokemon.iv[bestiv]
- bestiv = i if i>=tiebreaker && bestiv<tiebreaker
- elsif @pokemon.iv[i]>@pokemon.iv[bestiv]
- bestiv = i
- end
- end
- characteristic = [_INTL("Loves to eat."),
- _INTL("Often dozes off."),
- _INTL("Often scatters things."),
- _INTL("Scatters things often."),
- _INTL("Likes to relax."),
- _INTL("Proud of its power."),
- _INTL("Likes to thrash about."),
- _INTL("A little quick tempered."),
- _INTL("Likes to fight."),
- _INTL("Quick tempered."),
- _INTL("Sturdy body."),
- _INTL("Capable of taking hits."),
- _INTL("Highly persistent."),
- _INTL("Good endurance."),
- _INTL("Good perseverance."),
- _INTL("Likes to run."),
- _INTL("Alert to sounds."),
- _INTL("Impetuous and silly."),
- _INTL("Somewhat of a clown."),
- _INTL("Quick to flee."),
- _INTL("Highly curious."),
- _INTL("Mischievous."),
- _INTL("Thoroughly cunning."),
- _INTL("Often lost in thought."),
- _INTL("Very finicky."),
- _INTL("Strong willed."),
- _INTL("Somewhat vain."),
- _INTL("Strongly defiant."),
- _INTL("Hates to lose."),
- _INTL("Somewhat stubborn.")
- ][bestiv*5+@pokemon.iv[bestiv]%5]
- memo += sprintf("<c3=404040,B0B0B0>%s\n",characteristic)
- end
- # Write all text
- drawFormattedTextEx(overlay,232,78,268,memo)
- end
- def drawPageThree
- overlay = @sprites["overlay"].bitmap
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- # Determine which stats are boosted and lowered by the Pokémon's nature
- statshadows = []
- PBStats.eachStat { |s| statshadows[s] = shadow }
- if !@pokemon.shadowPokemon? || @pokemon.heartStage>3
- natup = PBNatures.getStatRaised(@pokemon.calcNature)
- natdn = PBNatures.getStatLowered(@pokemon.calcNature)
- statshadows[natup] = Color.new(136,96,72) if natup!=natdn
- statshadows[natdn] = Color.new(64,120,152) if natup!=natdn
- end
- # Write various bits of text
- textpos = [
- [_INTL("HP"),292,76,2,base,statshadows[PBStats::HP]],
- [sprintf("%d/%d",@pokemon.hp,@pokemon.totalhp),462,76,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Attack"),248,120,0,base,statshadows[PBStats::ATTACK]],
- [sprintf("%d",@pokemon.attack),456,120,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Defense"),248,152,0,base,statshadows[PBStats::DEFENSE]],
- [sprintf("%d",@pokemon.defense),456,152,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Sp. Atk"),248,184,0,base,statshadows[PBStats::SPATK]],
- [sprintf("%d",@pokemon.spatk),456,184,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Sp. Def"),248,216,0,base,statshadows[PBStats::SPDEF]],
- [sprintf("%d",@pokemon.spdef),456,216,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Speed"),248,248,0,base,statshadows[PBStats::SPEED]],
- [sprintf("%d",@pokemon.speed),456,248,1,Color.new(64,64,64),Color.new(176,176,176)],
- [_INTL("Ability"),224,284,0,base,shadow],
- [PBAbilities.getName(@pokemon.ability),362,284,0,Color.new(64,64,64),Color.new(176,176,176)],
- ]
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- # Draw ability description
- abilitydesc = pbGetMessage(MessageTypes::AbilityDescs,@pokemon.ability)
- drawTextEx(overlay,224,316,282,2,abilitydesc,Color.new(64,64,64),Color.new(176,176,176))
- # Draw HP bar
- if @pokemon.hp>0
- w = @pokemon.hp*96*1.0/@pokemon.totalhp
- w = 1 if w<1
- w = ((w/2).round)*2
- hpzone = 0
- hpzone = 1 if @pokemon.hp<=(@pokemon.totalhp/2).floor
- hpzone = 2 if @pokemon.hp<=(@pokemon.totalhp/4).floor
- imagepos = [
- ["Graphics/Pictures/Summary/overlay_hp",360,110,0,hpzone*6,w,6]
- ]
- pbDrawImagePositions(overlay,imagepos)
- end
- end
- def drawPageFour
- overlay = @sprites["overlay"].bitmap
- moveBase = Color.new(64,64,64)
- moveShadow = Color.new(176,176,176)
- ppBase = [moveBase, # More than 1/2 of total PP
- Color.new(248,192,0), # 1/2 of total PP or less
- Color.new(248,136,32), # 1/4 of total PP or less
- Color.new(248,72,72)] # Zero PP
- ppShadow = [moveShadow, # More than 1/2 of total PP
- Color.new(144,104,0), # 1/2 of total PP or less
- Color.new(144,72,24), # 1/4 of total PP or less
- Color.new(136,48,48)] # Zero PP
- @sprites["pokemon"].visible = true
- @sprites["pokeicon"].visible = false
- @sprites["itemicon"].visible = true
- textpos = []
- imagepos = []
- # Write move names, types and PP amounts for each known move
- yPos = 98
- for i in 0...@pokemon.moves.length
- move=@pokemon.moves[i]
- if move.id>0
- imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
- textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
- if move.totalpp>0
- textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
- ppfraction = 0
- if move.pp==0; ppfraction = 3
- elsif move.pp*4<=move.totalpp; ppfraction = 2
- elsif move.pp*2<=move.totalpp; ppfraction = 1
- end
- textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
- end
- else
- textpos.push(["-",316,yPos,0,moveBase,moveShadow])
- textpos.push(["--",442,yPos+32,1,moveBase,moveShadow])
- end
- yPos += 64
- end
- # Draw all text and images
- pbDrawTextPositions(overlay,textpos)
- pbDrawImagePositions(overlay,imagepos)
- end
- def drawSelectedMove(moveToLearn,moveid)
- # Draw all of page four, except selected move's details
- drawMoveSelection(moveToLearn)
- # Set various values
- overlay = @sprites["overlay"].bitmap
- base = Color.new(64,64,64)
- shadow = Color.new(176,176,176)
- @sprites["pokemon"].visible = false if @sprites["pokemon"]
- @sprites["pokeicon"].pokemon = @pokemon
- @sprites["pokeicon"].visible = true
- @sprites["itemicon"].visible = false if @sprites["itemicon"]
- # Get data for selected move
- moveData = pbGetMoveData(moveid)
- basedamage = moveData[MOVE_BASE_DAMAGE]
- category = moveData[MOVE_CATEGORY]
- accuracy = moveData[MOVE_ACCURACY]
- textpos = []
- # Write power and accuracy values for selected move
- if basedamage==0 # Status move
- textpos.push(["---",216,154,1,base,shadow])
- elsif basedamage==1 # Variable power move
- textpos.push(["???",216,154,1,base,shadow])
- else
- textpos.push([sprintf("%d",basedamage),216,154,1,base,shadow])
- end
- if accuracy==0
- textpos.push(["---",216,186,1,base,shadow])
- else
- textpos.push([sprintf("%d%",accuracy),216+overlay.text_size("%").width,186,1,base,shadow])
- end
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- # Draw selected move's damage category icon
- imagepos = [["Graphics/Pictures/category",166,124,0,category*28,64,28]]
- pbDrawImagePositions(overlay,imagepos)
- # Draw selected move's description
- drawTextEx(overlay,4,218,230,5,
- pbGetMessage(MessageTypes::MoveDescriptions,moveid),base,shadow)
- end
- def drawMoveSelection(moveToLearn)
- overlay = @sprites["overlay"].bitmap
- overlay.clear
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- moveBase = Color.new(64,64,64)
- moveShadow = Color.new(176,176,176)
- ppBase = [moveBase, # More than 1/2 of total PP
- Color.new(248,192,0), # 1/2 of total PP or less
- Color.new(248,136,32), # 1/4 of total PP or less
- Color.new(248,72,72)] # Zero PP
- ppShadow = [moveShadow, # More than 1/2 of total PP
- Color.new(144,104,0), # 1/2 of total PP or less
- Color.new(144,72,24), # 1/4 of total PP or less
- Color.new(136,48,48)] # Zero PP
- # Set background image
- if moveToLearn!=0
- @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_learnmove")
- else
- @sprites["background"].setBitmap("Graphics/Pictures/Summary/bg_movedetail")
- end
- # Write various bits of text
- textpos = [
- [_INTL("MOVES"),26,16,0,base,shadow],
- [_INTL("CATEGORY"),20,122,0,base,shadow],
- [_INTL("POWER"),20,154,0,base,shadow],
- [_INTL("ACCURACY"),20,186,0,base,shadow]
- ]
- imagepos = []
- # Write move names, types and PP amounts for each known move
- yPos = 98
- yPos -= 76 if moveToLearn!=0
- for i in 0...5
- move = @pokemon.moves[i]
- if i==4
- move = PBMove.new(moveToLearn) if moveToLearn!=0
- yPos += 20
- end
- if move && move.id>0
- imagepos.push(["Graphics/Pictures/types",248,yPos+2,0,move.type*28,64,28])
- textpos.push([PBMoves.getName(move.id),316,yPos,0,moveBase,moveShadow])
- if move.totalpp>0
- textpos.push([_INTL("PP"),342,yPos+32,0,moveBase,moveShadow])
- ppfraction = 0
- if move.pp==0; ppfraction = 3
- elsif move.pp*4<=move.totalpp; ppfraction = 2
- elsif move.pp*2<=move.totalpp; ppfraction = 1
- end
- textpos.push([sprintf("%d/%d",move.pp,move.totalpp),460,yPos+32,1,ppBase[ppfraction],ppShadow[ppfraction]])
- end
- else
- textpos.push(["-",316,yPos,0,moveBase,moveShadow])
- textpos.push(["--",442,yPos+32,1,moveBase,moveShadow])
- end
- yPos += 64
- end
- # Draw all text and images
- pbDrawTextPositions(overlay,textpos)
- pbDrawImagePositions(overlay,imagepos)
- # Draw Pokémon's type icon(s)
- type1rect = Rect.new(0,@pokemon.type1*28,64,28)
- type2rect = Rect.new(0,@pokemon.type2*28,64,28)
- if @pokemon.type1==@pokemon.type2
- overlay.blt(130,78,@typebitmap.bitmap,type1rect)
- else
- overlay.blt(96,78,@typebitmap.bitmap,type1rect)
- overlay.blt(166,78,@typebitmap.bitmap,type2rect)
- end
- end
- def drawPageFive
- overlay = @sprites["overlay"].bitmap
- @sprites["uparrow"].visible = false
- @sprites["downarrow"].visible = false
- # Write various bits of text
- textpos = [
- [_INTL("No. of Ribbons:"),234,332,0,Color.new(64,64,64),Color.new(176,176,176)],
- [@pokemon.ribbonCount.to_s,450,332,1,Color.new(64,64,64),Color.new(176,176,176)],
- ]
- # Draw all text
- pbDrawTextPositions(overlay,textpos)
- # Show all ribbons
- imagepos = []
- coord = 0
- if @pokemon.ribbons
- for i in @ribbonOffset*4...@ribbonOffset*4+12
- break if !@pokemon.ribbons[i]
- ribn = @pokemon.ribbons[i]-1
- imagepos.push(["Graphics/Pictures/ribbons",230+68*(coord%4),78+68*(coord/4).floor,
- 64*(ribn%8),64*(ribn/8).floor,64,64])
- coord += 1
- break if coord>=12
- end
- end
- # Draw all images
- pbDrawImagePositions(overlay,imagepos)
- end
- def drawSelectedRibbon(ribbonid)
- # Draw all of page five
- drawPage(5)
- # Set various values
- overlay = @sprites["overlay"].bitmap
- base = Color.new(64,64,64)
- shadow = Color.new(176,176,176)
- nameBase = Color.new(248,248,248)
- nameShadow = Color.new(104,104,104)
- # Get data for selected ribbon
- name = ribbonid ? PBRibbons.getName(ribbonid) : ""
- desc = ribbonid ? PBRibbons.getDescription(ribbonid) : ""
- # Draw the description box
- imagepos = [
- ["Graphics/Pictures/Summary/overlay_ribbon",8,280]
- ]
- pbDrawImagePositions(overlay,imagepos)
- # Draw name of selected ribbon
- textpos = [
- [name,18,286,0,nameBase,nameShadow]
- ]
- pbDrawTextPositions(overlay,textpos)
- # Draw selected ribbon's description
- drawTextEx(overlay,18,318,480,2,desc,base,shadow)
- end
- def pbMoveSelection
- @sprites["movesel"].visible = true
- @sprites["movesel"].index = 0
- selmove = 0
- oldselmove = 0
- switching = false
- drawSelectedMove(0,@pokemon.moves[selmove].id)
- loop do
- Graphics.update
- Input.update
- pbUpdate
- if @sprites["movepresel"].index==@sprites["movesel"].index
- @sprites["movepresel"].z = @sprites["movesel"].z+1
- else
- @sprites["movepresel"].z = @sprites["movesel"].z
- end
- if Input.trigger?(Input::B)
- (switching) ? pbPlayCancelSE : pbPlayCloseMenuSE
- break if !switching
- @sprites["movepresel"].visible = false
- switching = false
- elsif Input.trigger?(Input::C)
- pbPlayDecisionSE
- if selmove==4
- break if !switching
- @sprites["movepresel"].visible = false
- switching = false
- else
- if !@pokemon.shadowPokemon?
- if !switching
- @sprites["movepresel"].index = selmove
- @sprites["movepresel"].visible = true
- oldselmove = selmove
- switching = true
- else
- tmpmove = @pokemon.moves[oldselmove]
- @pokemon.moves[oldselmove] = @pokemon.moves[selmove]
- @pokemon.moves[selmove] = tmpmove
- @sprites["movepresel"].visible = false
- switching = false
- drawSelectedMove(0,@pokemon.moves[selmove].id)
- end
- end
- end
- elsif Input.trigger?(Input::UP)
- selmove -= 1
- if selmove<4 && selmove>=@pokemon.numMoves
- selmove = @pokemon.numMoves-1
- end
- selmove = 0 if selmove>=4
- selmove = @pokemon.numMoves-1 if selmove<0
- @sprites["movesel"].index = selmove
- newmove = @pokemon.moves[selmove].id
- pbPlayCursorSE
- drawSelectedMove(0,newmove)
- elsif Input.trigger?(Input::DOWN)
- selmove += 1
- selmove = 0 if selmove<4 && selmove>=@pokemon.numMoves
- selmove = 0 if selmove>=4
- selmove = 4 if selmove<0
- @sprites["movesel"].index = selmove
- newmove = @pokemon.moves[selmove].id
- pbPlayCursorSE
- drawSelectedMove(0,newmove)
- end
- end
- @sprites["movesel"].visible=false
- end
- def pbRibbonSelection
- @sprites["ribbonsel"].visible = true
- @sprites["ribbonsel"].index = 0
- selribbon = @ribbonOffset*4
- oldselribbon = selribbon
- switching = false
- numRibbons = @pokemon.ribbons.length
- numRows = [((numRibbons+3)/4).floor,3].max
- drawSelectedRibbon(@pokemon.ribbons[selribbon])
- loop do
- @sprites["uparrow"].visible = (@ribbonOffset>0)
- @sprites["downarrow"].visible = (@ribbonOffset<numRows-3)
- Graphics.update
- Input.update
- pbUpdate
- if @sprites["ribbonpresel"].index==@sprites["ribbonsel"].index
- @sprites["ribbonpresel"].z = @sprites["ribbonsel"].z+1
- else
- @sprites["ribbonpresel"].z = @sprites["ribbonsel"].z
- end
- hasMovedCursor = false
- if Input.trigger?(Input::B)
- (switching) ? pbPlayCancelSE : pbPlayCloseMenuSE
- break if !switching
- @sprites["ribbonpresel"].visible = false
- switching = false
- elsif Input.trigger?(Input::C)
- if !switching
- if @pokemon.ribbons[selribbon]
- pbPlayDecisionSE
- @sprites["ribbonpresel"].index = selribbon-@ribbonOffset*4
- oldselribbon = selribbon
- @sprites["ribbonpresel"].visible = true
- switching = true
- end
- else
- pbPlayDecisionSE
- tmpribbon = @pokemon.ribbons[oldselribbon]
- @pokemon.ribbons[oldselribbon] = @pokemon.ribbons[selribbon]
- @pokemon.ribbons[selribbon] = tmpribbon
- if @pokemon.ribbons[oldselribbon] || @pokemon.ribbons[selribbon]
- @pokemon.ribbons.compact!
- if selribbon>=numRibbons
- selribbon = numRibbons-1
- hasMovedCursor = true
- end
- end
- @sprites["ribbonpresel"].visible = false
- switching = false
- drawSelectedRibbon(@pokemon.ribbons[selribbon])
- end
- elsif Input.trigger?(Input::UP)
- selribbon -= 4
- selribbon += numRows*4 if selribbon<0
- hasMovedCursor = true
- pbPlayCursorSE
- elsif Input.trigger?(Input::DOWN)
- selribbon += 4
- selribbon -= numRows*4 if selribbon>=numRows*4
- hasMovedCursor = true
- pbPlayCursorSE
- elsif Input.trigger?(Input::LEFT)
- selribbon -= 1
- selribbon += 4 if selribbon%4==3
- hasMovedCursor = true
- pbPlayCursorSE
- elsif Input.trigger?(Input::RIGHT)
- selribbon += 1
- selribbon -= 4 if selribbon%4==0
- hasMovedCursor = true
- pbPlayCursorSE
- end
- if hasMovedCursor
- @ribbonOffset = (selribbon/4).floor if selribbon<@ribbonOffset*4
- @ribbonOffset = (selribbon/4).floor-2 if selribbon>=(@ribbonOffset+3)*4
- @ribbonOffset = 0 if @ribbonOffset<0
- @ribbonOffset = numRows-3 if @ribbonOffset>numRows-3
- @sprites["ribbonsel"].index = selribbon-@ribbonOffset*4
- @sprites["ribbonpresel"].index = oldselribbon-@ribbonOffset*4
- drawSelectedRibbon(@pokemon.ribbons[selribbon])
- end
- end
- @sprites["ribbonsel"].visible = false
- end
- def pbMarking(pokemon)
- @sprites["markingbg"].visible = true
- @sprites["markingoverlay"].visible = true
- @sprites["markingsel"].visible = true
- base = Color.new(248,248,248)
- shadow = Color.new(104,104,104)
- ret = pokemon.markings
- markings = pokemon.markings
- index = 0
- redraw = true
- markrect = Rect.new(0,0,16,16)
- loop do
- # Redraw the markings and text
- if redraw
- @sprites["markingoverlay"].bitmap.clear
- for i in 0...6
- markrect.x = i*16
- markrect.y = (markings&(1<<i)!=0) ? 16 : 0
- @sprites["markingoverlay"].bitmap.blt(300+58*(i%3),154+50*(i/3),@markingbitmap.bitmap,markrect)
- end
- textpos = [
- [_INTL("Mark {1}",pokemon.name),366,96,2,base,shadow],
- [_INTL("OK"),366,248,2,base,shadow],
- [_INTL("Cancel"),366,298,2,base,shadow]
- ]
- pbDrawTextPositions(@sprites["markingoverlay"].bitmap,textpos)
- redraw = false
- end
- # Reposition the cursor
- @sprites["markingsel"].x = 284+58*(index%3)
- @sprites["markingsel"].y = 144+50*(index/3)
- if index==6 # OK
- @sprites["markingsel"].x = 284
- @sprites["markingsel"].y = 244
- @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
- elsif index==7 # Cancel
- @sprites["markingsel"].x = 284
- @sprites["markingsel"].y = 294
- @sprites["markingsel"].src_rect.y = @sprites["markingsel"].bitmap.height/2
- else
- @sprites["markingsel"].src_rect.y = 0
- end
- Graphics.update
- Input.update
- pbUpdate
- if Input.trigger?(Input::B)
- pbPlayCloseMenuSE
- break
- elsif Input.trigger?(Input::C)
- pbPlayDecisionSE
- if index==6 # OK
- ret = markings
- break
- elsif index==7 # Cancel
- break
- else
- mask = (1<<index)
- if (markings&mask)==0
- markings |= mask
- else
- markings &= ~mask
- end
- redraw = true
- end
- elsif Input.trigger?(Input::UP)
- if index==7; index = 6
- elsif index==6; index = 4
- elsif index<3; index = 7
- else; index -= 3
- end
- pbPlayCursorSE
- elsif Input.trigger?(Input::DOWN)
- if index==7; index = 1
- elsif index==6; index = 7
- elsif index>=3; index = 6
- else; index += 3
- end
- pbPlayCursorSE
- elsif Input.trigger?(Input::LEFT)
- if index<6
- index -= 1
- index += 3 if index%3==2
- pbPlayCursorSE
- end
- elsif Input.trigger?(Input::RIGHT)
- if index<6
- index += 1
- index -= 3 if index%3==0
- pbPlayCursorSE
- end
- end
- end
- @sprites["markingbg"].visible = false
- @sprites["markingoverlay"].visible = false
- @sprites["markingsel"].visible = false
- if pokemon.markings!=ret
- pokemon.markings = ret
- return true
- end
- return false
- end
- def pbScene
- pbPlayCry(@pokemon)
- loop do
- Graphics.update
- Input.update
- pbUpdate
- dorefresh = false
- if Input.trigger?(Input::A)
- pbSEStop
- pbPlayCry(@pokemon)
- elsif Input.trigger?(Input::B)
- pbPlayCloseMenuSE
- break
- elsif Input.trigger?(Input::C)
- if @page==4
- pbPlayDecisionSE
- pbMoveSelection
- dorefresh = true
- elsif @page==5
- pbPlayDecisionSE
- pbRibbonSelection
- dorefresh = true
- end
- elsif Input.trigger?(Input::LEFT) && !@pokemon.egg?
- oldpage = @page
- @page -= 1
- @page = 1 if @page<1
- @page = 5 if @page>5
- if @page!=oldpage # Move to next page
- pbSEPlay("GUI summary change page")
- @ribbonOffset = 0
- dorefresh = true
- end
- elsif Input.trigger?(Input::RIGHT) && !@pokemon.egg?
- oldpage = @page
- @page += 1
- @page = 1 if @page<1
- @page = 5 if @page>5
- if @page!=oldpage # Move to next page
- pbSEPlay("GUI summary change page")
- @ribbonOffset = 0
- dorefresh = true
- end
- end
- if dorefresh
- drawPage(@page)
- end
- end
- return @partyindex
- end
- end
- class TestSummaryScreen
- def initialize(scene)
- @scene = scene
- end
- def pbStartTestScreen
- @scene.pbStartScene
- ret = @scene.pbScene
- @scene.pbEndScene
- return ret
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement