class Window_BookPage < Window_Base def initialize(page_text, page) if page @index = 1 else @index = 0 end @page_text = page_text super(32, 16, 288, 448) self.contents = Bitmap.new(width-32, height-32) self.opacity = 0 refresh end def refresh self.contents.clear @space_modifier = 0 for i in 0...@page_text.size if @page_text[i] != nil if @page_text[i].include?(".png") bitmap = RPG::Cache.picture(@page_text[i].chomp) x_pos = (self.contents.width / 2) - (bitmap.width / 2) self.contents.blt(x_pos, i * 32 + @space_modifier, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height)) @space_modifier += bitmap.height - 32 else self.contents.font.color = Color.new(0,0,0,255) self.contents.draw_text(1, i * 32 + 1 + @space_modifier, self.contents.width, 32, @page_text[i].to_s) self.contents.font.color = normal_color self.contents.draw_text(0, i * 32 + @space_modifier, self.contents.width, 32, @page_text[i].to_s) end end end end def next_page @index += 2 if $scene.pages[@index] != nil @page_text = IO.readlines($scene.directory + $scene.pages[@index]) else @page_text = [""] end refresh end def back_page @index -= 2 if $scene.pages[@index] != nil @page_text = IO.readlines($scene.directory + $scene.pages[@index]) else @page_text = [""] end refresh end end class Scene_Book attr_accessor :pages attr_accessor :directory def initialize(book_name) @directory = "Book/" + book_name.to_s + "/" @pages = Dir.entries(@directory.to_s) @pages.delete("..") @pages.delete(".") end def play_open Audio.se_play("Audio/SE/Book-Turn", 100, 100) end def play_close Audio.se_play("Audio/SE/Book-Close", 100, 100) end def play_turn Audio.se_play("Audio/SE/Book-Turn", 100, 150) end def main @menu_bg = Sprite.new @menu_bg.bitmap = RPG::Cache.picture("Book-None") if @pages[0] != nil @left_page_text = IO.readlines(@directory + @pages[0]) else @left_page_text = [""] end @left_page_window = Window_BookPage.new(@left_page_text, false) if @pages[1] != nil @right_page_text = IO.readlines(@directory + @pages[1]) else @right_page_text = [""] end @right_page_window = Window_BookPage.new(@right_page_text, false) @right_page_window.x = 320 @scene_index = 0 if @pages.size > 2 @scene_index_max = (@pages.size / 2).floor else @scene_index_max = 0 end update_background play_open Graphics.transition loop do Graphics.update Input.update update if $scene != self break end end Graphics.freeze @left_page_window.dispose @right_page_window.dispose @menu_bg.dispose end def update @left_page_window.update @right_page_window.update if Input.trigger?(Input::B) play_close $scene = Scene_Map.new return end if Input.trigger?(Input::LEFT) return if @scene_index == 0 @scene_index -= 1 @left_page_window.back_page @right_page_window.back_page update_background play_turn return end if Input.trigger?(Input::RIGHT) return if @scene_index == @scene_index_max @scene_index += 1 @left_page_window.next_page @right_page_window.next_page update_background play_turn return end end def update_background if @scene_index_max > @scene_index if @scene_index > 0 @menu_bg.bitmap = RPG::Cache.picture("Book-Both") else @menu_bg.bitmap = RPG::Cache.picture("Book-More") end else if @scene_index > 0 @menu_bg.bitmap = RPG::Cache.picture("Book-Less") else @menu_bg.bitmap = RPG::Cache.picture("Book-None") end end end end