Advertisement
TechSkylander1518

PokeSelect v16

Jan 2nd, 2022
632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.17 KB | None | 0 0
  1. COLUMNS = 5
  2. ROWS = 4
  3.  
  4. LEFT_MARGIN = 88
  5. UP_MARGIN = 24
  6. #The X,Y of where you want the Pokemon sprite to be on the bg's sprite
  7. POKEMON_CENTER = [32,42]
  8.  
  9. BASE_LEVEL = 32
  10.  
  11. DEFAULT_CONTENTS = [
  12. :PIDGEOTTO,
  13. :PIKACHU,
  14. :NIDOKING,
  15. :NIDOQUEEN,
  16. :AERODACTYL,
  17. :CROBAT,
  18. :AMPHAROS,
  19. :SCIZOR,
  20. :HOUNDOOM,
  21. :PUPITAR,
  22. :SHIFTRY,
  23. :LAIRON,
  24. :MANECTRIC,
  25. :VIBRAVA,
  26. :METANG,
  27. :AMBIPOM,
  28. :LOPUNNY,
  29. :CROAGUNK,
  30. :WEAVILE,
  31. :MAMOSWINE
  32. ]
  33.  
  34.  
  35. #center_origins command from Marin's Scripting Utilities.
  36. class Sprite
  37.   def center_origins
  38.     return if !self.bitmap
  39.     self.ox = self.bitmap.width / 2
  40.     self.oy = self.bitmap.height / 2
  41.   end
  42. end
  43.  
  44. #Since SpriteWrapper isn't a subclass of Sprite, this section needs to stay in
  45. class SpriteWrapper
  46.   def center_origins
  47.     return if !self.bitmap
  48.     self.ox = self.bitmap.width / 2
  49.     self.oy = self.bitmap.height / 2
  50.   end
  51. end
  52.  
  53.  
  54.  
  55. class PokeSelectDisplay < SpriteWrapper
  56.   attr_accessor :selected
  57.   attr_accessor :icon
  58.   attr_accessor :overlay
  59.  
  60.   def initialize(pokemon,viewport=nil)
  61.     super(viewport)
  62.     self.selected = false
  63.     self.bitmap = Bitmap.new("Graphics/Pictures/drawer")
  64.     self.center_origins
  65.     self.ox = POKEMON_CENTER[0]
  66.     self.oy = POKEMON_CENTER[1]
  67.     newmon = PokeBattle_Pokemon.new(pokemon,BASE_LEVEL,$Trainer)
  68.     self.icon = PokemonIconSprite.new(newmon,viewport)
  69.     self.icon.ox = 32
  70.     self.icon.oy = 32
  71.     self.overlay = BitmapSprite.new(self.bitmap.width,self.bitmap.height,viewport)
  72.     self.overlay.ox = self.ox
  73.     self.overlay.oy = self.oy
  74.   end
  75.  
  76.   def x=(value)
  77.     super
  78.     self.icon.x = value
  79.     self.overlay.x = value
  80.   end
  81.  
  82.   def y=(value)
  83.     super
  84.     self.icon.y = value
  85.     self.overlay.y = value
  86.   end
  87.  
  88.   def update
  89.     super
  90.     self.icon.update
  91.   end
  92.  
  93.  
  94.   def z=(value)
  95.     super
  96.     self.icon.z = value
  97.     self.overlay.z = value
  98.   end
  99.  
  100.   def pokemon
  101.     return self.icon.pokemon
  102.   end
  103.  
  104.   def setPokemon(pokemon)
  105.     newmon = PokeBattle_Pokemon.new(pokemon,BASE_LEVEL,$Trainer)
  106.     self.icon = PokemonIconSprite.new(newmon,viewport)
  107.   end
  108.  
  109.   def dispose
  110.     super
  111.     self.icon.dispose if self.icon
  112.     self.overlay.dispose if self.overlay
  113.   end
  114.  
  115.   def select
  116.     self.selected = true
  117.     self.bitmap = Bitmap.new("Graphics/Pictures/drawer_select")
  118.   end
  119.  
  120.   def deselect
  121.     self.selected = false
  122.     self.bitmap = Bitmap.new("Graphics/Pictures/drawer")
  123.   end
  124.  
  125.  
  126.  
  127. end
  128.  
  129. def pbPokeSelect
  130.   scene = PokeSelect.new
  131. end
  132.  
  133. class PokeSelect
  134.  
  135.   def initialize
  136.     @pokemon=DEFAULT_CONTENTS
  137.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  138.     @sprites = {}
  139.     @selected = []
  140.     @SelNo=0
  141.     #@rowboost = 0
  142.     @rows = (@pokemon.length)/COLUMNS
  143.     @rows += 1 if (@pokemon.length)%COLUMNS > 0
  144.     @rows = ROWS if @rows < ROWS
  145.     @size = ROWS * COLUMNS
  146.     for i in 0...@size
  147.       entry = nil
  148.       entry = @pokemon[i] if @pokemon[i]
  149.       @sprites["pokemon#{i}"] = PokeSelectDisplay.new(entry,@viewport)
  150.       bg = @sprites["pokemon#{i}"]
  151.       bg.x = LEFT_MARGIN + bg.ox + (bg.bitmap.width*(i%COLUMNS))
  152.       bg.y = UP_MARGIN + bg.oy + (bg.bitmap.height*(i/COLUMNS))
  153.     end
  154.     @sprites["cursor"] = Sprite.new(@viewport)
  155.     @sprites["cursor"].bitmap = Bitmap.new("Graphics/Pictures/drawercursor")
  156.     @sprites["cursor"].center_origins
  157.     @sprites["messagebox"]=Window_AdvancedTextPokemon.new("Test")
  158.     @sprites["messagebox"].viewport=@viewport
  159.     @sprites["messagebox"].visible=false
  160.     #@sprites["messagebox"].letterbyletter=true
  161.     pbBottomLeftLines(@sprites["messagebox"],2)
  162.     $game_system.menu_disabled=true
  163.     main
  164.   end
  165.  
  166.    
  167.  
  168.   def main
  169.     loop do
  170.       sel = @sprites["pokemon#{@SelNo}"]
  171.       @sprites["cursor"].x=sel.x
  172.       @sprites["cursor"].y=sel.y
  173.       update
  174.         if Input.trigger?(Input::LEFT)
  175.            pbPlayDecisionSE
  176.             if @SelNo%COLUMNS == 0
  177.               @SelNo+=COLUMNS-1
  178.             else
  179.               @SelNo-=1
  180.             end
  181.         elsif Input.trigger?(Input::RIGHT)
  182.            pbPlayDecisionSE
  183.             if @SelNo%COLUMNS == COLUMNS-1
  184.               @SelNo-=COLUMNS-1
  185.             else
  186.               @SelNo+=1
  187.             end
  188.         elsif Input.trigger?(Input::DOWN)
  189.            pbPlayDecisionSE
  190.             if @SelNo/COLUMNS == ROWS-1
  191.                 @SelNo-= (COLUMNS * (ROWS-1))
  192.             else
  193.               @SelNo+=COLUMNS
  194.             end
  195.         elsif Input.trigger?(Input::UP)
  196.            pbPlayDecisionSE
  197.             if @SelNo/COLUMNS == 0
  198.                 @SelNo+=(COLUMNS * (ROWS-1))
  199.             else
  200.               @SelNo-=COLUMNS
  201.             end
  202.       elsif Input.trigger?(Input::C)
  203.           if !sel.selected
  204.             if pbDisplayConfirm(_INTL("Would you like to take {1}?",sel.pokemon.name))
  205.               @selected.push(sel.pokemon)
  206.               sel.select
  207.             end
  208.           else
  209.             if pbDisplayConfirm(_INTL("Would you like to put back {1}?",sel.pokemon.name))
  210.               sel.deselect
  211.               for i in 0...@selected.length
  212.                 @selected.delete_at(i) if @selected[i] == sel.pokemon
  213.               end
  214.             end
  215.           end
  216.       end
  217.       if @selected.length == 5
  218.         if pbDisplayConfirm(_INTL("Are you satisfied with these choices?"))
  219.           break
  220.         else
  221.           sel.deselect
  222.           @selected.pop
  223.         end
  224.       end
  225.     end
  226.     for i in 0...@selected.length
  227.       pbAddPokemonSilent(@selected[i])
  228.     end
  229.     dispose
  230.     pbWait(5)
  231.     $game_system.menu_disabled=false
  232.   end
  233.  
  234.   def dispose
  235.     pbDisposeSpriteHash(@sprites)
  236.     @viewport.dispose
  237.   end
  238.  
  239.   def update
  240.     Graphics.update
  241.     Input.update
  242.     pbUpdateSpriteHash(@sprites)
  243.   end
  244.  
  245.  
  246.  
  247.  
  248.   def pbDisplay(text)
  249.     @sprites["messagebox"].text=text
  250.     @sprites["messagebox"].visible=true
  251.     pbPlayDecisionSE()
  252.     loop do
  253.       Graphics.update
  254.       Input.update
  255.       self.update
  256.       if @sprites["messagebox"].busy? && Input.trigger?(Input::C)
  257.         pbPlayDecisionSE() if @sprites["messagebox"].pausing?
  258.         @sprites["messagebox"].resume
  259.       end
  260.       if !@sprites["messagebox"].busy? &&
  261.          (Input.trigger?(Input::C) || Input.trigger?(Input::B))
  262.         break
  263.       end
  264.     end
  265.     @sprites["messagebox"].visible=false
  266.   end
  267.  
  268.  
  269.   def pbDisplayConfirm(text)
  270.     ret=-1
  271.     @sprites["messagebox"].text=text
  272.     @sprites["messagebox"].visible=true
  273.     using(cmdwindow=Window_CommandPokemon.new([_INTL("Yes"),_INTL("No")])){
  274.        cmdwindow.z=@viewport.z+1
  275.        cmdwindow.visible=false
  276.        pbBottomRight(cmdwindow)
  277.        cmdwindow.y-=@sprites["messagebox"].height
  278.        loop do
  279.          Graphics.update
  280.          Input.update
  281.          cmdwindow.visible=true if !@sprites["messagebox"].busy?
  282.          cmdwindow.update
  283.          self.update
  284.          if Input.trigger?(Input::B) && !@sprites["messagebox"].busy?
  285.            ret=false
  286.            break
  287.          end
  288.          if Input.trigger?(Input::C) && @sprites["messagebox"].resume && !@sprites["messagebox"].busy?
  289.            ret=(cmdwindow.index==0)
  290.            break
  291.          end
  292.        end
  293.     }
  294.     @sprites["messagebox"].visible=false
  295.     return ret
  296.   end
  297.  
  298.  
  299. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement