Advertisement
dsiver144

Seven Mysteries - Load/Save Scene

Aug 16th, 2016
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.23 KB | None | 0 0
  1. #===============================================================================
  2. # Seven Mysteries - Load/Save Scene
  3. # ------------------------------------------------------------------------------
  4. # Author: Dark Sky
  5. # Release on: August 16th 2016
  6. # Version: 1.0
  7. # ------------------------------------------------------------------------------
  8. # Lưu ý: 640x480 screen size only.
  9. #===============================================================================
  10. module SM_LoadSaveScene
  11. #-----------------------------------------------------------------------------
  12. FACE_NAME = "SM Face" # Ảnh để trong folder Pictures
  13. BG_NAME = "SM Background" # Ảnh để trong folder Pictures
  14. FACE_OFFSET_Y = 70 # Just test it yourself =]]
  15. #-----------------------------------------------------------------------------
  16. ## Chú ý: Thay đổi dễ gây lỗi ở phần hiển thị slot.
  17. #-----------------------------------------------------------------------------
  18. HELP_WINDOW_WIDTH = 350
  19. HELP_WINDOW_X = 32
  20. HELP_WINDOW_y = 16
  21. PLAY_TIME_ALIGN = 2
  22. #-----------------------------------------------------------------------------
  23. end
  24.  
  25. include SM_LoadSaveScene
  26. #==============================================================================
  27. # ** Scene_File
  28. #------------------------------------------------------------------------------
  29. # This class performs common processing for the save screen and load screen.
  30. #==============================================================================
  31.  
  32. class Scene_File < Scene_MenuBase
  33. alias_method(:start_sm_scene_file, :start)
  34. alias_method(:terminate_sm_scene_file, :start)
  35. #--------------------------------------------------------------------------
  36. # * Start Processing
  37. #--------------------------------------------------------------------------
  38. def start
  39. super
  40. @sprites = {}
  41. @sprites[:bg] = Sprite.new
  42. @sprites[:bg].bitmap = Cache.picture("#{BG_NAME}")
  43. @sprites[:bg].z = 1
  44. @sprites[:face] = Sprite.new
  45. @sprites[:face].mirror = false
  46. @sprites[:face].bitmap = Cache.picture("#{FACE_NAME}")
  47. @sprites[:face].y = 480 - @sprites[:face].bitmap.height + FACE_OFFSET_Y
  48. @sprites[:face].x = 640 - @sprites[:face].bitmap.width
  49. @sprites[:face].opacity = 255
  50. @sprites[:face].z = 2
  51. start_sm_scene_file
  52. end
  53. #--------------------------------------------------------------------------
  54. # * Create Help Window
  55. #--------------------------------------------------------------------------
  56. def terminate
  57. super
  58. @sprites.values.each do |sprite|
  59. sprite.bitmap.dispose
  60. sprite.dispose
  61. end
  62. @savefile_viewport.dispose
  63. @savefile_windows.each {|window| window.dispose }
  64. end
  65. #--------------------------------------------------------------------------
  66. # * Create Help Window
  67. #--------------------------------------------------------------------------
  68. def create_help_window
  69. @help_window = Window_Help.new(1)
  70. @help_window.y = HELP_WINDOW_y
  71. @help_window.x = HELP_WINDOW_X
  72. @help_window.width = HELP_WINDOW_WIDTH
  73. @help_window.create_contents
  74. @help_window.set_text(help_window_text)
  75. end
  76. #--------------------------------------------------------------------------
  77. # * Create Save File Viewport
  78. #--------------------------------------------------------------------------
  79. def create_savefile_viewport
  80. @savefile_viewport = Viewport.new
  81. @savefile_viewport.z = 100
  82. @savefile_viewport.rect.y = @help_window.height + @help_window.y + 12
  83. @savefile_viewport.rect.height -= @help_window.height + @help_window.y + 80
  84. end
  85. #--------------------------------------------------------------------------
  86. # * Get Number of Save Files to Show on Screen
  87. #--------------------------------------------------------------------------
  88. def visible_max
  89. return 3
  90. end
  91. end
  92.  
  93. #==============================================================================
  94. # ** Window_SaveFile
  95. #------------------------------------------------------------------------------
  96. # This window displays save files on the save and load screens.
  97. #==============================================================================
  98. include SM_LoadSaveScene
  99. class Window_SaveFile < Window_Base
  100. #--------------------------------------------------------------------------
  101. # * Public Instance Variables
  102. #--------------------------------------------------------------------------
  103. attr_reader :selected # selected
  104. #--------------------------------------------------------------------------
  105. # * Object Initialization
  106. # index : index of save files
  107. #--------------------------------------------------------------------------
  108. def initialize(height, index)
  109. super(HELP_WINDOW_X, index * (height), HELP_WINDOW_WIDTH, height - 16)
  110. @file_index = index
  111. refresh
  112. @selected = false
  113. end
  114. #--------------------------------------------------------------------------
  115. # * Refresh
  116. #--------------------------------------------------------------------------
  117. def refresh
  118. contents.clear
  119. change_color(normal_color)
  120. name = Vocab::File + " #{@file_index + 1}"
  121. draw_text(4, 0, 200, line_height, name)
  122. @name_width = text_size(name).width
  123. x = 140
  124. y = 48
  125. draw_party_characters(x, y)
  126. draw_playtime(0, contents.height - line_height, contents.width - 4, PLAY_TIME_ALIGN)
  127. end
  128. #--------------------------------------------------------------------------
  129. # * Draw Party Characters
  130. #--------------------------------------------------------------------------
  131. def draw_party_characters(x, y)
  132. header = DataManager.load_header(@file_index)
  133. return unless header
  134. header[:characters].each_with_index do |data, i|
  135. draw_character(data[0], data[1], x + i * 32, y)
  136. end
  137. end
  138. #--------------------------------------------------------------------------
  139. # * Draw Play Time
  140. #--------------------------------------------------------------------------
  141. def draw_playtime(x, y, width, align)
  142. header = DataManager.load_header(@file_index)
  143. return unless header
  144. draw_text(x, y, width, line_height, header[:playtime_s], align)
  145. end
  146. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement