M3rein

Save Selection

Jul 20th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 20.67 KB | None | 0 0
  1. # - sorry it took so god damn long :(
  2.  
  3. # The background image of the save selection
  4. BackgroundImage = "Graphics/Titles/credits4"
  5.  
  6. class Game_Temp
  7.   attr_accessor :save_slot
  8. end
  9.  
  10. class SelectableSprite < Sprite
  11.   def initialize(bitmap, viewport = nil)
  12.     super(viewport)
  13.     @selected = false
  14.     self.bmp(bitmap)
  15.     self.src_rect.width = self.bmp.width / 2
  16.   end
  17.  
  18.   def selected?
  19.     return @selected
  20.   end
  21.  
  22.   def select(*interval)
  23.     @selected = true
  24.     if interval.size > 0
  25.       @time = interval.max + 1
  26.       @interval = interval
  27.       @i = 0
  28.     else
  29.       self.src_rect.x = self.src_rect.width
  30.     end
  31.   end
  32.  
  33.   def deselect
  34.     @selected = false
  35.     self.src_rect.x = 0
  36.   end
  37.  
  38.   def update
  39.     if @time
  40.       if @interval.include?(@i)
  41.         self.select
  42.       else
  43.         self.deselect
  44.       end
  45.       @i += 1
  46.       if @i > @time
  47.         @time = nil
  48.         @interval = nil
  49.         @i = nil
  50.       end
  51.     end
  52.   end
  53. end
  54.  
  55. class SaveSelection
  56.   def main # Actually the initializer, but it tricks $scene into starting this
  57.     $PokemonTemp   = PokemonTemp.new
  58.     $game_temp     = Game_Temp.new
  59.     $game_system   = Game_System.new
  60.     $PokemonSystem = PokemonSystem.new if !$PokemonSystem
  61.     @viewport = Viewport.new(0,0,Graphics.width,Graphics.height)
  62.     @viewport.z = 99999
  63.     @path = "Graphics/Pictures/Save Selection/"
  64.     @sprites = SpriteHash.new
  65.     @sprites["bg"] = Sprite.new(@viewport)
  66.     @sprites["bg"].bmp(BackgroundImage)
  67.     @sprites["left"] = SelectableSprite.new(@path + "left_arrow", @viewport)
  68.     @sprites["left"].y = 66
  69.     @sprites["right"] = SelectableSprite.new(@path + "right_arrow", @viewport)
  70.     @sprites["right"].xyz = 478, 66
  71.     @sprites["delete"] = SpriteHash.new
  72.     @sprites["delete"]["panel"] = SelectableSprite.new(@path + "delete_button", @viewport)
  73.     @sprites["delete"]["panel"].xyz = 160, 288
  74.     @sprites["delete"]["text"] = TextSprite.new(@viewport, nil, 192, 32)
  75.     @sprites["delete"]["text"].xyz = @sprites["delete"]["panel"].xyz
  76.     pbSetSmallFont(@sprites["delete"]["text"].bmp)
  77.     @sprites["delete"]["text"].draw([
  78.         ["Delete Game", 96, 2, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)]
  79.     ])
  80.     @sprites["down"] = SelectableSprite.new(@path + "down_arrow", @viewport)
  81.     @sprites["down"].xyz = 194, 350
  82.     @sprites["up"] = SelectableSprite.new(@path + "up_arrow", @viewport)
  83.     @sprites["up"].xyz = 194, 384
  84.     @sprites["buttons"] = SpriteHash.new
  85.     @sel = 0
  86.     @save_index = 1
  87.     load_save(@save_index, true)
  88.     Graphics.transition
  89.     mainloop
  90.   end
  91.  
  92.   def load_save(index, initial = false)
  93.     filename = RTP.getSaveFileName("Game_#{index}.rxdata")
  94.     oldnewgame = @new_game
  95.     if safeExists?(filename)
  96.       $Trainer, Graphics.frame_count,
  97.           $game_system, $PokemonSystem, @mapid,
  98.           $PokemonGlobal = try_load(filename)
  99.       @new_game = false
  100.     else
  101.       @new_game = true
  102.     end
  103.     if !initial
  104.       pbSEPlay("load_eject")
  105.       for i in 0...4
  106.         Graphics.update
  107.         Input.update
  108.         update
  109.         @sprites["cartridge"].y += 3
  110.       end
  111.       4.times { Graphics.update; Input.update; update }
  112.       for i in 0...4
  113.         Graphics.update
  114.         Input.update
  115.         update
  116.         @sprites["cartridge"].y -= 3
  117.       end
  118.       for i in 0...21
  119.         Graphics.update
  120.         Input.update
  121.         update
  122.         sy = -2 * i * 1.1 ** i
  123.         @sprites["cartridge"].y = sy
  124.         @sprites["delete"].opacity -= 16 if @new_game && !oldnewgame
  125.       end
  126.       @sprites["cartridge"].y = 0
  127.     end
  128.     @sprites["cartridge"].dispose if @sprites["cartridge"]
  129.     @sprites["cartridge"] = nil
  130.     for i in 0...4
  131.       if @sprites["buttons"][i]
  132.         @sprites["buttons"][i].dispose
  133.       end
  134.     end
  135.     @sprites["buttons"]["text"].dispose if @sprites["buttons"]["text"]
  136.     if @new_game
  137.       # Credits
  138.       @sprites["buttons"][0] = SelectableSprite.new(@path + "panel_top", @viewport)
  139.       @sprites["buttons"][0].xyz = 48, 112 + 384
  140.       # Quit Game
  141.       @sprites["buttons"][1] = SelectableSprite.new(@path + "panel_bottom", @viewport)
  142.       @sprites["buttons"][1].xyz = 48, 192 + 384
  143.       @sprites["buttons"]["text"] = TextSprite.new(@viewport, [
  144.           ["CREDITS", 256, 112+32, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  145.           ["QUIT GAME", 256, 192+32, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  146.       ])
  147.       @sprites["buttons"]["text"].xyz = 0, 384, 1
  148.      
  149.       @sprites["cartridge"] = SpriteHash.new
  150.       @sprites["cartridge"]["panel"] = SelectableSprite.new(@path + "new_button", @viewport)
  151.       @sprites["cartridge"]["panel"].xyz = 64, 40
  152.       @sprites["cartridge"]["panel"].select
  153.       @sprites["cartridge"]["text"] = TextSprite.new(@viewport, [
  154.           "Slot #{index}: New Game", 192, 82, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)
  155.       ], 384, 192)
  156.       @sprites["cartridge"]["text"].xyz = @sprites["cartridge"]["panel"].xyz
  157.     else
  158.       # Options
  159.       @sprites["buttons"][0] = SelectableSprite.new(@path + "panel_top", @viewport)
  160.       @sprites["buttons"][0].xyz = 48, 48 + 384
  161.       # Mystery Gift
  162.       @sprites["buttons"][1] = SelectableSprite.new(@path + "panel", @viewport)
  163.       @sprites["buttons"][1].xyz = 48, 128 + 384
  164.       # Credits
  165.       @sprites["buttons"][2] = SelectableSprite.new(@path + "panel", @viewport)
  166.       @sprites["buttons"][2].xyz = 48, 208 + 384
  167.       # Quit Game
  168.       @sprites["buttons"][3] = SelectableSprite.new(@path + "panel_bottom", @viewport)
  169.       @sprites["buttons"][3].xyz = 48, 288 + 384
  170.       @sprites["buttons"]["text"] = TextSprite.new(@viewport, [
  171.           ["OPTIONS", 256, 80, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  172.           ["MYSTERY GIFT", 256, 160, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  173.           ["CREDITS", 256, 240, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  174.           ["EXIT GAME", 256, 320, 2, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  175.       ])
  176.       @sprites["buttons"]["text"].xyz = 0, 384, 1
  177.      
  178.       @sprites["cartridge"] = SpriteHash.new
  179.       @sprites["cartridge"]["panel"] = SelectableSprite.new(@path + "cartridge", @viewport)
  180.       @sprites["cartridge"]["panel"].xyz = 48, 16
  181.       @sprites["cartridge"]["panel"].select
  182.       @sprites["cartridge"]["text"] = TextSprite.new(@viewport,
  183.           ["Slot #{index}", 44, 42, 0, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  184.       414, 240)
  185.       @sprites["cartridge"]["text"].xyz = @sprites["cartridge"]["panel"].xyz
  186.       @sprites["cartridge"]["small"] = TextSprite.new(@viewport, nil, 414, 240)
  187.       @sprites["cartridge"]["small"].xyz = @sprites["cartridge"]["panel"].xyz
  188.       pbSetSmallFont(@sprites["cartridge"]["small"].bmp)
  189.       totalsec = Graphics.frame_count / Graphics.frame_rate
  190.       hour = totalsec / 60 / 60
  191.       min = totalsec / 60 % 60
  192.       sec = totalsec % 60
  193.       if hour > 999
  194.         hour = 999
  195.         min = 59
  196.         sec = 59
  197.       end
  198.       hour = hour.to_digits(2)
  199.       min = min.to_digits(2)
  200.       sec = sec.to_digits(2)
  201.       @sprites["cartridge"]["small"].draw([
  202.           ["Badges", 54, 146, 0, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  203.           [$Trainer.numbadges.to_s, 192, 146, 1, Color.new(212, 204, 87), Color.new(32, 32, 32)],
  204.           ["Money", 54, 178, 0, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  205.           [get_money_text($Trainer.money), 192, 178, 1, Color.new(212, 204, 87), Color.new(32, 32, 32)],
  206.           ["Pokédex", 218, 146, 0, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  207.           [$Trainer.pokedexOwned.to_s + "/" + $Trainer.pokedexSeen.to_s, 366, 146, 1, Color.new(212, 204, 87), Color.new(32, 32, 32)],
  208.           ["Time", 218, 178, 0, Color.new(255, 255, 255), Color.new(32, 32, 32)],
  209.           ["#{hour}:#{min}:#{sec}", 366, 178, 1, Color.new(212, 204, 87), Color.new(32, 32, 32)],
  210.       ])
  211.       @sprites["cartridge"]["party"] = SpriteHash.new
  212.       for i in 0...$Trainer.party.size
  213.         p = $Trainer.party[i]
  214.         s = PokemonSpeciesIconSprite.new(p.species, @viewport)
  215.         s.xyz = 64 + 64 * i, 90
  216.         @sprites["cartridge"]["party"][i] = s
  217.       end
  218.       meta = pbGetMetadata(0, MetadataPlayerA + $Trainer.metaID)
  219.       if meta
  220.         filename = pbGetPlayerCharset(meta, 1, $Trainer)
  221.         @sprites["cartridge"]["char"] = TrainerWalkingCharSprite.new(filename, @viewport)
  222.         cw = @sprites["cartridge"]["char"].bitmap.width
  223.         ch = @sprites["cartridge"]["char"].bitmap.height
  224.         @sprites["cartridge"]["char"].xyz = 238, 10
  225.         @sprites["cartridge"]["char"].src_rect = Rect.new(0, 0, cw / 4, ch / 4)
  226.       end
  227.     end
  228.     if !initial
  229.       @sprites["cartridge"].y = sy
  230.       12.times { Graphics.update; Input.update; update }
  231.       for i in 0...21
  232.         Graphics.update
  233.         Input.update
  234.         update
  235.         @sprites["cartridge"].y = sy + 2 * i * 1.1 ** i
  236.         @sprites["delete"].opacity += 16 if !@new_game
  237.       end
  238.       pbSEPlay("load_click")
  239.       @sprites["cartridge"].y = 0
  240.       for i in 0...4
  241.         Graphics.update
  242.         Input.update
  243.         update
  244.         @sprites["cartridge"].y += 3
  245.       end
  246.       4.times { Graphics.update; Input.update; update }
  247.       for i in 0...4
  248.         Graphics.update
  249.         Input.update
  250.         update
  251.         @sprites["cartridge"].y -= 3
  252.       end
  253.     end
  254.   end
  255.  
  256.   def change_sel(sel)
  257.     mult1 = mult2 = sel == 2 ? 1 : -1
  258.     if sel == 2
  259.       @sprites["down"].select(1, 2, 3, 9, 10, 11)
  260.       @sprites["buttons"][0].select
  261.     else
  262.       @sprites["up"].select(1, 2, 3, 9, 10, 11)
  263.       if !@new_game
  264.         @sprites["delete"]["panel"].select
  265.       end
  266.     end
  267.     pbSEPlay("load_cursor")
  268.     16.times { Graphics.update; Input.update; update }
  269.     frames = 24
  270.     for i in 0...frames
  271.       Graphics.update
  272.       Input.update
  273.       update
  274.       @sprites["cartridge"].y -= mult1 * 384.0 / frames
  275.       @sprites["left"].y -= mult1 * 384.0 / frames
  276.       @sprites["right"].y -= mult1 * 384.0 / frames
  277.       @sprites["delete"].y -= mult1 * 384.0 / frames
  278.       @sprites["down"].y -= mult1 * 384.0 / frames
  279.       @sprites["up"].y -= mult2 * 384.0 / frames
  280.       @sprites["buttons"].y -= mult2 * 384.0 / frames
  281.     end
  282.     if sel == 2
  283.       @sprites["delete"]["panel"].deselect
  284.     else
  285.       @sprites["buttons"][0].deselect
  286.     end
  287.     if @new_game && sel == 1
  288.       @sel = 0
  289.     else
  290.       @sel = sel
  291.     end
  292.   end
  293.  
  294.   def get_money_text(n)
  295.     return "$0" if n <= 0
  296.     return "$" + n.to_s if n >= 0 && n < 1000
  297.     level = 0
  298.     int = n
  299.     while int > 999
  300.       int = (int / 1000.0).floor
  301.       level += 1
  302.     end
  303.     display = (10 * n / (1000.0 ** level)).floor / 10.0
  304.     suffix = ["k", "M", "B", "T", "P", "E", "Z", "Y"]
  305.     return "$999.9#{suffix[suffix.size - 1]}" if level > suffix.size
  306.     return "$" + display.to_s + suffix[level - 1]
  307.   end
  308.  
  309.   def try_load(filename)
  310.     trainer = nil
  311.     framecount = nil
  312.     game_system = nil
  313.     pokemon_system = nil
  314.     mapid = nil
  315.     pokemonglobal = nil
  316.     File.open(filename) do |f|
  317.       trainer = Marshal.load(f)
  318.       framecount = Marshal.load(f)
  319.       game_system = Marshal.load(f)
  320.       pokemon_system = Marshal.load(f)
  321.       mapid = Marshal.load(f)
  322.       Marshal.load(f)
  323.       Marshal.load(f)
  324.       Marshal.load(f)
  325.       Marshal.load(f)
  326.       Marshal.load(f)
  327.       Marshal.load(f)
  328.       pokemonglobal = Marshal.load(f)
  329.     end
  330.     raise "Corrupted file" if !trainer.is_a?(PokeBattle_Trainer)
  331.     raise "Corrupted file" if !framecount.is_a?(Numeric)
  332.     raise "Corrupted file" if !game_system.is_a?(Game_System)
  333.     raise "Corrupted file" if !pokemon_system.is_a?(PokemonSystem)
  334.     raise "Corrupted file" if !mapid.is_a?(Numeric)
  335.     raise "Corrupted file" if !pokemonglobal.is_a?(PokemonGlobalMetadata)
  336.     return [trainer, framecount, game_system, pokemon_system, mapid, pokemonglobal]
  337.   end
  338.  
  339.   def mainloop
  340.     loop do
  341.       Graphics.update
  342.       Input.update
  343.       update
  344.       if @sel == 0 # Save File
  345.         if Input.trigger?(Input::RIGHT)
  346.           @save_index += 1
  347.           @save_index = 1 if @save_index > 3
  348.           @sprites["right"].select(1, 2, 3, 9, 10, 11)
  349.           load_save(@save_index)
  350.         end
  351.         if Input.trigger?(Input::LEFT)
  352.           @save_index -= 1
  353.           @save_index = 3 if @save_index < 1
  354.           @sprites["left"].select(1, 2, 3, 9, 10, 11)
  355.           load_save(@save_index)
  356.         end
  357.       end
  358.       if Input.trigger?(Input::DOWN)
  359.         if @sel == 0 && !@new_game
  360.           pbSEPlay("load_cursor")
  361.           @sel = 1
  362.           @sprites["cartridge"]["panel"].deselect
  363.           @sprites["delete"]["panel"].select
  364.         elsif @sel == 1 || @sel == 0 && @new_game # Delete Button / front card if empty
  365.           change_sel(2)
  366.         elsif !@new_game && @sel < 5 || @new_game && @sel < 3
  367.           pbSEPlay("load_cursor")
  368.           @sprites["buttons"][@sel - 2].deselect
  369.           @sel += 1
  370.           @sprites["buttons"][@sel - 2].select
  371.         end
  372.       end
  373.       if Input.trigger?(Input::UP)
  374.         if @sel == 1
  375.           pbSEPlay("load_cursor")
  376.           @sel = 0
  377.           @sprites["cartridge"]["panel"].select
  378.           @sprites["delete"]["panel"].deselect
  379.         elsif @sel == 2
  380.           change_sel(1)
  381.         elsif @sel > 2
  382.           pbSEPlay("load_cursor")
  383.           @sprites["buttons"][@sel - 2].deselect
  384.           @sel -= 1
  385.           @sprites["buttons"][@sel - 2].select
  386.         end
  387.       end
  388.       if Input.trigger?(Input::C)
  389.         if @sel == 0
  390.           pbSEPlay("load_go")
  391.         else
  392.           pbSEPlay("load_cursor")
  393.         end
  394.         confirm_choice
  395.       end
  396.       break if @disposed
  397.     end
  398.   end
  399.  
  400.   def confirm_choice
  401.     case @sel
  402.     when 0 # Save File
  403.       filename = RTP.getSaveFileName("Game_#{@save_index}.rxdata")
  404.       if safeExists?(filename)
  405.         continue_game
  406.       else
  407.         new_game
  408.       end
  409.     when 1 # Delete Save
  410.       confirm_delete
  411.     when 2 # Options
  412.       @new_game ? credits : options
  413.     when 3 # Mystery Gift
  414.       @new_game ? quit_game : mystery_gift
  415.     when 4 # Credits
  416.       credits
  417.     when 5 # Quit Game
  418.       quit_game
  419.     end
  420.   end
  421.  
  422.   def continue_game
  423.     metadata = nil
  424.     $game_temp.save_slot = @save_index
  425.     filename = RTP.getSaveFileName("Game_#{@save_index}.rxdata")
  426.     File.open(filename) do |f|
  427.       Marshal.load(f) # Trainer already loaded
  428.       Graphics.frame_count = Marshal.load(f)
  429.       $game_system         = Marshal.load(f)
  430.       Marshal.load(f) # PokemonSystem already loaded
  431.       Marshal.load(f) # Current map id no longer needed
  432.       $game_switches       = Marshal.load(f)
  433.       $game_variables      = Marshal.load(f)
  434.       $game_self_switches  = Marshal.load(f)
  435.       $game_screen         = Marshal.load(f)
  436.       $MapFactory          = Marshal.load(f)
  437.       $game_map            = $MapFactory.map
  438.       $game_player         = Marshal.load(f)
  439.       Marshal.load(f) # PokemonGlobal already loaded
  440.       metadata             = Marshal.load(f)
  441.       $PokemonBag          = Marshal.load(f)
  442.       $PokemonStorage      = Marshal.load(f)
  443.       magicNumberMatches = false
  444.       if $data_system.respond_to?("magic_number")
  445.         magicNumberMatches = ($game_system.magic_number == $data_system.magic_number)
  446.       else
  447.         magicNumberMatches = ($game_system.magic_number == $data_system.version_id)
  448.       end
  449.       if !magicNumberMatches || $PokemonGlobal.safesave
  450.         if pbMapInterpreterRunning?
  451.           pbMapInterpreter.setup(nil,0)
  452.         end
  453.         begin
  454.           $MapFactory.setup($game_map.map_id) # calls setMapChanged
  455.         rescue Errno::ENOENT
  456.           if $DEBUG
  457.             Kernel.pbMessage(_INTL("Map {1} was not found.", $game_map.map_id))
  458.             map = pbWarpToMap()
  459.             if map
  460.               $MapFactory.setup(map[0])
  461.               $game_player.moveto(map[1],map[2])
  462.             else
  463.               $game_map = nil
  464.               $scene = nil
  465.               return
  466.             end
  467.           else
  468.             $game_map = nil
  469.             $scene = nil
  470.             Kernel.pbMessage(_INTL("The map was not found. The game cannot continue."))
  471.           end
  472.         end
  473.         $game_player.center($game_player.x, $game_player.y)
  474.       else
  475.         $MapFactory.setMapChanged($game_map.map_id)
  476.       end
  477.     end
  478.     if !$game_map.events # Map wasn't set up
  479.       $game_map = nil
  480.       $scene = nil
  481.       Kernel.pbMessage(_INTL("The map is corrupt. The game cannot continue."))
  482.       return
  483.     end
  484.     $PokemonMap = metadata
  485.     $PokemonEncounters = PokemonEncounters.new
  486.     $PokemonEncounters.setup($game_map.map_id)
  487.     pbAutoplayOnSave
  488.     $game_map.update
  489.     $PokemonMap.updateMap
  490.     $scene = Scene_Map.new
  491.     dispose
  492.   end
  493.  
  494.   def new_game
  495.     $game_temp.save_slot = @save_index
  496.     if $game_map && $game_map.events
  497.       for event in $game_map.events.values
  498.         event.clear_starting
  499.       end
  500.     end
  501.     $game_temp.common_event_id = 0 if $game_temp
  502.     $scene               = Scene_Map.new
  503.     Graphics.frame_count = 0
  504.     $game_system         = Game_System.new
  505.     $game_switches       = Game_Switches.new
  506.     $game_variables      = Game_Variables.new
  507.     $game_self_switches  = Game_SelfSwitches.new
  508.     $game_screen         = Game_Screen.new
  509.     $game_player         = Game_Player.new
  510.     $PokemonMap          = PokemonMapMetadata.new
  511.     $PokemonGlobal       = PokemonGlobalMetadata.new
  512.     $PokemonStorage      = PokemonStorage.new
  513.     $PokemonEncounters   = PokemonEncounters.new
  514.     $PokemonTemp.begunNewGame = true
  515.     $data_system         = pbLoadRxData("Data/System")
  516.     $MapFactory          = PokemonMapFactory.new($data_system.start_map_id) # calls setMapChanged
  517.     $game_player.moveto($data_system.start_x, $data_system.start_y)
  518.     $game_player.refresh
  519.     $game_map.autoplay
  520.     $game_map.update
  521.     dispose
  522.   end
  523.  
  524.   def confirm_delete
  525.     blk = Sprite.new(@viewport)
  526.     blk.bmp(-1, -1)
  527.     blk.bmp.fill_rect(0,0,Graphics.width,Graphics.height,Color.new(0,0,0))
  528.     blk.opacity = 0
  529.     blk.z = 999998
  530.     confirm = Sprite.new(@viewport)
  531.     confirm.bmp(@path + "confirm")
  532.     confirm.src_rect.height = confirm.bmp.height / 3
  533.     confirm.x = Graphics.width / 2
  534.     confirm.y = Graphics.height / 2
  535.     confirm.ox = confirm.bmp.width / 2
  536.     confirm.oy = confirm.bmp.height / 6
  537.     confirm.opacity = 0
  538.     confirm.z = 999999
  539.     for i in 0...16
  540.       Graphics.update
  541.       Input.update
  542.       blk.opacity += 12
  543.       confirm.opacity += 16
  544.     end
  545.     cfrm = 0
  546.     loop do
  547.       Graphics.update
  548.       Input.update
  549.       old = cfrm
  550.       if cfrm == 0 && Input.trigger?(Input::DOWN)
  551.         cfrm = 1
  552.       elsif cfrm == 1
  553.         cfrm = 0 if Input.trigger?(Input::UP)
  554.         cfrm = 2 if Input.trigger?(Input::RIGHT)
  555.       elsif cfrm == 2
  556.         cfrm = 0 if Input.trigger?(Input::UP)
  557.         cfrm = 1 if Input.trigger?(Input::LEFT)
  558.       end
  559.       if old != cfrm
  560.         pbSEPlay("load_cursor")
  561.         confirm.src_rect.y = cfrm * confirm.src_rect.height
  562.       end
  563.       if Input.trigger?(Input::C) && cfrm != 0
  564.         break
  565.       elsif Input.trigger?(Input::B)
  566.         cfrm = 1
  567.         break
  568.       end
  569.     end
  570.     pbSEPlay("load_cursor")
  571.     if cfrm == 1 # No
  572.      
  573.     elsif cfrm == 2 # Yes
  574.       # Delete save
  575.       filename = RTP.getSaveFileName("Game_#{@save_index}.rxdata")
  576.       if safeExists?(filename)
  577.         File.delete(filename)
  578.       end
  579.       @sel = 0
  580.       @sprites["delete"]["panel"].deselect
  581.     end
  582.     for i in 0...16
  583.       Graphics.update
  584.       Input.update
  585.       blk.opacity -= 16
  586.       confirm.opacity -= 16
  587.     end
  588.     blk.dispose
  589.     confirm.dispose
  590.     if cfrm == 2
  591.       load_save(@save_index)
  592.     end
  593.   end
  594.  
  595.   def options
  596.     scene = PokemonOptionScene.new
  597.     screen = PokemonOption.new(scene)
  598.     pbFadeOutIn(99999) do
  599.       screen.pbStartScreen(true)
  600.     end
  601.   end
  602.  
  603.   def mystery_gift
  604.     pbFadeOutIn(99999) do
  605.       trainer = pbDownloadMysteryGift(trainer)
  606.     end
  607.   end
  608.  
  609.   def credits
  610.     oldscene = $scene
  611.     $scene = Scene_Credits.new
  612.     Graphics.freeze
  613.     @sprites.visible = false
  614.     $scene.main
  615.     $scene = oldscene
  616.     @sprites.visible = true
  617.     Graphics.transition
  618.   end
  619.  
  620.   def quit_game
  621.     Kernel.abort
  622.   end
  623.  
  624.   def update
  625.     @i ||= 0
  626.     @i += 1
  627.     if @sprites["cartridge"]["party"] && @i % 3 == 0
  628.       @sprites["cartridge"]["party"].update
  629.     end
  630.     if @sprites["cartridge"]["char"]
  631.       @sprites["cartridge"]["char"].update
  632.     end
  633.     @sprites.keys.each do |key|
  634.       next if key == :cartridge
  635.       @sprites[key].update
  636.     end
  637.   end
  638.  
  639.   def dispose
  640.     @disposed = true
  641.     showBlk { update }
  642.     @sprites.dispose
  643.     @viewport.dispose
  644.     hideBlk
  645.   end
  646. end
Advertisement
Add Comment
Please, Sign In to add comment