All pastes #20520 Raw Edit

Someone

public ruby v1 · immutable
#20520 ·published 2005-08-20 05:39 UTC
rendered paste body
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  endendclass 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  endend