Files
infinitefusion-e18/Data/Scripts/050_AddOns/Multiple save file.rb
2021-12-22 21:00:31 -05:00

919 lines
31 KiB
Ruby

# # Store save file after load save file
# $storenamefilesave = nil
# # Some method for checking save file
# module FileSave
# # Set name of folder
# #DIR_SAVE_GAME = System.data_directory
# DIR_SAVE_GAME = "Save Game"
# # Set name of file for saving:
# # Ex: Game1,Game2,etc
# FILENAME_SAVE_GAME = "Game"
# # Create dir
# def self.createDir(dir = DIR_SAVE_GAME)
# Dir.mkdir(dir) if !safeExists?(dir)
# end
#
# # Return location
# def self.location(dir = DIR_SAVE_GAME)
# self.createDir
# return "#{dir}"
# end
#
# # Array file
# def self.count(arr = false, dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# self.createDir(dir)
# File.rename("#{dir}/#{file}.#{type}", "#{dir}/#{file}1.#{type}") if File.file?("#{dir}/#{file}.#{type}")
# return arr ? Dir.glob("#{dir}/#{file}*.#{type}") : Dir.glob("#{dir}/#{file}*.#{type}").size
# end
#
# # Rename
# def self.rename(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# arr = self.count(true)
# return if arr.size <= 0
# name = []
# arr.each { |f| name << (File.basename(f, ".#{type}").gsub(/[^0-9]/, "")) }
# needtorewrite = false
# (0...arr.size).each { |i|
# needtorewrite = true if arr[i] != "#{dir}/#{file}#{name[i]}.#{type}"
# }
# if needtorewrite
# numbername = []
# name.each { |n| numbername << n.to_i }
# (0...numbername.size).each { |i|
# loop do
# break if i == 0
# diff = numbername.index(numbername[i])
# break if diff == i
# numbername[i] += 1
# end
# Dir.mkdir("#{dir}/#{numbername[i]}")
# File.rename("#{arr[i]}", "#{dir}/#{numbername[i]}/#{file}#{numbername[i]}.#{type}")
# }
# (0...name.size).each { |i|
# name2 = "#{dir}/#{numbername[i]}/#{file}#{numbername[i]}.#{type}"
# File.rename(name2, "#{dir}/#{file}#{numbername[i]}.#{type}")
# Dir.delete("#{dir}/#{numbername[i]}")
# }
# end
# arr.size.times { |i|
# num = 0
# namef = sprintf("%d", i + 1)
# loop do
# break if File.file?("#{dir}/#{file}#{namef}.#{type}")
# num += 1
# namef2 = sprintf("%d", i + 1 + num)
# File.rename("#{dir}/#{file}#{namef2}.#{type}", "#{dir}/#{file}#{namef}.#{type}") if File.file?("#{dir}/#{file}#{namef2}.#{type}")
# end
# }
# end
#
# # Save
# def self.name(n = nil, re = true, dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# self.rename if re
# return "#{dir}/#{file}1.rxdata" if n.nil?
# if !n.is_a?(Numeric)
# p "Set number for file save"
# return
# end
# return "#{dir}/#{file}#{n}.rxdata"
# end
#
# # Old file save
# def self.title
# return System.game_title.gsub(/[^\w ]/, '_')
# end
#
# # Version 19
# def self.dirv19(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# game_title = self.title
# return if !File.directory?(System.data_directory)
# old_file = System.data_directory + '/Game.rxdata'
# return if !File.file?(old_file)
# self.rename
# size = self.count
# File.move(old_file, "#{dir}/#{file}#{size + 1}.#{type}")
# end
#
# # Version 18
# def self.dirv18(dir = DIR_SAVE_GAME, file = FILENAME_SAVE_GAME, type = "rxdata")
# game_title = self.title
# home = ENV['HOME'] || ENV['HOMEPATH']
# return if home.nil?
# old_location = File.join(home, 'Saved Games', game_title)
# return if !File.directory?(old_location)
# old_file = File.join(old_location, 'Game.rxdata')
# return if !File.file?(old_file)
# self.rename
# size = self.count
# File.move(old_file, "#{dir}/#{file}#{size + 1}.#{type}")
# end
# end
# #-------------------------#
# # Set for module SaveData #
# #-------------------------#
# module SaveData
# def self.delete_file(file = FILE_PATH)
# File.delete(file)
# File.delete(file + '.bak') if File.file?(file + '.bak')
# end
#
# def self.move_old_windows_save
# FileSave.dirv19
# FileSave.dirv18
# end
#
# def self.changeFILEPATH(new = nil)
# return if new.nil?
# const_set(:FILE_PATH, new)
# end
# end
# #---------------------#
# # Set 'set_up_system' #
# #---------------------#
# module Game
# def self.set_up_system
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# SaveData.move_old_windows_save if System.platform[/Windows/]
# save_data = (SaveData.exists?) ? SaveData.read_from_file(SaveData::FILE_PATH) : {}
# if save_data.empty?
# SaveData.initialize_bootup_values
# else
# SaveData.load_bootup_values(save_data)
# end
# # Set resize factor
# pbSetResizeFactor([$PokemonSystem.screensize, 4].min)
# # Set language (and choose language if there is no save file)
# if Settings::LANGUAGES.length >= 2
# $PokemonSystem.language = pbChooseLanguage if save_data.empty?
# pbLoadMessages('Data/' + Settings::LANGUAGES[$PokemonSystem.language][1])
# end
# end
# end
# #--------------------#
# # Set emergency save #
# #--------------------#
# def pbEmergencySave
# oldscene = $scene
# $scene = nil
# pbMessage(_INTL("The script is taking too long. The game will restart."))
# return if !$Trainer
# # It will store the last save file when you dont file save
# count = FileSave.count
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# if SaveData.exists?
# File.open(SaveData::FILE_PATH, 'rb') do |r|
# File.open(SaveData::FILE_PATH + '.bak', 'wb') do |w|
# while s = r.read(4096)
# w.write s
# end
# end
# end
# end
# if Game.save
# pbMessage(_INTL("\\se[]The game was saved.\\me[GUI save game] The previous save file has been backed up.\\wtnp[30]"))
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# end
# $scene = oldscene
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Save #
# #------------------------------------------------------------------------------#
# # Custom message
# def pbCustomMessageForSave(message, commands, index, &block)
# return pbMessage(message, commands, index, &block)
# end
#
# # Save screen
# class PokemonSaveScreen
# def pbSaveScreen
# ret = false
# # Check for renaming
# FileSave.rename
# # Count save file
# count = FileSave.count
# # Start
# @scene.pbStartScreen
# msg = _INTL("What do you want to do?")
# cmds = [_INTL("Save"),
# _INTL("Save to new file"),
# _INTL("Overwrite another save"),
# _INTL("Cancel")
# ]
# cmd2 = pbCustomMessageForSave(msg, cmds, 3)
#
# # New save file
# case cmd2
# when 1
# ret = writeToNewSaveFile(count)
# # Overwrite
# when 2
# ret = overwriteSaveFile(count)
# when 0
# ret = overwriteCurrentFile(count)
# end
#
# @scene.pbEndScreen
# return ret
# end
#
# def overwriteCurrentFile(count)
# if !$storenamefilesave.nil? && count > 0
# SaveData.changeFILEPATH($storenamefilesave)
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# ret = false
# end
#
# SaveData.changeFILEPATH(!$storenamefilesave.nil? ? $storenamefilesave : FileSave.name)
# return ret
# else
# return writeToNewSaveFile(count)
# end
# end
#
# def overwriteSaveFile(count)
# if count <= 0
# pbMessage(_INTL("No save file was found."))
# else
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel
# file.endScene
# return file.staymenu
# }
# end
# end
#
# def writeToNewSaveFile(count)
# SaveData.changeFILEPATH(FileSave.name(count + 1))
# ret = false
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# end
# SaveData.changeFILEPATH(!$storenamefilesave.nil? ? $storenamefilesave : FileSave.name)
# return ret
# end
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Load #
# #------------------------------------------------------------------------------#
# class PokemonLoadScreen
# def initialize(scene)
# @scene = scene
# end
#
# def pbStartLoadScreen
# commands = []
# cmd_continue = -1
# cmd_new_game = -1
# cmd_options = -1
# cmd_debug = -1
# cmd_quit = -1
# show_continue = FileSave.count > 0
# commands[cmd_continue = commands.length] = _INTL('Continue') if show_continue
# commands[cmd_new_game = commands.length] = _INTL('New Game')
# commands[cmd_options = commands.length] = _INTL('Options')
# commands[cmd_delete = commands.length] = _INTL('Delete Save') if show_continue
# commands[cmd_debug = commands.length] = _INTL('Debug') if $DEBUG
# commands[cmd_quit = commands.length] = _INTL('Quit Game')
# @scene.pbStartScene(commands, false, nil, 0, 0)
# @scene.pbStartScene2
# loop do
# command = @scene.pbChoose(commands)
# pbPlayDecisionSE if command != cmd_quit
# case command
# when cmd_continue
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(FileSave.count)
# file.movePanel(1)
# @scene.pbEndScene if !file.staymenu
# file.endScene
# return if !file.staymenu
# }
# when cmd_new_game
# @scene.pbEndScene
# Game.start_new
# return
# when cmd_options
# pbFadeOutIn do
# scene = PokemonOption_Scene.new
# screen = PokemonOptionScreen.new(scene)
# screen.pbStartScreen(true)
# end
# when cmd_debug
# pbFadeOutIn { pbDebugMenu(false) }
# when cmd_quit
# pbPlayCloseMenuSE
# @scene.pbEndScene
# $scene = nil
# return
# when cmd_delete
# #pbStartDeleteScreen
# deleteFileMenu(FileSave.count)
# else
# pbPlayBuzzerSE
# end
# end
# end
#
# def deleteFileMenu(count)
# if count <= 0
# pbMessage(_INTL("No save file was found."))
# else
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel(2)
# file.endScene
# Graphics.frame_reset if file.deletefile
# }
# # Return menu
# return false
# end
# end
#
# def pbStartDeleteScreen
# @scene.pbStartDeleteScene
# @scene.pbStartScene2
# count = FileSave.count
# if count < 0
# pbMessage(_INTL("No save file was found."))
# else
# msg = _INTL("What do you want to do?")
# cmds = [_INTL("Delete All File Save"), _INTL("Delete Only One File Save"), _INTL("Cancel")]
# cmd = pbCustomMessageForSave(msg, cmds, 3)
# case cmd
# when 0
# if pbConfirmMessageSerious(_INTL("Delete all saves?"))
# pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
# if pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
# pbMessage(_INTL("Deleting all data. Don't turn off the power.\\wtnp[0]"))
# haserrorwhendelete = false
# count.times { |i|
# name = FileSave.name(i + 1, false)
# begin
# SaveData.delete_file(name)
# rescue
# haserrorwhendelete = true
# end
# }
# pbMessage(_INTL("You have at least one file that cant delete and have error")) if haserrorwhendelete
# Graphics.frame_reset
# pbMessage(_INTL("The save file was deleted."))
# end
# end
# when 1
# pbFadeOutIn {
# file = ScreenChooseFileSave.new(count)
# file.movePanel(2)
# file.endScene
# Graphics.frame_reset if file.deletefile
# }
# end
# end
# @scene.pbEndScene
# $scene = pbCallTitle
# end
# end
#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# #------------------------------------------------------------------------------#
# # Scene for save menu, load menu and delete menu #
# #------------------------------------------------------------------------------#
# class ScreenChooseFileSave
# attr_reader :staymenu
# attr_reader :deletefile
#
# def initialize(count)
# @sprites = {}
# @viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
# @viewport.z = 99999
# # Set value
# # Check quantity
# @count = count
# if @count <= 0
# pbMessage("No save file was found.")
# return
# end
# # Check still menu
# @staymenu = false
# @deletefile = false
# # Check position
# @position = 0
# # Check position if count > 7
# @choose = 0
# # Set position of panel 'information'
# @posinfor = 0
# # Quantity of panel in information page
# @qinfor = 0
# # Check mystery gift
# @mysgif = false
# end
#
# # Set background (used "loadbg")
# def drawBg
# color = Color.new(248, 248, 248)
# addBackgroundOrColoredPlane(@sprites, "background", "loadbg", color, @viewport)
# end
#
# #-------------------------------------------------------------------------------
# # Set Panel
# #-------------------------------------------------------------------------------
# # Draw panel
# def startPanel
# # Check and rename
# FileSave.rename
# # Start
# drawBg
# # Set bar
# num = (@count > 7) ? 7 : @count
# (0...num).each { |i|
# create_sprite("panel #{i}", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("panel #{i}", w, h)
# x = 16; y = 444
# set_src_xy_sprite("panel #{i}", x, y)
# x = 24 * 2; y = 16 * 2 + 48 * i
# set_xy_sprite("panel #{i}", x, y)
# }
# # Set choose bar
# create_sprite("choose panel", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("choose panel", w, h)
# x = 16; y = 444 + 46
# set_src_xy_sprite("choose panel", x, y)
# choosePanel(@choose)
# # Set text
# create_sprite_2("text", @viewport)
# textPanel
# pbFadeInAndShow(@sprites) { update }
# end
#
# def choosePanel(pos = 0)
# x = 24 * 2; y = 16 * 2 + 48 * pos
# set_xy_sprite("choose panel", x, y)
# end
#
# # Draw text panel
# BaseColor = Color.new(252, 252, 252)
# ShadowColor = Color.new(0, 0, 0)
#
# def textPanel(font = nil)
# return if @count <= 0
# bitmap = @sprites["text"].bitmap
# bitmap.clear
# if @count > 0 && @count < 7
# namesave = 0; endnum = @count
# else
# namesave = (@position > @count - 7) ? @count - 7 : @position
# endnum = 7
# end
# textpos = []
# (0...endnum).each { |i|
# string = _INTL("Save File #{namesave + 1 + i}")
# if i + 1 == getCurrentSaveFileNumber()
# string += " (Current)"
# end
# x = 24 * 2 + 36; y = 16 * 2 + 5 + 48 * i
# textpos << [string, x, y, 0, BaseColor, ShadowColor]
# }
# (font.nil?) ? pbSetSystemFont(bitmap) : bitmap.font.name = font
# pbDrawTextPositions(bitmap, textpos)
# end
#
# def getCurrentSaveFileNumber()
# saveFilePath = $storenamefilesave
# return nil if saveFilePath == nil
# begin
# filename = saveFilePath.split(".")[0]
# return filename[-1].to_i
# rescue nil
# end
# end
#
# # Move panel
# # Type: 0: Save; 1: Load; 2: Delete
# def movePanel(type = 0)
# infor = false; draw = true; loadmenu = false
# @type = type
# loop do
# # Panel Page
# if !loadmenu
# if !infor
# if draw;
# startPanel; draw = false
# else
# # Update
# update_ingame
# if checkInput(Input::UP)
# @position -= 1
# @choose -= 1
# if @choose < 0
# if @position < 0
# @choose = (@count < 7) ? @count - 1 : 6
# else
# @choose = 0
# end
# end
# @position = @count - 1 if @position < 0
# # Move choose panel
# choosePanel(@choose)
# # Draw text
# textPanel
# end
# if checkInput(Input::DOWN)
# @position += 1
# @choose += 1 if @position > @count - 7
# (@choose = 0; @position = 0) if @position >= @count
# # Move choose panel
# choosePanel(@choose)
# # Draw text
# textPanel
# end
# if checkInput(Input::USE)
# dispose
# draw = true
# if self.fileLoad.empty?
# @choose = 0; @position = 0
# if FileSave.count == 0
# pbMessage(_INTL('You dont have any save file. Restart game now.'))
# @staymenu = false
# $scene = pbCallTitle if @type == 1
# break
# end
# else
# infor = true
# end
# end
# if checkInput(Input::BACK)
# @staymenu = true if @type == 1
# break
# end
# end
# # Information page
# elsif infor
# if draw;
# startPanelInfor(@type); draw = false
# else
# # Update
# update_ingame
# # Load file
# loadmenu = true if @type == 1
# if checkInput(Input::USE)
# # Save file
# case @type
# when 0
# SaveData.changeFILEPATH(FileSave.name(@position + 1))
# if Game.save
# pbMessage(_INTL("\\se[]{1} saved the game.\\me[GUI save game]\\wtnp[30]", $Trainer.name))
# ret = true
# else
# pbMessage(_INTL("\\se[]Save failed.\\wtnp[30]"))
# ret = false
# end
# SaveData.changeFILEPATH($storenamefilesave.nil? ? FileSave.name : $storenamefilesave)
# break
# # Delete file
# when 2
# if pbConfirmMessageSerious(_INTL("Delete all saved data?"))
# pbMessage(_INTL("Once data has been deleted, there is no way to recover it.\1"))
# if pbConfirmMessageSerious(_INTL("Delete the saved data anyway?"))
# pbMessage(_INTL("Deleting all data. Don't turn off the power.\\wtnp[0]"))
# # Delete
# self.deleteFile
# @deletefile = true
# end
# end
# break
# end
# end
# (dispose; draw = true; infor = false) if checkInput(Input::BACK)
# end
# end
# else
# # Update
# update_ingame
# # Start
# if @qinfor > 0
# if checkInput(Input::UP)
# @posinfor -= 1
# @posinfor = @qinfor if @posinfor < 0
# choosePanelInfor
# end
# if checkInput(Input::DOWN)
# @posinfor += 1
# @posinfor = 0 if @posinfor > @qinfor
# choosePanelInfor
# end
# end
# if checkInput(Input::USE)
# # Set up system again
# $storenamefilesave = FileSave.name(@position + 1)
# Game.set_up_system
# if @posinfor == 0
# Game.load(self.fileLoad)
# @staymenu = false
# break
# # Mystery Gift
# elsif @posinfor == 1 && @mysgif
# pbFadeOutIn {
# pbDownloadMysteryGift(self.fileLoad[:player])
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# }
# # Language
# elsif Settings::LANGUAGES.length >= 2 && (@posinfor == 2 || (@posinfor == 1 && !@mysgif))
# $PokemonSystem.language = pbChooseLanguage
# pbLoadMessages('Data/' + Settings::LANGUAGES[$PokemonSystem.language][1])
# self.fileLoad[:pokemon_system] = $PokemonSystem
# File.open(FileSave.name(@position + 1), 'wb') { |file| Marshal.dump(self.fileLoad, file) }
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# end
# end
# if checkInput(Input::BACK)
# @posinfor = 0; @qinfor = 0; @mysgif = false
# dispose; draw = true; loadmenu = false; infor = false
# end
# end
# end
# end
#
# #-------------------------------------------------------------------------------
# # Set information
# #-------------------------------------------------------------------------------
# def startPanelInfor(type)
# # Draw background
# drawBg
# create_sprite("infor panel 0", "loadPanels", @viewport)
# w = 408; h = 222
# set_src_wh_sprite("infor panel 0", w, h)
# x = 0; y = 0
# set_src_xy_sprite("infor panel 0", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 0", x, y)
# drawInfor(type)
# end
#
# # Color
# TEXTCOLOR = Color.new(232, 232, 232)
# TEXTSHADOWCOLOR = Color.new(136, 136, 136)
# MALETEXTCOLOR = Color.new(56, 160, 248)
# MALETEXTSHADOWCOLOR = Color.new(56, 104, 168)
# FEMALETEXTCOLOR = Color.new(240, 72, 88)
# FEMALETEXTSHADOWCOLOR = Color.new(160, 64, 64)
#
# # Draw information (text)
# def drawInfor(type, font = nil)
# # Set trainer
# trainer = self.fileLoad[:player]
# # Set mystery gift and language
# if type == 1
# mystery = self.fileLoad[:player].mystery_gift_unlocked
# @mysgif = mystery
# @qinfor += 1 if mystery
# @qinfor += 1 if Settings::LANGUAGES.length >= 2
# (0...@qinfor).each { |i|
# create_sprite("panel load #{i}", "loadPanels", @viewport)
# w = 384; h = 46
# set_src_wh_sprite("panel load #{i}", w, h)
# x = 16; y = 444
# set_src_xy_sprite("panel load #{i}", x, y)
# x = 24 * 2 + 8; y = 16 * 2 + 48 * i + 112 * 2
# set_xy_sprite("panel load #{i}", x, y)
# } if @qinfor > 0
# end
# # Move panel (information)
# create_sprite("infor panel 1", "loadPanels", @viewport)
# w = 408; h = 222
# set_src_wh_sprite("infor panel 1", w, h)
# x = 0; y = 222
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 1", x, y)
# # Set
# create_sprite_2("text", @viewport)
# framecount = self.fileLoad[:frame_count]
# totalsec = (framecount || 0) / Graphics.frame_rate
# bitmap = @sprites["text"].bitmap
# textpos = []
# # Text of trainer
# x = 24 * 2; y = 16 * 2
# title = (type == 0) ? "Save" : (type == 1) ? "Load" : "Delete"
# textpos << [_INTL("#{title}"), 16 * 2 + x, 5 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Badges:"), 16 * 2 + x, 56 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [trainer.badge_count.to_s, 103 * 2 + x, 56 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Pokédex:"), 16 * 2 + x, 72 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [trainer.pokedex.seen_count.to_s, 103 * 2 + x, 72 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# textpos << [_INTL("Time:"), 16 * 2 + x, 88 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# hour = totalsec / 60 / 60
# min = totalsec / 60 % 60
# if hour > 0
# textpos << [_INTL("{1}h {2}m", hour, min), 103 * 2 + x, 88 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# else
# textpos << [_INTL("{1}m", min), 103 * 2 + x, 88 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# end
# if trainer.male?
# textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, MALETEXTCOLOR, MALETEXTSHADOWCOLOR]
# elsif textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, FEMALETEXTCOLOR, FEMALETEXTSHADOWCOLOR]
# else
# textpos << [trainer.name, 56 * 2 + x, 32 * 2 + y, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# end
# mapid = self.fileLoad[:map_factory].map.map_id
# mapname = pbGetMapNameFromId(mapid)
# mapname.gsub!(/\\PN/, trainer.name)
# textpos << [mapname, 193 * 2 + x, 5 * 2 + y, 1, TEXTCOLOR, TEXTSHADOWCOLOR]
# # Load menu
# if type == 1
# # Mystery gift / Language
# string = []
# string << _INTL("Mystery Gift") if mystery
# string << _INTL("Language") if Settings::LANGUAGES.length >= 2
# if @qinfor > 0
# (0...@qinfor).each { |i|
# str = string[i]
# x1 = x + 36 + 8
# y1 = y + 5 + 112 * 2 + 48 * i
# textpos << [str, x1, y1, 0, TEXTCOLOR, TEXTSHADOWCOLOR]
# }
# end
# end
# # Set text
# (font.nil?) ? pbSetSystemFont(bitmap) : bitmap.font.name = font
# pbDrawTextPositions(bitmap, textpos)
#
# # Set trainer (draw)
# if !trainer || !trainer.party
# # Fade
# pbFadeInAndShow(@sprites) { update }
# return
# else
# meta = GameData::Metadata.get_player(trainer.character_ID)
# if meta
# filename = pbGetPlayerCharset(meta, 1, trainer, true)
# @sprites["player"] = TrainerWalkingCharSprite.new(filename, @viewport)
# charwidth = @sprites["player"].bitmap.width
# charheight = @sprites["player"].bitmap.height
# @sprites["player"].x = 56 * 2 - charwidth / 8
# @sprites["player"].y = 56 * 2 - charheight / 8
# @sprites["player"].src_rect = Rect.new(0, 0, charwidth / 4, charheight / 4)
# end
# for i in 0...trainer.party.length
# @sprites["party#{i}"] = PokemonIconSprite.new(trainer.party[i], @viewport)
# @sprites["party#{i}"].setOffset(PictureOrigin::Center)
# @sprites["party#{i}"].x = (167 + 33 * (i % 2)) * 2
# @sprites["party#{i}"].y = (56 + 25 * (i / 2)) * 2
# @sprites["party#{i}"].z = 99999
# end
# # Fade
# pbFadeInAndShow(@sprites) { update }
# end
# end
#
# def choosePanelInfor
# if @posinfor == 0
# w = 408; h = 222
# set_src_wh_sprite("infor panel 1", w, h)
# x = 0; y = 222
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2; y = 16 * 2
# set_xy_sprite("infor panel 1", x, y)
# else
# w = 384; h = 46
# set_src_wh_sprite("infor panel 1", w, h)
# x = 16; y = 490
# set_src_xy_sprite("infor panel 1", x, y)
# x = 24 * 2 + 8
# y = 16 * 2 + 48 * (@posinfor - 1) + 112 * 2
# set_xy_sprite("infor panel 1", x, y)
# end
# end
#
# #-------------------------------------------------------------------------------
# # Delete
# #-------------------------------------------------------------------------------
# def deleteFile
# savefile = FileSave.name(@position + 1, false)
# begin
# SaveData.delete_file(savefile)
# pbMessage(_INTL('The saved data was deleted.'))
# rescue SystemCallError
# pbMessage(_INTL('All saved data could not be deleted.'))
# end
# end
#
# #-------------------------------------------------------------------------------
# # Load File
# #-------------------------------------------------------------------------------
# def load_save_file(file_path)
# save_data = SaveData.read_from_file(file_path)
# unless SaveData.valid?(save_data)
# if File.file?(file_path + '.bak')
# pbMessage(_INTL('The save file is corrupt. A backup will be loaded.'))
# save_data = load_save_file(file_path + '.bak')
# else
# self.prompt_save_deletion
# return {}
# end
# end
# return save_data
# end
#
# # Called if all save data is invalid.
# # Prompts the player to delete the save files.
# def prompt_save_deletion
# pbMessage(_INTL('Cant load this save file'))
# pbMessage(_INTL('The save file is corrupt, or is incompatible with this game.'))
# exit unless pbConfirmMessageSerious(_INTL('Do you want to delete this save file?'))
# self.deleteFile
# $game_system = Game_System.new
# $PokemonSystem = PokemonSystem.new
# end
#
# def fileLoad
# return load_save_file(FileSave.name(@position + 1))
# end
#
# #-------------------------------------------------------------------------------
# # Set SE for input
# #-------------------------------------------------------------------------------
# def checkInput(name)
# if Input.trigger?(name)
# (name == Input::BACK) ? pbPlayCloseMenuSE : pbPlayDecisionSE
# return true
# end
# return false
# end
#
# #-------------------------------------------------------------------------------
# # Set bitmap
# #-------------------------------------------------------------------------------
# # Image
# def create_sprite(spritename, filename, vp, dir = "Pictures")
# @sprites["#{spritename}"] = Sprite.new(vp)
# @sprites["#{spritename}"].bitmap = Bitmap.new("Graphics/#{dir}/#{filename}")
# end
#
# # Set x, y
# def set_xy_sprite(spritename, x, y)
# @sprites["#{spritename}"].x = x
# @sprites["#{spritename}"].y = y
# end
#
# # Set src
# def set_src_wh_sprite(spritename, w, h)
# @sprites["#{spritename}"].src_rect.width = w
# @sprites["#{spritename}"].src_rect.height = h
# end
#
# def set_src_xy_sprite(spritename, x, y)
# @sprites["#{spritename}"].src_rect.x = x
# @sprites["#{spritename}"].src_rect.y = y
# end
#
# #-------------------------------------------------------------------------------
# # Text
# #-------------------------------------------------------------------------------
# # Draw
# def create_sprite_2(spritename, vp)
# @sprites["#{spritename}"] = Sprite.new(vp)
# @sprites["#{spritename}"].bitmap = Bitmap.new(Graphics.width, Graphics.height)
# @sprites["#{spritename}"].bitmap.clear
# end
#
# #-------------------------------------------------------------------------------
# def dispose
# pbDisposeSpriteHash(@sprites)
# end
#
# def update
# pbUpdateSpriteHash(@sprites)
# end
#
# def update_ingame
# Graphics.update
# Input.update
# pbUpdateSpriteHash(@sprites)
# end
#
# def endScene
# dispose
# @viewport.dispose
# end
# end