#==============================================================================
# ■ Open_Panel vol.3.00
#------------------------------------------------------------------------------
# ※『Window_digits_number 5.90以上』(必須)
# ※『Picture_Blink_Cursor 1.60以上』(必須)
# ※『Coin_Base 5.00以上』(必須)より下に挿入
# 12/04/22
#==============================================================================
module HIDE_PANEL
  #==============================================================================
  # ■ デバッグ(開発者用)
  #==============================================================================
  DEBUG = false                    # [true/false]
  #==============================================================================
  # ■ ゲーム設定
  #==============================================================================
  FARST_OPEN = 12                  # 最初のオープンパネル数(0〜25)
  OPEN_CHANCE = 10                 # パネルをオープンできる回数(1〜99)
  SPEED = 2                        # パネルのめくり速度(大=遅)
  PANEL_WAIT = 12                  # 最初のオープンパネルを閉じるまでの時間(1〜99)
  
  PC_STOP = true                   # ゲームの更新が止まった場合、パネルを中断する
  PC_STOP_COUNT = 0.2              # ゲーム停止時間(小=速い)
  #==============================================================================
  # ■ アイコン設定 ※Iconsフォルダ内のファイル名を指定
  #==============================================================================
  COIN_ICON = "icon_coin"          # コインのアイコン
  GOLD_ICON = "icon_gold"          # お金のアイコン
  #==============================================================================
  # ■ グラフィック設定 ※Windowskinsフォルダ内のファイル名を指定
  #==============================================================================
  BACK = "coin_background1"        # オープンパネルの背景画像
  MARK = "panel_mark"              # パネルマーク画像
  PANEL = "panel"                  # パネル画像
  SELECT = "cursor_back"           # カーソル画像
  CURSOR_ICON = "cursor_anim"      # カーソルアイコン画像
  CURSOR = "cursor_panel"          # パネル選択カーソル画像
  FRAME1 = "frame_emboss"          # ヘルプウィンドウ枠画像
  FRAME2 = "frame_line"            # アイテムウィンドウ枠画像
  FRAME3 = "frame_line3"           # コインウィンドウ枠画像
  #==============================================================================
  # ■ 選択肢とヘルプの設定
  #==============================================================================
  GAME_COMS = ["Start", "End"]
  GAME_HELPS = ["ゲームを開始します。", "ゲームを終了します。"]
  PANEL_HELP1 = "パネル"
  PANEL_HELP2 = "をオープンします。"
  # ※PANEL_HELP1 + 番号 + PANEL_HELP2 =パネル1をオープンします。
  PANEL_HELP3 = "全てのパネルをオープンしました。"
  PANEL_HELP4 = "決定キーで開始します。 待ち時間："
  PANEL_HELP5 = "はオープン済みです。"
  PANEL_HELP6 = "は1枚目に選択済みです。"
  #==============================================================================
  # ■ 音の設定 ※ファイル名を指定 ※Audioフォルダ内 #()のファイル名
  #==============================================================================
  BGM = "019-Field02"              # オープンパネル実行中のBGM(BGM)
  CHENGE_SE = "046-Book01"         # パネルめくりの効果音(SE)
  DECISION_SE = "002-System02"     # 決定キーの効果音(SE)
  CANCEL_SE = "003-System03"       # キャンセルキーの効果音(SE)
  BUZZER_SE = "004-System04"       # ブザー音の効果音(SE)
  HIT_SE = "015-Jump01"            # パネルが揃った場合の効果音(SE)
  NOT_SE = "017-Jump03"            # パネルが揃わない場合の効果音(SE)
  HIT_ME_MAX = "009-Fanfare03"     # 全てのパネルをオープンした場合の効果音(ME)
  SHUFFLE_ME = "016-Shock01"       # シャッフルオープンの効果音(ME)
  
  SHUFFLE_ME_TIME = 4              # シャッフルオープンの効果音(SHUFFLE_MEの演奏時間(秒))
  ME_MAX_TIME = 12                 # 大当りの待ち時間(HIT_ME_MAXの演奏時間(秒))
  #==============================================================================
  # ■ オープンパネルタイプの設定
  # COIN[n] = value　※n=タイプ番号($game_temp.panel_type から参照される)
  #==============================================================================
  COIN = [] # value=消費コイン
  COIN[0] = 500 #500枚賭け
  COIN[1] = 50
  COIN[2] = 5
  # □value=獲得コイン数(全てオープン)
  #==============================================================================
  # ■ パネルの絵柄パターンを設定(手動設定)
  #==============================================================================
  # PANELS[n] = [ value, ... ]
  # n=パターン番号(PATTERN[n]から参照される)
  # ※valueを必ず12個指定する
  # ※同じvalueを複数指定しない[w1,w1...]など
  # ※同じアイコンIDを使用するvalueを複数指定しない[w1,w2...]など
  #--------------------------------------------------------------------------
  # "i(ID)"      …i=アイテム,ID=アイテムID
  # "w(ID)"      …w=武器,ID=武器ID
  # "a(ID)"      …a=防具,ID=防具ID
  # "g(num)"     …g=お金,num=金額
  # "c(num)"     …c=コイン,num=枚数
  #==============================================================================
  PANELS = {}
  PANELS[0] = ["w1","w5","w9","w13","w17","w21","w25","w29","a1","a13","a25","i1"]
  PANELS[1] = ["c100","g1000","m9","w13","m7","w21","m5","w29","a1","m3","a25","m1"]
  PANELS[2] = ["m0","m1","m2","m3","m4","m5","m6","m7","m8","m9","m10","m11"]
  #==============================================================================
  # ■ パネルの絵柄パターン集を設定(手動設定)
  # ※指定したパネルの絵柄パターンからランダムに決定される
  #==============================================================================
  # PATTERN[n] = [ value, ... ]
  # n=パターン番号($game_temp.panel_pattern から参照される)
  # value= PANELS[n]のn番号を指定
  #==============================================================================
  PATTERN = {}
  PATTERN[0] = [0,0,0,1,1,1,2]
  
  #==============================================================================
  # ■ メニュー文字設定
  #==============================================================================
  WORD0 = "CONCENTRATION"
  WORD1 = "Coin"
  WORD2 = "Chance"
  WORD3 = "TIME UP!"
  WORD4 = "Item"
  WORD5 = "枚"
  #==============================================================================
  # ■ 文字色設定
  #==============================================================================
  A_COLOR = Color.new(255,255,255,255)     # 通常色
  B_COLOR = Color.new(0,0,0,255)           # 影色
  Z_COLOR = Color.new(255,0,0,255)         # チャンス0〜1回色
  F_COLOR = Color.new(255,255,0,255)       # アイテム名点滅色
  P_COLOR = Color.new(255,255,255,255)     # パネル点滅色
  S_COLOR = Color.new(255,255,0,255)       # システム色
  #--------------------------------------------------------------------------
  # 選択肢 の文字設定
  #--------------------------------------------------------------------------
  S_SIZE = 22                              # 文字サイズ
  S_BOLD = true                            # 太文字フラグ[true/false]
  S_ITALIC = false                         # 斜め文字フラグ[true/false]
  S_SHADOW = true                          # 影文字フラグ[true/false]
  S_ROUND = false                          # 囲み文字フラグ[true/false]
  S_NAME = ["Georgia","ＭＳ ゴシック"]     # フォント名
  #--------------------------------------------------------------------------
  # Help の文字設定
  #--------------------------------------------------------------------------
  H_SIZE = 16                              # 文字サイズ
  H_BOLD = false                           # 太文字フラグ[true/false]
  H_ITALIC = false                         # 斜め文字フラグ[true/false]
  H_SHADOW = false                         # 影文字フラグ[true/false]
  H_ROUND = false                          # 囲み文字フラグ[true/false]
  H_NAME = ["ＭＳ ゴシック"]               # フォント名
  #--------------------------------------------------------------------------
  # コイン の文字設定
  #--------------------------------------------------------------------------
  C_SIZE = 26                              # 文字サイズ
  C_BOLD = true                            # 太文字フラグ[true/false]
  C_ITALIC = false                         # 斜め文字フラグ[true/false]
  C_SHADOW = false                         # 影文字フラグ[true/false]
  C_ROUND = false                          # 囲み文字フラグ[true/false]
  C_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #--------------------------------------------------------------------------
  # カウントダウン数値 の文字設定
  #--------------------------------------------------------------------------
  D_SIZE = 18                              # 文字サイズ
  D_BOLD = true                            # 太文字フラグ[true/false]
  D_ITALIC = false                         # 斜め文字フラグ[true/false]
  D_SHADOW = true                          # 影文字フラグ[true/false]
  D_ROUND = false                          # 囲み文字フラグ[true/false]
  D_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #--------------------------------------------------------------------------
  # チャンス数値 の文字設定
  #--------------------------------------------------------------------------
  R_SIZE = 46                              # 文字サイズ
  R_BOLD = true                            # 太文字フラグ[true/false]
  R_ITALIC = false                         # 斜め文字フラグ[true/false]
  R_SHADOW = true                          # 影文字フラグ[true/false]
  R_ROUND = false                          # 囲み文字フラグ[true/false]
  R_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #--------------------------------------------------------------------------
  # アイテム の文字設定
  #--------------------------------------------------------------------------
  N_SIZE = 22                              # 文字サイズ
  N_BOLD = false                           # 太文字フラグ[true/false]
  N_ITALIC = false                         # 斜め文字フラグ[true/false]
  N_SHADOW = false                         # 影文字フラグ[true/false]
  N_ROUND = false                          # 囲み文字フラグ[true/false]
  N_NAME = ["ＭＳ ゴシック"]               # フォント名
  #--------------------------------------------------------------------------
  # システム の文字設定
  #--------------------------------------------------------------------------
  T_SIZE = 18                              # 文字サイズ
  T_BOLD = true                            # 太文字フラグ[true/false]
  T_ITALIC = false                         # 斜め文字フラグ[true/false]
  T_SHADOW = false                         # 影文字フラグ[true/false]
  T_ROUND = false                          # 囲み文字フラグ[true/false]
  T_NAME = ["Arial","ＭＳ ゴシック"]       # フォント名
  #==============================================================================
  
  #==============================================================================
  S_FONT = Copy_Font.new(S_SIZE,S_BOLD,S_ITALIC,S_SHADOW,S_ROUND,S_NAME,A_COLOR,B_COLOR)
  C_FONT = Copy_Font.new(C_SIZE,C_BOLD,C_ITALIC,C_SHADOW,C_ROUND,C_NAME,A_COLOR,B_COLOR)
  H_FONT = Copy_Font.new(H_SIZE,H_BOLD,H_ITALIC,H_SHADOW,H_ROUND,H_NAME,A_COLOR,B_COLOR)
  N_FONT = Copy_Font.new(N_SIZE,N_BOLD,N_ITALIC,N_SHADOW,N_ROUND,N_NAME,A_COLOR,B_COLOR)
  F_FONT = Copy_Font.new(N_SIZE,N_BOLD,N_ITALIC,false,false,N_NAME,A_COLOR,B_COLOR)
  T_FONT = Copy_Font.new(T_SIZE,T_BOLD,T_ITALIC,T_SHADOW,T_ROUND,T_NAME,S_COLOR,B_COLOR)
  D_FONT = Copy_Font.new(D_SIZE,D_BOLD,D_ITALIC,D_SHADOW,D_ROUND,D_NAME,A_COLOR,B_COLOR)
  R_FONT = Copy_Font.new(R_SIZE,R_BOLD,D_ITALIC,R_SHADOW,R_ROUND,R_NAME,A_COLOR,B_COLOR)
  M_FONT = Copy_Font.new(28,true,false,false,false,["Georgia","ＭＳ ゴシック"],A_COLOR,B_COLOR)
