#==============================================================================
#                   「顔グラを歩行グラに置換」(ACE) ver.1.1
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#   その他、詳しい利用規約はブログを参照して下さい。
#
#------------------------------------------------------------------------------
#
#   アクターの顔グラフィック表示を
#   アクターの歩行グラフィックに置き換えます。
#   
#   初期設定で画面ごとに設定が出来るので
#   true(適用する)とfalse(適用しない)を切り替えて下さい。
#   
#   また全てのウィンドウに適用するを選ぶと
#   スクリプト素材で追加した画面にも適用されるようになります。
#
#==============================================================================
#◇初期設定
module Nana_FGtoCG
  
  X_MOD = 48      #横方向の位置調整
  Y_MOD = 80      #縦方向の位置調整
  
  
  ALL = false      #全てのウィンドウに適用(true / false)
  
  MENU = true     #メニュー画面に適用(true / false)
  SKILL = true    #スキル画面に適用(true / false)
  STATUS = true   #ステータス画面に適用(true / false)
  NAME = true     #名前入力画面に適用(true / false)
  
  DIRECTION = 2   #歩行グラフィックの向き(下2:左4:右6:上8)
  
end  

#==============================================================================
# ■ Window_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのウィンドウのスーパークラスです。
#==============================================================================

class Window_Base < Window
  #--------------------------------------------------------------------------
  # ● 歩行グラフィックの描画
  #     enabled : 有効フラグ。false のとき半透明で描画
  #--------------------------------------------------------------------------
  def draw_character(character_name, character_index, x, y, enabled = true)
    return unless character_name
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    drc = Nana_FGtoCG::DIRECTION / 2 - 1
    src_rect = Rect.new((n%4*3+1)*cw, (n/4*4+drc)*ch, cw, ch)
    contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : translucent_alpha)
  end
  
  if Nana_FGtoCG::ALL == true
  #--------------------------------------------------------------------------
  # ● アクターの顔グラフィック描画
  #--------------------------------------------------------------------------
  def draw_actor_face(actor, x, y, enabled = true)
    x += Nana_FGtoCG::X_MOD
    y += Nana_FGtoCG::Y_MOD
    draw_character(actor.character_name, actor.character_index, x, y, enabled)
  end
  end

end


#==============================================================================
# 個別のウィンドウ処理:
# baseを変更⇔個別に戻す / baseを無変更⇔個別に変更
# 競合対策のため、なるべく上書きを減らす処理
#==============================================================================

class Window_MenuStatus < Window_Selectable
  
  if Nana_FGtoCG::MENU != Nana_FGtoCG::ALL
  #--------------------------------------------------------------------------
  # ● アクターの顔グラフィック描画
  #--------------------------------------------------------------------------
  def draw_actor_face(actor, x, y, enabled = true)
    if Nana_FGtoCG::MENU == true
      x += Nana_FGtoCG::X_MOD
      y += Nana_FGtoCG::Y_MOD
      draw_character(actor.character_name, actor.character_index, x, y, enabled)
    else
      draw_face(actor.face_name, actor.face_index, x, y, enabled)
    end
  end
  end

end


class Window_SkillStatus < Window_Base

  if Nana_FGtoCG::SKILL != Nana_FGtoCG::ALL
  #--------------------------------------------------------------------------
  # ● アクターの顔グラフィック描画
  #--------------------------------------------------------------------------
  def draw_actor_face(actor, x, y, enabled = true)
    if Nana_FGtoCG::SKILL == true
      x += Nana_FGtoCG::X_MOD
      y += Nana_FGtoCG::Y_MOD
      draw_character(actor.character_name, actor.character_index, x, y, enabled)
    else
      draw_face(actor.face_name, actor.face_index, x, y, enabled)
    end
  end
  end

end


class Window_Status < Window_Selectable

  if Nana_FGtoCG::STATUS != Nana_FGtoCG::ALL
  #--------------------------------------------------------------------------
  # ● アクターの顔グラフィック描画
  #--------------------------------------------------------------------------
  def draw_actor_face(actor, x, y, enabled = true)
    if Nana_FGtoCG::STATUS == true
      x += Nana_FGtoCG::X_MOD
      y += Nana_FGtoCG::Y_MOD
      draw_character(actor.character_name, actor.character_index, x, y, enabled)
    else
      draw_face(actor.face_name, actor.face_index, x, y, enabled)
    end
  end
  end

end


class Window_NameEdit < Window_Base

  if Nana_FGtoCG::NAME != Nana_FGtoCG::ALL
  #--------------------------------------------------------------------------
  # ● アクターの顔グラフィック描画
  #--------------------------------------------------------------------------
  def draw_actor_face(actor, x, y, enabled = true)
    if Nana_FGtoCG::NAME == true
      x += Nana_FGtoCG::X_MOD
      y += Nana_FGtoCG::Y_MOD
      draw_character(actor.character_name, actor.character_index, x, y, enabled)
    else
      draw_face(actor.face_name, actor.face_index, x, y, enabled)
    end
  end
  end

end