#==============================================================================
#                   「リアル時刻の取得」(ACE) ver1.0
#   製作者:奈々(なな)
#   へぷたなすくろーる http://heptanas.mamagoto.com/
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#
#------------------------------------------------------------------------------
#
#   現実の時刻を(PCの時計から)変数に入れることができます。
#   期間限定イベントや、某ど○ぶつの森のようなシステムにどうぞ。
#   
#   使い方はイベントコマンドの「スクリプト」で行います。
#   nrt_year(n)   変数n番に年が入ります。
#   nrt_month(n)           月
#   nrt_day(n)             日
#   nrt_hour(n)            時
#   nrt_min(n)             分
#   nrt_sec(n)             秒
#   nrt_wday(n)   曜日(0が日曜、1が月曜...)
#   
#   また、拡張機能が2つあります。(falseをtrueに変えると有効になる)
#   1つはセーブ時とロード時に日数を変数に取得する機能です。
#   ロード時の日数からセーブ時の日数を引けば「何日後に再開したか」が分かります。
#   
#   もう1つは時刻を常に変数に取得し続ける機能です。
#
#==============================================================================
# ◇拡張機能
module Nana
module Real_Time
  
  #セーブ&ロード時に日数取得
  #日数は、一ヶ月が30日、一年が360日と換算
  SAVE_LOAD_MODE = false
  SAVE_DAYS = 1 #セーブ時に受け取る変数ID
  LOAD_DAYS = 2 #ロード時に受け取る変数ID
  
  #常に月〜秒までを取得
  ALLWAYS_MODE = false
  AW_MONTH = 1  #月を受け取る変数ID
  AW_DAY = 2    #日を受け取る変数ID
  AW_HOUR = 3   #時を受け取る変数ID
  AW_MIN = 4    #分を受け取る変数ID
  AW_SEC = 5    #秒を受け取る変数ID
end
end

if Nana::Real_Time::SAVE_LOAD_MODE == true
#==============================================================================
# ■ DataManager
#------------------------------------------------------------------------------
#  データベースとゲームオブジェクトを管理するモジュールです。ゲームで使用する
# ほぼ全てのグローバル変数はこのモジュールで初期化されます。
#==============================================================================
module DataManager
  #--------------------------------------------------------------------------
  # ○ セーブの実行
  #--------------------------------------------------------------------------
  def self.save_game(index)
    x = Time.now
    $game_variables[Nana::Real_Time::SAVE_DAYS] = x.year * 360 + x.month * 30 + x.day
    begin
      save_game_without_rescue(index)
    rescue
      delete_save_file(index)
      false
    end
  end
  #--------------------------------------------------------------------------
  # ○ ロードの実行
  #--------------------------------------------------------------------------
  def self.load_game(index)
    load_game_without_rescue(index) rescue false
    x = Time.now
    $game_variables[Nana::Real_Time::LOAD_DAYS] = x.year * 360 + x.month * 30 + x.day
  end
end
end

if Nana::Real_Time::ALLWAYS_MODE == true
#==============================================================================
# ■ Scene_Base
#------------------------------------------------------------------------------
#  ゲーム中の全てのシーンのスーパークラスです。
#==============================================================================

class Scene_Base
  #--------------------------------------------------------------------------
  # ◎ フレーム更新
  #--------------------------------------------------------------------------
  alias nrt_update update
  def update
    nrt_update
    x = Time.now
    $game_variables[Nana::Real_Time::AW_MONTH] = x.month
    $game_variables[Nana::Real_Time::AW_DAY] = x.day
    $game_variables[Nana::Real_Time::AW_HOUR] = x.hour
    $game_variables[Nana::Real_Time::AW_MIN] = x.min
    $game_variables[Nana::Real_Time::AW_SEC] = x.sec
  end
end
end

#==============================================================================
# ■ Game_Interpreter
#------------------------------------------------------------------------------
#  イベントコマンドを実行するインタプリタです。このクラスは Game_Map クラス、
# Game_Troop クラス、Game_Event クラスの内部で使用されます。
#==============================================================================

class Game_Interpreter
  #--------------------------------------------------------------------------
  # ● 年を変数に代入
  #--------------------------------------------------------------------------
  def nrt_year(id)
    x = Time.now
    $game_variables[id] = x.year
  end
  #--------------------------------------------------------------------------
  # ● 月を変数に代入
  #--------------------------------------------------------------------------
  def nrt_month(id)
    x = Time.now
    $game_variables[id] = x.month
  end
  #--------------------------------------------------------------------------
  # ● 日を変数に代入
  #--------------------------------------------------------------------------
  def nrt_day(id)
    x = Time.now
    $game_variables[id] = x.day
  end
  #--------------------------------------------------------------------------
  # ● 時を変数に代入
  #--------------------------------------------------------------------------
  def nrt_hour(id)
    x = Time.now
    $game_variables[id] = x.hour
  end
  #--------------------------------------------------------------------------
  # ● 分を変数に代入
  #--------------------------------------------------------------------------
  def nrt_min(id)
    x = Time.now
    $game_variables[id] = x.min
  end
  #--------------------------------------------------------------------------
  # ● 秒を変数に代入
  #--------------------------------------------------------------------------
  def nrt_sec(id)
    x = Time.now
    $game_variables[id] = x.sec
  end
  #--------------------------------------------------------------------------
  # ● 曜日を変数に代入(0が日曜)
  #--------------------------------------------------------------------------
  def nrt_wday(id)
    x = Time.now
    $game_variables[id] = x.wday
  end
end