#=============================================================================== # #=============================================================================== class PokemonTrainerCard_Scene def pbUpdate pbUpdateSpriteHash(@sprites) end TOTAL_PAGES = 2 def pbStartScene @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height) @viewport.z = 99999 @sprites = {} setCardBackground() is_postgame = $game_switches[SWITCH_BEAT_THE_LEAGUE] overlay_version = is_postgame ? "overlay_postgame" : "overlay" addBackgroundPlane(@sprites, "highlights", "Trainer Card/#{overlay_version}", @viewport) @sprites["overlay"] = BitmapSprite.new(Graphics.width, Graphics.height, @viewport) pbSetSystemFont(@sprites["overlay"].bitmap) @sprites["trainer"] = IconSprite.new(336, 112, @viewport) @sprites["trainer"].setBitmapDirectly(generate_front_trainer_sprite_bitmap()) @sprites["trainer"].x -= (@sprites["trainer"].bitmap.width - 128) / 2 @sprites["trainer"].y -= (@sprites["trainer"].bitmap.height - 128) @sprites["trainer"].z = 2 @page = 0 pbDrawTrainerCardFront pbFadeInAndShow(@sprites) { pbUpdate } end def setCardBackground() background_img = $Trainer.card_background ? $Trainer.card_background : "BLUE" background_img_path = "Graphics/Pictures/Trainer Card/backgrounds/#{background_img}" cardexists = pbResolveBitmap(sprintf(background_img_path)) @sprites["card"] = IconSprite.new(0, 0, @viewport) if cardexists @sprites["card"].setBitmap(background_img_path) if cardexists else @sprites["card"].setBitmap("Graphics/Pictures/Trainer Card/card") end @sprites["card"].z = -100 end def trainerCardActions cmd_swapBackground = _INTL("Swap background") cmd_copyTrainerID = _INTL("Copy Trainer ID") cmd_cancel = _INTL("Cancel") commands = [cmd_swapBackground, cmd_copyTrainerID, cmd_cancel] choice = optionsMenu(commands) case commands[choice] when cmd_swapBackground promptSwapBackground when cmd_copyTrainerID Input.clipboard = $Trainer.id.to_s pbMessage(_INTL("Your Trainer ID was copied to the clipboard!")) end end def promptSwapBackground() $Trainer.unlocked_card_backgrounds = [] if !$Trainer.unlocked_card_backgrounds if $Trainer.unlocked_card_backgrounds.length >= 1 if pbConfirmMessage(_INTL("Swap your current Trainer Card background")) chosen = pbListScreen(_INTL("Trainer card"), TrainerCardBackgroundLister.new($Trainer.unlocked_card_backgrounds)) echoln chosen if chosen $Trainer.card_background = chosen pbSEPlay("GUI trainer card open") setCardBackground() end end else pbMessage(_INTL("You can purchase new Trainer Card backgrounds at Poké Marts!")) end end def pbDrawTrainerCardFront overlay = @sprites["overlay"].bitmap overlay.clear baseColor = Color.new(72, 72, 72) shadowColor = Color.new(160, 160, 160) totalsec = Graphics.frame_count / Graphics.frame_rate hour = totalsec / 60 / 60 min = totalsec / 60 % 60 time = (hour > 0) ? _INTL("{1}h {2}m", hour, min) : _INTL("{1}m", min) $PokemonGlobal.startTime = pbGetTimeNow if !$PokemonGlobal.startTime starttime = "#{pbGetAbbrevMonthName($PokemonGlobal.startTime.mon)} #{$PokemonGlobal.startTime.day}, #{$PokemonGlobal.startTime.year}" textPositions = [] textPositions << [_INTL("Name"), 34, 58, 0, baseColor, shadowColor] textPositions << [$Trainer.name, 302, 58, 1, baseColor, shadowColor] textPositions << [_INTL("Trainer ID"), 352, 28, 0, baseColor, shadowColor] # [_INTL("ID"), 332, 58, 0, baseColor, shadowColor], textPositions << [sprintf("%05d", $Trainer.id), 462, 58, 1, baseColor, shadowColor] # [sprintf("%05d", $Trainer.id), 468, 58, 1, baseColor, shadowColor], if @page == 0 textPositions << [_INTL("Money"), 34, 106, 0, baseColor, shadowColor] textPositions << [_INTL("${1}", $Trainer.money.to_s_formatted), 302, 106, 1, baseColor, shadowColor] textPositions << [_INTL("Pokédex"), 34, 154, 0, baseColor, shadowColor] textPositions << [sprintf("%d/%d", $Trainer.pokedex.owned_count, $Trainer.pokedex.seen_count), 302, 154, 1, baseColor, shadowColor] elsif @page == 1 $Trainer.cosmetics_money = 0 unless $Trainer.cosmetics_money textPositions << [_INTL("Glimmer Coins"), 34, 106, 0, baseColor, shadowColor] textPositions << [_INTL("{1}", $Trainer.cosmetics_money.to_s_formatted), 302, 106, 1, baseColor, shadowColor] textPositions << [_INTL("Clothes / Hats"), 34, 154, 0, baseColor, shadowColor] textPositions << [sprintf("%d/%d", $Trainer.unlocked_clothes.length, $Trainer.unlocked_hats.length), 302, 154, 1, baseColor, shadowColor] end textPositions << [_INTL("Time"), 34, 202, 0, baseColor, shadowColor] textPositions << [time, 302, 202, 1, baseColor, shadowColor] textPositions << [_INTL("Started"), 34, 250, 0, baseColor, shadowColor] textPositions << [starttime, 302, 250, 1, baseColor, shadowColor] pbDrawTextPositions(overlay, textPositions) x = 72 imagePositions = [] postgame = $game_switches[SWITCH_BEAT_THE_LEAGUE] numberOfBadgesDisplayed = postgame ? 16 : 8 for i in 0...numberOfBadgesDisplayed badgeRow = i < 8 ? 0 : 1 if $Trainer.badges[i] if i == 8 x = 72 end badge_graphic_x = badgeRow == 0 ? i * 32 : (i - 8) * 32 badge_graphic_y = badgeRow * 32 y = getBadgeDisplayHeight(postgame, i) imagePositions.push(["Graphics/Pictures/Trainer Card/icon_badges", x, y, badge_graphic_x, badge_graphic_y, 32, 32]) end x += 48 end pbDrawImagePositions(overlay, imagePositions) end def getBadgeDisplayHeight(postgame, i) if postgame if i < 8 y = 310 else y = 344 end else y = 312 end return y end def pbTrainerCard pbSEPlay("GUI trainer card open") loop do Graphics.update Input.update pbUpdate if Input.trigger?(Input::LEFT) || Input.trigger?(Input::RIGHT) && Settings::HOENN pbSEPlay("GUI party switch") @page = (@page + 1) % TOTAL_PAGES pbDrawTrainerCardFront end if Input.trigger?(Input::USE) trainerCardActions() pbDrawTrainerCardFront end if Input.trigger?(Input::BACK) pbPlayCloseMenuSE break end end end def pbEndScene pbFadeOutAndHide(@sprites) { pbUpdate } pbDisposeSpriteHash(@sprites) @viewport.dispose end end #=============================================================================== # #=============================================================================== class PokemonTrainerCardScreen def initialize(scene) @scene = scene end def pbStartScreen @scene.pbStartScene @scene.pbTrainerCard @scene.pbEndScene end end