end
#==============================================================================
# ■ Scene_Panel
#==============================================================================
class Scene_Panel
  include HIDE_PANEL
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    game_reset?
    # □マップ BGM を記憶し、BGM を停止
    $game_temp.map_bgm = $game_system.playing_bgm
    $game_system.bgm_stop
    # □パネル BGM を演奏
    $game_system.bgm_play(RPG::AudioFile.new(HIDE_PANEL::BGM))
  end
  #--------------------------------------------------------------------------
  # ■ パネルの初期化
  #--------------------------------------------------------------------------
  def game_reset?
    # □パネルをオープンできる回数
    @open_count = HIDE_PANEL::OPEN_CHANCE
    # □アニメを行うパネルを格納
    @card = {}
    # □パネルの向きを格納
    @values = {}
    # □既に揃ったパネル配列
    @opens = []
    # □一時的に格納するパネル
    @pair = []
    # □既に揃ったパネルのペア配列
    @open_pairs = []
    # □アイテム表示順番を格納
    @numbers = []
    for c in 0...25
      @card[c] = false
      @values[c] = 8
    end
    @card_close = true
    @panel_step = 0
    @speed = HIDE_PANEL::SPEED
    # □パネルの初期状態(裏向き=8)
    @card_count = 8*@speed
    # □パネルのアニメーションフラグをOFF
    @move = false
    # □ゲーム実行中フラグをOFF
    @playing = false
  end
  #--------------------------------------------------------------------------
  # ■ メイン処理
  #--------------------------------------------------------------------------
  def main
    @coin = HIDE_PANEL::COIN[$game_temp.panel_type]
    #…………………………………………………………………………………………………
    # ■文字装飾を取得
    #…………………………………………………………………………………………………
    s_font = HIDE_PANEL::S_FONT ; h_font = HIDE_PANEL::H_FONT
    c_font = HIDE_PANEL::C_FONT ; n_font = HIDE_PANEL::N_FONT
    d_font = HIDE_PANEL::D_FONT ; r_font = HIDE_PANEL::R_FONT
    t_font = HIDE_PANEL::T_FONT ; m_font = HIDE_PANEL::M_FONT
    #…………………………………………………………………………………………………
    # ■パネルウィンドウ背景を作成
    #…………………………………………………………………………………………………
    @panel_window_back = Picture_Blink_Cursor.new(RPG::Cache.windowskin(HIDE_PANEL::BACK))
    frame = RPG::Cache.windowskin(HIDE_PANEL::FRAME1)
    @panel_window_back.draw_background(frame,16,440,320+32,32)
    frame = RPG::Cache.windowskin(HIDE_PANEL::FRAME2)
    @panel_window_back.draw_background(frame,384,16+24,240,396)
    frame = RPG::Cache.windowskin(HIDE_PANEL::FRAME3)
    @panel_window_back.draw_background(frame,384,440,160+80,32)
    #…………………………………………………………………………………………………
    # ■文字を描画
    #…………………………………………………………………………………………………
    @panel_window_back.draw_text(20,8,0,32,HIDE_PANEL::WORD0,0,m_font)
    @panel_window_back.draw_text(384+8,16,0,32,HIDE_PANEL::WORD4,0,t_font)
    @panel_window_back.draw_text(384+8,443,0,32,HIDE_PANEL::WORD1,0,t_font)
    wold = HIDE_PANEL::WORD1 + " x " + @coin.to_s
    @panel_window_back.draw_text(544,16,0,32,wold,2,t_font)
    #…………………………………………………………………………………………………
    # ■パネルウィンドウを作成
    #…………………………………………………………………………………………………
    helps = []
    for i in 0...25
      helps.push(HIDE_PANEL::PANEL_HELP1 + (i+1).to_s + HIDE_PANEL::PANEL_HELP2)
    end
    @panel_window = Window_select_panel.new(helps,h_font)
    #…………………………………………………………………………………………………
    # ■コイン数値ウィンドウを作成
    #…………………………………………………………………………………………………
    @coin_window = Window_digits_number.new(500-16,416+8,100,$game_party.coin,10,10,c_font)
    #…………………………………………………………………………………………………
    # ■カウントダウンウィンドウを作成
    #…………………………………………………………………………………………………
    @count_time = HIDE_PANEL::PANEL_WAIT
    @count_down_window = Window_digits_number.new(288,416+10,100,@count_time,2,0,d_font)
    @count_down_window.visible = false
    #…………………………………………………………………………………………………
    # ■残り回数ウィンドウを作成
    #…………………………………………………………………………………………………
    r_font.colors = [HIDE_PANEL::Z_COLOR]
    @count_window = Window_digits_number.new(364-32-16,384,100,@open_count,2,0,r_font)
    @panel_window_back.draw_text(260-16,408,0,32,HIDE_PANEL::WORD2,0,s_font)
    #…………………………………………………………………………………………………
    # ■ゲーム開始選択ウィンドウを作成
    #…………………………………………………………………………………………………
    com = HIDE_PANEL::GAME_COMS
    pic = RPG::Cache.windowskin(HIDE_PANEL::SELECT)
    icon = RPG::Cache.windowskin(HIDE_PANEL::CURSOR_ICON)
    helps = HIDE_PANEL::GAME_HELPS
    @game_select_window = Picture_Blink_Cursor.new(16,404,96,32,16-8,0,2,2)
    @game_select_window.draw_cursor(pic,com,s_font,icon)
    @game_select_window.start
    # □ヘルプウィンドウの関連付け
    @game_select_window.make_helps(16+4,416+24,helps,h_font)
    #…………………………………………………………………………………………………
    # ■PC_STOP/DEBUGウィンドウを作成
    #…………………………………………………………………………………………………
    @pc_stop_window = Picture_Blink_Cursor.new
    @pc_stop_window.start
    
    # □選択肢の文字色を初期化
    exchange_colors?
    # トランジション実行
    Graphics.transition
    # メインループ
    loop do
      # ゲーム画面を更新
      Graphics.update
      # 入力情報を更新
      Input.update
      # フレーム更新
      update
      # 画面が切り替わったらループを中断
      if $scene != self
        break
      end
    end
    # トランジション準備
    Graphics.freeze
    # ウィンドウを解放
    @panel_window_back.dispose
    @panel_window.dispose
    @coin_window.dispose
    @count_window.dispose
    @game_select_window.dispose
    @pc_stop_window.dispose
  end
  #--------------------------------------------------------------------------
  # ■ PC時間の取得
  #--------------------------------------------------------------------------
  def pc_time?
    unless HIDE_PANEL::PC_STOP
      return
    end
    # □PC時間を取得
    @pc_time = Time.now
    if Graphics.frame_count / Graphics.frame_rate != @pc_skip_sec
      # □PC時間を保存
      if @pc_old_time == nil
        @pc_old_time = Time.now
      end
      @pc_old_time += 1
    end
    @pc_skip_sec = Graphics.frame_count / Graphics.frame_rate
  end
  #--------------------------------------------------------------------------
  # ■ PC時間経過によるパネルの強制終了
  #--------------------------------------------------------------------------
  def pc_time_stop?
    # □PC時間を保存
    @pc_time = Time.now
    if @pc_old_time != nil
      return @pc_old_time < @pc_time - HIDE_PANEL::PC_STOP_COUNT
    else
      pc_time?
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ■ ゲームの終了
  #--------------------------------------------------------------------------
  def panel_end
    unless @playing
      # □ポーカー開始前の BGM に戻す
      $game_system.bgm_play($game_temp.map_bgm)
      # マップ画面に切り替え
      $scene = Scene_Map.new
      return
    end
  end
  #--------------------------------------------------------------------------
  # ■ 選択肢の色更新
  #--------------------------------------------------------------------------
  def exchange_colors?
    # □ゲーム選択色を変更
    @game_select_window.exchange[0] = $game_party.coin < @coin
    @game_select_window.refresh
  end
  #--------------------------------------------------------------------------
  # ■ 最初のオープンパネルを選択
  #--------------------------------------------------------------------------
  def first_open?
    opens = [] ; data = []
    for i in 0...25
      data.push(i)
    end
    while opens.size < HIDE_PANEL::FARST_OPEN
      n = rand(data.size)
      c = data[n]
      opens.push(c)
      data.delete_if{ |a| a == c }
    end
    return opens
  end
  #--------------------------------------------------------------------------
  # ■ アニメ開始フラグを初期化
  #--------------------------------------------------------------------------
  def reset_card?
    for i in 0...25
      @card[i] = false
    end
  end
  #--------------------------------------------------------------------------
  # ■ 揃ったパネルを取得
  #--------------------------------------------------------------------------
  def check_open?(num)
    check = false
    for i in @panel_window.panel_pair.keys
      data = @panel_window.panel_pair[i]
      if num.include?(data[0]) && num.include?(data[1])
        unless @open_pairs.include?(i)
          @panel_window.open_pair[i] = @numbers.size
          @open_pairs.push(i)
          @panel_window.panel[data[0]].scan(/([iwagcsm])([0-9]+)/)
          if $1 != "m"
            @numbers.push(i)
          end
          check = true
        end
      end
    end
    return check
  end
  #--------------------------------------------------------------------------
  # ■ デバッグ(カードの透明表示)
  #--------------------------------------------------------------------------
  def draw_debug
    if HIDE_PANEL::DEBUG
      @pc_stop_window.bitmap.clear
      for n in 0...@panel_window.panel.size
        b = @panel_window.panels[n].bitmap
        @pc_stop_window.bitmap.blt(16+(n%5)*72,40+(n/5)*72,b,Rect.new(0,64*0,64,64),250)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新(ゲーム開始)
  #--------------------------------------------------------------------------
  def update_select
    #…………………………………………………………………………………………………
    # ■ C ボタンが押された場合
    #…………………………………………………………………………………………………
    if Input.trigger?(Input::C)
      unless @move
        case @game_select_window.index
        when 0 #□ゲーム開始
          if $game_party.coin >= @coin
            # □デバッグ(カードの透明表示)
            draw_debug
            # □PC時間経過によるパネルの強制終了の初期化
            unless HIDE_PANEL::DEBUG
              @pc_stop_window.bitmap.clear
              @pc_stop_window.active = false
            end
            # □PC時間経過によるパネルの強制終了の初期化
            @playing = true
            @card_close = true
            # □初めにめくるパネルを選択
            @opens = first_open?
            for i in @opens
              @card[i] = true
              @values[i] = 16
            end
            # □ヘルプの更新
            helps = @game_select_window.helps.dup
            helps[0] = HIDE_PANEL::PANEL_HELP4
            @game_select_window.helps = helps
            @game_select_window.active = false
            @game_select_window.help_visible = true
            # □第2カーソルの開放
            @panel_window.index2 = -1
            @count_down_window.visible = true
            @panel_step = 1
          else
            # ブザー SE を演奏
            $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::BUZZER_SE))
            @panel_step = 0
            @playing = false
          end
        when 1 #□ゲーム終了
          # □決定SEを演奏
          $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::DECISION_SE))
          panel_end
        end
      end
      return
    end
    #…………………………………………………………………………………………………
    # ■ B ボタンが押された場合
    #…………………………………………………………………………………………………
    if Input.trigger?(Input::B)
      # □キャンセルSEを演奏
      $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::CANCEL_SE))
      @playing = false
      panel_end
      return
    end
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新(パネルの選択)
  #--------------------------------------------------------------------------
  def update_panel
    unless @move
      #…………………………………………………………………………………………………
      # ■ C ボタンが押された場合
      #…………………………………………………………………………………………………
      if Input.trigger?(Input::C)
        #…………………………………………………………………………………………………
        # ■ 既にオープンのパネルを選択した場合
        #…………………………………………………………………………………………………
        if @opens.include?(@panel_window.index) or @pair.include?(@panel_window.index)
          # □ブザーSEを演奏
          $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::BUZZER_SE))
          return
        end
        @panel_window.active = false
        @panel_window.help_visible = true
        reset_card?
        if @values[@panel_window.index] == 8 && @card_close
          @card_close = false
        end
        #…………………………………………………………………………………………………
        # ■ 裏から表に変わるアニメーションを実行
        #…………………………………………………………………………………………………
        if @card_close == false
          @card_close = true
          @card[@panel_window.index] = true
          @card_count = @speed * 8
        end
        @panel_step = 4
        return
      end
      #…………………………………………………………………………………………………
      # ■ B ボタンが押された場合
      #…………………………………………………………………………………………………
      if Input.trigger?(Input::B)
        # □キャンセルSEを演奏
        $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::CANCEL_SE))
        # □表向きのパネルを全て裏向きに変更する
        move_close?
        @panel_step = 13
        return
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ フレーム更新
  #--------------------------------------------------------------------------
  def update
    if @pc_stop_window.active
      @pc_stop_window.update
    end
    #…………………………………………………………………………………………………
    # ■ PC時間経過によるパネルの強制終了
    #…………………………………………………………………………………………………
    if pc_time_stop? && HIDE_PANEL::PC_STOP && HIDE_PANEL::DEBUG == false
      # □表向きのパネルを全て裏向きに変更する
      move_close?
      @panel_step = 13
      # □初期化
      @pc_old_time = nil
      pc_time?
      @pc_stop_window.bitmap.clear
      @pc_stop_window.bitmap.draw_cache_text(272,16,0,0,HIDE_PANEL::WORD3,0,HIDE_PANEL::D_FONT)
      @pc_stop_window.active = true
      return
    end
    #…………………………………………………………………………………………………
    # ■ PC時間を取得
    #…………………………………………………………………………………………………
    pc_time?
    #…………………………………………………………………………………………………
    # ■ 回転数値の更新(所持コイン)
    #…………………………………………………………………………………………………
    @coin_window.update($game_party.coin)
    @count_window.update(@open_count,@open_count < 2 ? 1 : 0)
    #…………………………………………………………………………………………………
    # ■ ゲーム開始ウィンドウの更新
    #…………………………………………………………………………………………………
    if @game_select_window.active
      @game_select_window.update
      update_select
    end
    #…………………………………………………………………………………………………
    # ■ パネルウィンドウの更新
    #…………………………………………………………………………………………………
    if @panel_window.active
      @panel_window.update
      update_panel
    end
    #…………………………………………………………………………………………………
    # ■ ゲームの流れ
    #…………………………………………………………………………………………………
    case @panel_step
    when 1
      # □コインを減らす(賭け金)
      if $game_party.coin >= @coin
        $game_party.lose_coin(@coin)
        # □ゲーム選択色を変更
        exchange_colors?
        # □ヘルプの更新
        @panel_window.make_helps(nil)
        @playing = true
        @panel_step = 2
      else
        # ブザー SE を演奏
        $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::BUZZER_SE))
        @panel_step = 0
        @playing = false
      end
      return
    when 2
      # □パネルの開始
      if card_anim?(@card_close,@card)
        @panel_step = 8
      end
      return
    when 3
      @panel_window.visible = true
      # □交換するパネルの選択待ち
      return
    when 4
      # □交換するパネルの向きを変更(個別)
      if card_anim?(@card_close,@card)
        @panel_step = 5
      end
      return
    when 5
      #…………………………………………………………………………………………………
      # ■ シャッフルパネルの場合
      #…………………………………………………………………………………………………
      @panel_window.panel[@panel_window.index].scan(/([iwagcsm])([0-9]+)/)
      if $1 == "s"
        # □2枚目の場合は、1枚目を削除
        if @pair.size == 1
          # □第2カーソルの開放
          @panel_window.index2 = -1
          @opens.delete_if{ |a| a == @pair[0] }
        end
        @pair = []
        # □シャッフルパネルを追加
        @opens.push(@panel_window.index)
        # □全パネルをオープンした場合
        if @opens.size == 25
          @panel_step = 14
          return
        end
        @time = 20
        @panel_step = 17
        return
      end
      #…………………………………………………………………………………………………
      # ■ 1枚目の場合は戻る
      #…………………………………………………………………………………………………
      @pair.push(@panel_window.index)
      if @pair.size == 1
        # □ヘルプの更新
        @panel_window.make_helps([@pair[0]],2)
        @panel_window.active = true
        @panel_step = 3
        # □第2カーソルの表示
        @panel_window.index2 = @panel_window.index
        return
      end
      #…………………………………………………………………………………………………
      # ■ パネルが揃った場合(パネルを取得)
      #…………………………………………………………………………………………………
      if check_open?(@pair)
        @time = 6
        # □待ち時間
        while @time > 0
          # ゲーム画面を更新
          @pc_old_time = nil ; Graphics.update
          @time -= 1
        end
        # □パネルが揃った SE を演奏
        $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::HIT_SE))
        # □第2カーソルの開放
        @panel_window.index2 = -1
        @opens.push(@pair[0])
        @opens.push(@pair[1])
        # □アイテムを描画
        @panel_window.draw_item?
        # □ヘルプの更新
        @panel_window.make_helps(@opens)
        @pair = []
        #…………………………………………………………………………………………………
        # ■ 全パネルをオープンした場合
        #…………………………………………………………………………………………………
        if @opens.size == 25
          @panel_step = 14
          return
        end
        @panel_window.active = true
        @panel_step = 3
        return
      #…………………………………………………………………………………………………
      # ■ パネルが揃わなかった場合
      #…………………………………………………………………………………………………
      else
        @time = 6
        # □待ち時間
        while @time > 0
          # ゲーム画面を更新
          @pc_old_time = nil ; Graphics.update
          @time -= 1
        end
        # □パネルが揃わなかった SE を演奏
        $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::NOT_SE))
        # □オープン回数を減らす
        @open_count -= 1
        # □第2カーソルの開放
        @panel_window.index2 = -1
        if @open_count <= 0
          # □表向きのパネルを全て裏向きに変更する
          move_close?
          @panel_window.visible = false
          @time = 20
          @panel_step = 18
          return
        end
        reset_card?
        if @values[@panel_window.index] == 16 && @card_close == false
          @card_close = true
        end
        # □表から裏に変わるアニメーションを実行
        if @card_close == true
          @card_close = false
          @card[@pair[0]] = true
          @card[@pair[1]] = true
          @card_count = 0
        end
        @time = 20
        @panel_step = 6
      end
      return
    when 6
      # □待ち時間(オープンしたパネルを戻す)
      while @time > 0
        # ゲーム画面を更新
        @pc_old_time = nil ; Graphics.update
        @time -= 1
      end
      # □ヘルプの更新
      @panel_window.make_helps([@pair[0]],3)
      @opens.delete_if{ |a| a == @pair[0] }
      @opens.delete_if{ |a| a == @pair[1] }
      @panel_step = 7
      return
    when 7
      # □交換するパネルの向きを変更
      if card_anim?(@card_close,@card)
        @pair = []
        @panel_window.active = true
        @panel_step = 3
      end
      return
    when 8
      reset_card?
      if @values[@panel_window.index] == 16 && @card_close == false
        @card_close = true
      end
      # □表から裏に変わるアニメーションを実行
      if @card_close == true
        @card_close = false
        for i in @opens
          @card[i] = true
        end
        @card_count = 0
      end
      # □パネル選択の開始
      @time = 400
      @panel_step = 9
      return
    when 9
      # □待ち時間(最初のオープンパネルを戻す)
      while @time > 0
        # ゲーム画面を更新@pc_old_time = nil
        pc_time? ; Graphics.update
        # □回転数値の更新(所持コイン)
        @coin_window.update($game_party.coin)
        if @count_down_window.count_down(@count_time)
          @count_down_window.visible = false
          @count_down_window.count_stop(@count_time)
          @count_down_window.refresh(@count_time)
          @time = 0
        end
        # 入力情報を更新
        Input.update
        # □決定キーが押された場合はカウントダウンの終了
        if Input.trigger?(Input::C)
          @count_down_window.visible = false
          @count_down_window.count_stop(@count_time)
          @count_down_window.refresh(@count_time)
          @time = 0
        end
      end
      @game_select_window.active = false
      @game_select_window.helps = HIDE_PANEL::GAME_HELPS
      @opens = []
      @panel_step = 10
      return
    when 10
      # □交換するパネルの向きを変更
      if card_anim?(@card_close,@card)
        @panel_step = 11
      end
      return
    when 11
      # □パネル交換の処理フラグをON
      @panel_window.active = true
      @panel_window.index = 0
      @panel_window.visible = true
      @panel_step = 3
      return
    when 12
      # □待ち時間(シャッフルME演奏待ち)
      while @time > -1
        # □ゲーム画面を更新
        @pc_old_time = nil ; Graphics.update
        @panel_window.item_window.update_count
        if @panel_window.item_window.count?
          @time -= 1
        end
      end
      # □新しいパターンのパネルに更新(アニメ無し)
      @panel_window.draw_panel?(@new_pattern,@values)
      # □デバッグ(カードの透明表示)
      draw_debug
      # □パネルの更新(アニメ無し)
      @panel_window.make_panel?(@panel_window.panel,@values)
      @panel_window.active = true
      @panel_step = 3
      return
    when 13
      # □交換するパネルの向きを変更
      if card_anim?(@card_close,@card)
        game_reset?
        @panel_window.refresh
        panel = @panel_window.make_pattern?
        @panel_window.draw_panel?(panel,[8]*25)
        @panel_window.make_panel?(panel,[8]*25)
        @panel_window.draw_item?
        @panel_window.active = false
        @panel_window.visible = false
        # □ヘルプの更新
        @game_select_window.helps = GAME_HELPS
        @game_select_window.index = 0
        @game_select_window.active = true
        @game_select_window.visible = true
        @panel_step = 0
      end
      return
    when 14
      # □パネルを全てオープンした場合
      if @opens.size == 25
        @panel_window.visible = false
        @panel_window.help_visible = false
        # □ヘルプの更新
        helps = @game_select_window.helps.dup
        helps[0] = HIDE_PANEL::PANEL_HELP3
        @game_select_window.helps = helps
        @game_select_window.help_visible = true
        # □アイテムの獲得
        @panel_window.gain_treasures?
        $game_system.me_play(RPG::AudioFile.new(HIDE_PANEL::HIT_ME_MAX))
        @time = HIDE_PANEL::ME_MAX_TIME
        @panel_step = 15
      end
      return
    when 15
      while @time > -1
        # □ゲーム画面を更新
        @pc_old_time = nil ; Graphics.update
        # □回転数値の更新(所持コイン)
        @coin_window.update($game_party.coin)
        # □当りの演出を更新
        @panel_window.item_window.update_count
        if @panel_window.item_window.count?
          @time -= 1
        end
        @panel_window.flash
      end
      # □パネルの点滅更新を終了
      @panel_window.flash_end
      @panel_step = 16
      return
    when 16
      # □表向きのパネルを全て裏向きに変更する
      move_close?
      @panel_step = 13
      return
    when 17
      # □待ち時間(シャッフル待ち)
      while @time > 0
        # ゲーム画面を更新
        @pc_old_time = nil ; Graphics.update
        @time -= 1
      end
      # □表向きのパネルを全て裏向きに変更する
      move_close?
      for i in @values.keys
        @values[i] = 8
      end
      old_opens = []
      for i in @opens
        old_opens.push(@panel_window.panel[i])
      end
      # □新しいパターンを取得
      @new_pattern = @panel_window.make_pattern?
      new_opens = []
      for i in 0...@new_pattern.size
        for n in old_opens
          if @new_pattern[i] == n && ! new_opens.include?(i)
            new_opens.push(i)
          end
        end
      end
      for i in 0...25
        if new_opens.include?(i)
          @values[i] = 0
        else
          @values[i] = 8
        end
      end
      @opens = new_opens.uniq
      # □ヘルプの更新
      @panel_window.make_helps(nil)
      @panel_window.make_helps(@opens,0)
      # □シャッフル効果音を演奏
      $game_system.me_play(RPG::AudioFile.new(HIDE_PANEL::SHUFFLE_ME))
      @time = HIDE_PANEL::SHUFFLE_ME_TIME
      @panel_step = 12
      return
    when 18
      # □待ち時間(当り)
      while @time > 0
        # ゲーム画面を更新
        @pc_old_time = nil ; Graphics.update
        @time -= 1
        # □回転数値の更新(所持コイン)
        @coin_window.update($game_party.coin)
      end
      @panel_step = 16
      return
    end
  end
  #--------------------------------------------------------------------------
  # ■ パネルめくりSEを演奏を許可？
  #--------------------------------------------------------------------------
  def se_play?
    se = {}
    for i in 0...25
      se[i] = false
    end
    return se
  end
  #--------------------------------------------------------------------------
  # ■ 表のパネルを裏にする設定
  #--------------------------------------------------------------------------
  def move_close?
    @card_close = false
    for i in @values.keys
      if @values[i] == 8
        @card[i] = false
      else
        @card[i] = true
      end
    end
    @card_count = 0
  end
  #--------------------------------------------------------------------------
  # ■ パネルのアニメーションを実行
  #--------------------------------------------------------------------------
  def card_anim?(close,num)
    @panel_window.visible = false
    #…………………………………………………………………………………………………
    # ■ 裏から表に変わるアニメーションを実行
    #…………………………………………………………………………………………………
    if close
      card_pos = @speed * 16
    #…………………………………………………………………………………………………
    # ■ 表から裏に変わるアニメーションを実行
    #…………………………………………………………………………………………………
    else
      card_pos = @speed * 8
    end
    #…………………………………………………………………………………………………
    # ■ パネルめくりSEを演奏
    #…………………………………………………………………………………………………
    unless @move
      if @card != se_play?
        $game_system.se_play(RPG::AudioFile.new(HIDE_PANEL::CHENGE_SE))
      end
    end
    #…………………………………………………………………………………………………
    # ■ アニメーションを実行
    #…………………………………………………………………………………………………
    if @card_count != card_pos
      @card_count += 1
      if @card_count % @speed == 0
        for i in num.keys
          if num[i] == true
            @values[i] = @card_count/@speed
          end
        end
        @move = true
        @panel_window.make_panel?(@panel_window.panel,@values)
      end
    elsif @card_count >= card_pos
      @move = false
      return true
    end
    return false
  end
end
#==============================================================================
# ■ Window_select_panel
#==============================================================================
class Window_select_panel
  include HIDE_PANEL
  attr_accessor :panel
  attr_accessor :panel_pair
  attr_accessor :open_pair
  attr_accessor :panels
  attr_accessor :item_window
  #--------------------------------------------------------------------------
  # ■ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(helps,h_font)
    pic = RPG::Cache.windowskin(HIDE_PANEL::CURSOR)
    icon = RPG::Cache.windowskin(HIDE_PANEL::CURSOR_ICON)
    @cursor_window = Picture_Blink_Cursor.new(8,32,80,80,-8,-8,25,5)
    @cursor_window.draw_back = false
    @cursor_window.draw_cursor(pic,nil,nil,icon)
    @cursor_window.make_helps(20,440,helps,h_font)
    #…………………………………………………………………………………………………
    # ■アイテム描画ウィンドウの作成
    #…………………………………………………………………………………………………
    @item_window = Picture_Blink_Cursor.new(Bitmap.new(640,480))
    @item_window.x = 392
    @item_window.y = 44
    #…………………………………………………………………………………………………
    # ■フラッシュウィンドウの作成
    #…………………………………………………………………………………………………
    @item_flash_window = Picture_Blink_Cursor.new(Bitmap.new(640,480))
    @item_flash_window.visible = false
    @item_flash_window.x = 392
    @item_flash_window.y = 44
    @bitmaps = {}
    @bitmaps_flash = {}
    @helps = helps
    @h_font = h_font
    refresh
    # □パネルの作成
    make_window
    @panel_flash = 150
    if @new_helps == nil or type == 0
      @helps1 = [] ; @helps2 = []
      for i in 0...25
        @helps1.push(HIDE_PANEL::PANEL_HELP1 + (i+1).to_s + HIDE_PANEL::PANEL_HELP5)
        @helps2.push(HIDE_PANEL::PANEL_HELP1 + (i+1).to_s + HIDE_PANEL::PANEL_HELP6)
      end
      @new_helps = @helps.dup
    end
  end
  #--------------------------------------------------------------------------
  # ■ ヘルプの更新
  #--------------------------------------------------------------------------
  def make_helps(opens,type = 1)
    if opens == nil
      @cursor_window.make_helps(16+4,416+24,@helps,@h_font)
      @new_helps = @helps.dup
      return
    end
    for n in opens
      case type
      when 0,1 #オープン済み
        @new_helps[n] = @helps1[n]
      when 2 #1枚目を選択
        @new_helps[n] = @helps2[n]
      when 3 #1枚目を戻す
        @new_helps[n] = @helps[n]
      end
    end
    @cursor_window.make_helps(16+4,416+24,@new_helps,@h_font)
  end
  #--------------------------------------------------------------------------
  # ■ カーソル更新を返す
  #--------------------------------------------------------------------------
  def active
    return @cursor_window.active
  end
  #--------------------------------------------------------------------------
  # ■ カーソルを更新
  #--------------------------------------------------------------------------
  def active=(active)
    @cursor_window.active = active
  end
  #--------------------------------------------------------------------------
  # ■ カーソル位置を更新
  #--------------------------------------------------------------------------
  def index=(index)
    @cursor_window.index = index
  end
  #--------------------------------------------------------------------------
  # ■ カーソル位置を更新
  #--------------------------------------------------------------------------
  def index2=(index2)
    @cursor_window.index2 = index2
  end
  #--------------------------------------------------------------------------
  # ■ カーソル位置を返す
  #--------------------------------------------------------------------------
  def index
    return @cursor_window.index
  end
  #--------------------------------------------------------------------------
  # ■ カーソルウィンドウの可視化
  #--------------------------------------------------------------------------
  def visible=(visible)
    @cursor_window.visible = visible
  end
  #--------------------------------------------------------------------------
  # ■ ヘルプウィンドウの可視化
  #--------------------------------------------------------------------------
  def help_visible=(help_visible)
    @cursor_window.help_visible = help_visible
  end
  #--------------------------------------------------------------------------
  # ■ パネルの更新
  #--------------------------------------------------------------------------
  def update
    @cursor_window.update
  end
  #--------------------------------------------------------------------------
  # ■ パネルの点滅更新
  #--------------------------------------------------------------------------
  def flash
    if @blink_opa
      if @panel_flash >= 150
        @blink_opa = false
      end
      @back_opa = -5
    else
      if @panel_flash <= 0
        @blink_opa = true
      end
      @back_opa = 5
    end
    f1 = HIDE_PANEL::P_COLOR
    f2 = HIDE_PANEL::F_COLOR
    @panel_flash -= @back_opa
    @panels.each{ |a| a.flash(Color.new(f1.red,f1.green,f1.blue,@panel_flash),0) }
    @item_flash_window.visible = true
    @item_flash_window.flash(Color.new(f2.red,f2.green,f2.blue,@panel_flash),0)
  end
  #--------------------------------------------------------------------------
  # ■ パネルの点滅更新の終了
  #--------------------------------------------------------------------------
  def flash_end
    @panel_flash = 150
    @panels.each{ |a| a.flash(Color.new(0,0,0,0),0) }
    @item_flash_window.flash(Color.new(0,0,0,0),0)
    @item_flash_window.visible = false
  end
  #--------------------------------------------------------------------------
  # ■ アイテムの獲得
  #--------------------------------------------------------------------------
  def gain_treasures?
    for treasure in HIDE_PANEL::PANELS[@rand_num]
      treasure.scan(/([iwagcsm])([0-9]+)/)
      type = $1 ; id = $2
      case type
      when "i"
        $game_party.gain_item(id.to_i,1)
      when "w"
        $game_party.gain_weapon(id.to_i,1)
      when "a"
        $game_party.gain_armor(id.to_i,1)
      when "g" # お金
        $game_party.gain_gold(id.to_i)
      when "c" # コイン
        $game_party.gain_coin(id.to_i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ 初期化
  #--------------------------------------------------------------------------
  def refresh
    @rand_num = nil
    @panel_pair = {} ; @open_pair = {}
    for i in 0...13
      @panel_pair[i] = [] ; @open_pair[i] = nil
    end
  end
  #--------------------------------------------------------------------------
  # ■ パネルの作成
  #--------------------------------------------------------------------------
  def make_window
    @panels = [] ; @viewports = []
    for i in 0...25
      x = (i%5*64)+(i%5+1)*8+8
      y = (i/5*64)+(i/5*8)+40
      @viewports[i] = Viewport.new(x,y,64,64)
      @panels[i] = Sprite.new(@viewports[i])
      @panels[i].bitmap = Bitmap.new(64,64*16)
    end
    @panel = make_pattern?
    draw_panel?(@panel,[8]*25)
    make_panel?(@panel,[8]*25)
  end
  #--------------------------------------------------------------------------
  # ■ 解放
  #--------------------------------------------------------------------------
  def dispose
    @viewports.each{ |a| a.dispose }
    @panels.each{ |a| a.bitmap.dispose }
    @panels.each{ |a| a.dispose }
    @item_window.bitmap.dispose
    @item_window.dispose
    @item_flash_window.bitmap.dispose
    @item_flash_window.dispose
    @cursor_window.dispose
    @bitmaps.each{ |a| a[1].dispose }
  end
  #--------------------------------------------------------------------------
  # ■ パネルパターンを作成
  #--------------------------------------------------------------------------
  def make_pattern?
    patterns = [] ; data = []
    if @rand_num == nil
      pa = HIDE_PANEL::PATTERN[$game_temp.panel_pattern]
      @rand_num = pa[rand(pa.size)]
    end
    panels = HIDE_PANEL::PANELS[@rand_num]
    panels.push("s0")
    for i in 0...25
      data.push(i)
    end
    while data != []
      n = rand(data.size)
      c = data[n]
      if c > 12
        @panel_pair[c-13][1] = patterns.size
        patterns.push(panels[c-13])
      else
        @panel_pair[c][0] = patterns.size
        patterns.push(panels[c])
      end
      data.delete_if{ |a| a == c }
    end
    return patterns
  end
  #--------------------------------------------------------------------------
  # ■ パネル絵柄の作成
  #--------------------------------------------------------------------------
  def check_panel?(n)
    data = @panel[n]
    name = "" ; icon_name = ""
    rect = Rect.new(0,0,24,24)
    data.scan(/([iwagcsm])([0-9]+)/)
    type = $1 ; id = $2
    x = 0 ; y = 0
    case type
    when "i"
      name = $data_items[id.to_i].name
      icon = RPG::Cache.icon($data_items[id.to_i].icon_name)
    when "w"
      name = $data_weapons[id.to_i].name
      icon = RPG::Cache.icon($data_weapons[id.to_i].icon_name)
    when "a"
      name = $data_armors[id.to_i].name
      icon = RPG::Cache.icon($data_armors[id.to_i].icon_name)
    when "g" # お金
      name = id.to_s + $data_system.words.gold
      icon = RPG::Cache.icon(HIDE_PANEL::GOLD_ICON)
    when "c" # コイン
      name = id.to_s + HIDE_PANEL::WORD5
      icon = RPG::Cache.icon(HIDE_PANEL::COIN_ICON)
    when "m" # 絵柄パネル
      icon = RPG::Cache.windowskin(HIDE_PANEL::MARK)
      rx = id.to_i%6*64
      ry = id.to_i/6*64
      rect = Rect.new(rx,ry,64,64)
    when "s" # シャッフルパネル
      icon = nil
    end
    # □アイコン描画位置を取得
    case type
    when "i","w","a","g","c"
      x = (64-icon.width)/2
      y = (64-icon.height)/2
    end
    bitmap = Bitmap.new(64,64)
    pic = RPG::Cache.windowskin(HIDE_PANEL::PANEL)
    # □パネルの作成
    for i in @panel_pair.keys
      if @panel_pair[i].include?(n)
        bitmap.blt(0,0,pic,Rect.new((i%6)*64,(i/6)*64,64,64))
        if icon != nil
          bitmap.blt(x,y,icon,rect)
        end
        bitmap.blt(0,0,pic,Rect.new(64,64*2,64,64))
        break
      end
    end
    #…………………………………………………………………………………………………
    # ■アイテム名+アイコンをBitmap描画して保管
    #…………………………………………………………………………………………………
    if name != "" && ! @bitmaps.include?(data)
      item_bitmap = Bitmap.new(320,32)
      item_bitmap.blt(4,4,icon,Rect.new(0,0,24,24))
      n_font = HIDE_PANEL::N_FONT
      f_font = HIDE_PANEL::F_FONT
      item_bitmap.draw_cache_text(28+4,0,212,32,name,0,n_font)
      @bitmaps[data] = item_bitmap
      flash_bitmap = Bitmap.new(320,32)
      flash_bitmap.draw_cache_text(28+4,0,212,32,name,0,f_font)
      @bitmaps_flash[data] = flash_bitmap
    end
    return bitmap
  end
  #--------------------------------------------------------------------------
  # ■ アイテムの描画
  #--------------------------------------------------------------------------
  def draw_item?
    @item_window.bitmap.clear
    @item_flash_window.bitmap.clear
    n = 0
    for i in @open_pair.keys
      if @open_pair[i] != nil
        key = @panel[@panel_pair[i][0]]
        pic = @bitmaps[key]
        fpic = @bitmaps_flash[key]
        if pic != nil
          @item_window.bitmap.blt(0,@open_pair[i]*32,pic,Rect.new(0,0,320,32))
          @item_flash_window.bitmap.blt(0,@open_pair[i]*32,fpic,Rect.new(0,0,320,32))
        else
          n += 1
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ■ パネルの描画
  #--------------------------------------------------------------------------
  def draw_panel?(panel,type = [8]*25)
    @panel = panel
    for i in 0...25
      @panels[i].bitmap.clear
      pic = check_panel?(i)
      shadow = RPG::Cache.windowskin(HIDE_PANEL::PANEL)
      @panels[i].bitmap.blt(0,0,pic,Rect.new(0,0,64,64))
      for n in 1..3
        rect = Rect.new(8*n,64*n,64-n*16,64)
        @panels[i].bitmap.stretch_blt(rect,pic,Rect.new(0,0,64,64))
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*3,64*2,64,64))
      end
      rect = Rect.new(31,64*4,2,64)
      @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*5,64*2,64,64))
      for n in 1..3
        rect = Rect.new(8*(4-n),64*(n+4),64-(4-n)*16,64)
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*2,64*2,64,64))
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*4,64*2,64,64))
      end
      @panels[i].bitmap.blt(0,64*8,shadow,Rect.new(64*2,64*2,64,64))
      for n in 1..3
        rect = Rect.new(8*n,64*(n+8),64-n*16,64)
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*2,64*2,64,64))
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*3,64*2,64,64))
      end
      rect = Rect.new(31,64*12,2,64)
      @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*5,64*2,64,64))
      for n in 1..3
        rect = Rect.new(8*(4-n),64*(n+12),64-(4-n)*16,64)
        @panels[i].bitmap.stretch_blt(rect,pic,Rect.new(0,0,64,64))
        @panels[i].bitmap.stretch_blt(rect,shadow,Rect.new(64*4,64*2,64,64))
      end
      @panels[i].bitmap.blt(0,64*16,pic,Rect.new(0,0,64,64))
    end
  end
  #--------------------------------------------------------------------------
  # ■ パネルの更新
  #--------------------------------------------------------------------------
  def make_panel?(panel,type = [8]*25)
    @panel = panel
    for i in 0...25
      @panels[i].oy = 64*type[i]
      if type[i] == 16
        @panels[i].oy = 0
      end
    end
  end
end