はてな?RGSS(うらぐち) RSSフィード

10月5日の日記

メッセージボックス

複数行にも自在に対応できるようにしました。

画面いっぱいでもOK。

f:id:mr-80b:20051005224202j:image

ソース↓

class Msg
  def initialize
    @window = Window.new
    @window.x = 0
    @window.y = 480 - 64
    @window.height = 64
    @window.width = 640
    @window.z = 150
    @window.windowskin=RPG::Cache.windowskin("001-Blue01")
    set_opacity(0)
    @window.visible = false
  end
  def print(text,waitflag = 0)
    lines = text.split("\n")
    @window.contents = Bitmap.new(@window.width - 32, lines.size * 32)
    @window.y = 480 - 64 - (lines.size - 1) * 32
    @window.height = 64 + (lines.size - 1) * 32
    lines.each_with_index {| one_line,i |
      @window.contents.draw_text(0,i * 32,@window.width - 32, 32, one_line)
    }
    @window.visible = true
    set_opacity(100)
    set_opacity(200)
    set_opacity(225)
    if waitflag == 0
      @window.pause = true
      loop {
        Input.update
        if Input.trigger?(Input::C)
          break
        end
        @window.update
        $objects.each {| x |
          x.update
        }
        Graphics.update
      }
      @window.pause = false
      set_opacity(200)
      set_opacity(100)
      set_opacity(50)
      @window.visible = false
    end
  end
  def set_opacity(x)
    @window.opacity = x
    @window.contents_opacity = x
    @window.back_opacity = x
    @window.update
    Graphics.update
  end
end