Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- # Seven Mysteries - Load/Save Scene
- # ------------------------------------------------------------------------------
- # Author: Dark Sky
- # Release on: August 16th 2016
- # Version: 1.0
- # ------------------------------------------------------------------------------
- # Lưu ý: 640x480 screen size only.
- #===============================================================================
- module SM_LoadSaveScene
- #-----------------------------------------------------------------------------
- FACE_NAME = "SM Face" # Ảnh để trong folder Pictures
- BG_NAME = "SM Background" # Ảnh để trong folder Pictures
- FACE_OFFSET_Y = 70 # Just test it yourself =]]
- #-----------------------------------------------------------------------------
- ## Chú ý: Thay đổi dễ gây lỗi ở phần hiển thị slot.
- #-----------------------------------------------------------------------------
- HELP_WINDOW_WIDTH = 350
- HELP_WINDOW_X = 32
- HELP_WINDOW_y = 16
- PLAY_TIME_ALIGN = 2
- #-----------------------------------------------------------------------------
- end
- include SM_LoadSaveScene
- #==============================================================================
- # ** Scene_File
- #------------------------------------------------------------------------------
- # This class performs common processing for the save screen and load screen.
- #==============================================================================
- class Scene_File < Scene_MenuBase
- alias_method(:start_sm_scene_file, :start)
- alias_method(:terminate_sm_scene_file, :start)
- #--------------------------------------------------------------------------
- # * Start Processing
- #--------------------------------------------------------------------------
- def start
- super
- @sprites = {}
- @sprites[:bg] = Sprite.new
- @sprites[:bg].bitmap = Cache.picture("#{BG_NAME}")
- @sprites[:bg].z = 1
- @sprites[:face] = Sprite.new
- @sprites[:face].mirror = false
- @sprites[:face].bitmap = Cache.picture("#{FACE_NAME}")
- @sprites[:face].y = 480 - @sprites[:face].bitmap.height + FACE_OFFSET_Y
- @sprites[:face].x = 640 - @sprites[:face].bitmap.width
- @sprites[:face].opacity = 255
- @sprites[:face].z = 2
- start_sm_scene_file
- end
- #--------------------------------------------------------------------------
- # * Create Help Window
- #--------------------------------------------------------------------------
- def terminate
- super
- @sprites.values.each do |sprite|
- sprite.bitmap.dispose
- sprite.dispose
- end
- @savefile_viewport.dispose
- @savefile_windows.each {|window| window.dispose }
- end
- #--------------------------------------------------------------------------
- # * Create Help Window
- #--------------------------------------------------------------------------
- def create_help_window
- @help_window = Window_Help.new(1)
- @help_window.y = HELP_WINDOW_y
- @help_window.x = HELP_WINDOW_X
- @help_window.width = HELP_WINDOW_WIDTH
- @help_window.create_contents
- @help_window.set_text(help_window_text)
- end
- #--------------------------------------------------------------------------
- # * Create Save File Viewport
- #--------------------------------------------------------------------------
- def create_savefile_viewport
- @savefile_viewport = Viewport.new
- @savefile_viewport.z = 100
- @savefile_viewport.rect.y = @help_window.height + @help_window.y + 12
- @savefile_viewport.rect.height -= @help_window.height + @help_window.y + 80
- end
- #--------------------------------------------------------------------------
- # * Get Number of Save Files to Show on Screen
- #--------------------------------------------------------------------------
- def visible_max
- return 3
- end
- end
- #==============================================================================
- # ** Window_SaveFile
- #------------------------------------------------------------------------------
- # This window displays save files on the save and load screens.
- #==============================================================================
- include SM_LoadSaveScene
- class Window_SaveFile < Window_Base
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_reader :selected # selected
- #--------------------------------------------------------------------------
- # * Object Initialization
- # index : index of save files
- #--------------------------------------------------------------------------
- def initialize(height, index)
- super(HELP_WINDOW_X, index * (height), HELP_WINDOW_WIDTH, height - 16)
- @file_index = index
- refresh
- @selected = false
- end
- #--------------------------------------------------------------------------
- # * Refresh
- #--------------------------------------------------------------------------
- def refresh
- contents.clear
- change_color(normal_color)
- name = Vocab::File + " #{@file_index + 1}"
- draw_text(4, 0, 200, line_height, name)
- @name_width = text_size(name).width
- x = 140
- y = 48
- draw_party_characters(x, y)
- draw_playtime(0, contents.height - line_height, contents.width - 4, PLAY_TIME_ALIGN)
- end
- #--------------------------------------------------------------------------
- # * Draw Party Characters
- #--------------------------------------------------------------------------
- def draw_party_characters(x, y)
- header = DataManager.load_header(@file_index)
- return unless header
- header[:characters].each_with_index do |data, i|
- draw_character(data[0], data[1], x + i * 32, y)
- end
- end
- #--------------------------------------------------------------------------
- # * Draw Play Time
- #--------------------------------------------------------------------------
- def draw_playtime(x, y, width, align)
- header = DataManager.load_header(@file_index)
- return unless header
- draw_text(x, y, width, line_height, header[:playtime_s], align)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement