#==============================================================================
# ■ Cursor_Icon_type3 vol,1.30
# 07/09/04
#==============================================================================
module HIDE_CURSOR
  # ■カーソルアニメーションループ(配列数=2以上)
  ACT_ANIM = [2,3,4,3,2,1,0,1]
  # ■カーソルアニメーション速度(1以上)※大=遅い
  ACT_SPEED = 2
  # ■停止カーソルアニメーションループ(配列数=2以上)
  NEG_ANIM = [2,2]
  # ■停止カーソルアニメーション速度(1以上)※大=遅い
  NEG_SPEED = 1
  # ■カーソルアイコン画像(1パターン32x32)
  ICON = "cursor_anim"
  # ■デフォルトカーソルを使う[true/false]
  DEFAULT = false
end
#==============================================================================
# ■ Window_Base < Window
#==============================================================================
class Window_Base < Window
  #--------------------------------------------------------------------------
  # ■ ウィンドウの更新
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_cursor3_rect cursor_rect;end
  def cursor_rect=(cursor_rect)
    if HIDE_CURSOR::DEFAULT
      super
    end
    if self.cursor_rect.width == 0 or self.cursor_rect.height == 0 or 
      @index == -1 or self.visible == false
      # □カーソルの開放
      dispose_cursor3_icon
    else
      # □カーソルウィンドウの作成
      if @csr3_icon.nil? or @csr3_icon.disposed?
        make_cursor3_icon_window(self.x,self.y,self.width,self.height)
      end
      # □カーソルの更新
      update_cursor3_icon(self.x,self.y)
    end
  end
  #--------------------------------------------------------------------------
  # ■ カーソルの停止
  #--------------------------------------------------------------------------
  def active=(active)
    super
    unless @csr3_icon.nil? or @csr3_icon.disposed?
      @csr3_count = 0
      if active
        @csr3_animas = HIDE_CURSOR::ACT_ANIM
        @csr3_speed = HIDE_CURSOR::ACT_SPEED
        @csr3_icon.viewport.oy = 0
      else
        @csr3_animas = HIDE_CURSOR::NEG_ANIM
        @csr3_speed = HIDE_CURSOR::NEG_SPEED
        @csr3_icon.viewport.oy = 1*32
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ カーソルの更新
  #--------------------------------------------------------------------------
  def update
    # □ショップのアイテム個数バグの修正
    if @number == 1
      self.cursor_rect.width = self.cursor_rect.width
    end
    unless @csr3_icon.nil? or @csr3_icon.disposed?
      if @csr3_count.nil?
        @csr3_icon.viewport.z = self.z + 3
        @csr3_count = 0
      end
      #…………………………………………………………………………………………………
      # ■カーソルアニメの開始
      #…………………………………………………………………………………………………
      @csr3_icon.viewport.ox = @csr3_animas[@csr3_count/@csr3_speed]*32
      @csr3_count += 1
      if @csr3_count == @csr3_animas.size*@csr3_speed
        @csr3_count = 0
      end
    end
    super
  end
  #--------------------------------------------------------------------------
  # ■ X座標の更新
  #--------------------------------------------------------------------------
  def x=(x)
    make_cursor3_icon_window(x,self.y,self.width,self.height)
    super
  end
  #--------------------------------------------------------------------------
  # ■ Y座標の更新
  #--------------------------------------------------------------------------
  def y=(y)
    make_cursor3_icon_window(self.x,y,self.width,self.height)
    super
  end
  #--------------------------------------------------------------------------
  # ■ カーソルの開放
  #--------------------------------------------------------------------------
  def dispose_cursor3_icon
    unless @csr3_icon.nil? or @csr3_icon.disposed?
      @csr3_icon.viewport.dispose
      @csr3_icon.dispose
      @csr3_icon = nil
    end
  end
  #--------------------------------------------------------------------------
  # ■ カーソルウィンドウの作成
  #--------------------------------------------------------------------------
  def make_cursor3_icon_window(x,y,w,h)
    # □カーソルの開放
    dispose_cursor3_icon
    if w == 0 or h == 0 or self.cursor_rect == Rect.new(0,0,0,0)
      return
    end
    @csr3_animas = HIDE_CURSOR::ACT_ANIM
    @csr3_speed = HIDE_CURSOR::ACT_SPEED
    @csr3_icon = Sprite.new(Viewport.new(x,y,32,32))
    ##@csr3_icon.viewport.color = Color.new(255,255,255,50)
    @csr3_icon.bitmap = RPG::Cache.windowskin(HIDE_CURSOR::ICON)
    @csr3_icon.viewport.z = self.z + 3
    # □カーソルの更新
    update_cursor3_icon(x,y)
  end
  #--------------------------------------------------------------------------
  # ■ カーソルの更新
  #--------------------------------------------------------------------------
  def update_cursor3_icon(x,y)
    unless @csr3_icon.nil? or @csr3_icon.disposed?
      @csr3_icon.viewport.rect.x = self.cursor_rect.x + x
      @csr3_icon.viewport.rect.y = self.cursor_rect.y + y + 16
    end
  end
  #--------------------------------------------------------------------------
  # ■ カーソルウィンドウの削除
  #--------------------------------------------------------------------------
  if !$@;alias hidesp_cursor3_dispose dispose;end
  def dispose
    dispose_cursor3_icon
    super
  end
  #--------------------------------------------------------------------------
  # ■ カーソルウィンドウの可視化
  #--------------------------------------------------------------------------
  def visible=(visible)
    if visible == false
      dispose_cursor3_icon
    end
    super
  end
end