ゲーム内時間の導入 - Chronus.js

▼ゲーム内時間の導入(トリアコンタン様作) - Chronus.js
https://plugin.fungamemake.com/archives/1039
ゲーム内で時刻と天候の概念を表現できる
ふりがな:げーむないじかんのどうにゅう
機能概要: ゲーム内で時刻と天候の概念を表現できる
利用規約(ライセンス): MITライセンス
作者:トリアコンタン
作者サイト:https://triacontane.blogspot.com/
解説ページ:https://triacontane.blogspot.jp/2015/12/rpgmv-yyyy-mm-d…
ダウンロードページ:https://raw.githubusercontent.com/triacontane/RPGMakerM…
ファイル名:Chronus.js
プラグインのヘルプ:
/*:
* @plugindesc ゲーム内時間の導入プラグイン
* @author トリアコンタン
*
* @param 月ごとの日数配列
* @desc 各月の日数の配列です。カンマ区切りで指定してください。個数は自由です。
* @default 31,28,31,30,31,30,31,31,30,31,30,31
*
* @param 月名配列
* @desc 月の名称配列です。カンマ区切りで指定してください。個数は自由です。
* @default Jan.,Feb.,Mar.,Apr.,May.,Jun.,Jul.,Aug.,Sep.,Oct.,Nov.,Dec.
*
* @param 曜日配列
* @desc 曜日の名称配列です。カンマ区切りで指定してください。個数は自由です。
* @default (日),(月),(火),(水),(木),(金),(土)
*
* @param 自然時間加算
* @type number
* @desc 1秒(自然時間加算間隔で指定した間隔)ごとに加算されるゲーム時間(分単位)の値です。イベント処理中は無効です。
* @default 5
*
* @param 自然時間加算間隔
* @type number
* @desc ゲーム時間の自然加算が行われる間隔(フレーム数)です。1F=1/60秒
* @default 60
*
* @param 場所移動時間加算
* @type number
* @desc 1回の場所移動で加算されるゲーム時間(分単位)の値です。
* @default 30
*
* @param 戦闘時間加算(固定)
* @type number
* @desc 1回の戦闘で加算されるゲーム時間(分単位)の値です。
* @default 30
*
* @param 戦闘時間加算(ターン)
* @type number
* @desc 1回の戦闘で消費したターン数ごとに加算されるゲーム時間(分単位)の値です。
* @default 5
*
* @param 年のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「年」の値が自動設定されます。
* @default 0
*
* @param 月のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「月」の値が自動設定されます。
* @default 0
*
* @param 日のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「日」の値が自動設定されます。
* @default 0
*
* @param 曜日IDのゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「曜日」のIDが自動設定されます。
* @default 0
*
* @param 曜日名のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「曜日」の名称が自動設定されます。
* ゲーム変数に文字列が入るので注意してください。
* @default 0
*
* @param 時のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「時」の値が自動設定されます。
* @default 0
*
* @param 分のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「分」の値が自動設定されます。
* @default 0
*
* @param 累計時間のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「累計時間」(分単位)の値が自動設定されます。
* @default 0
*
* @param 累計日数のゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「累計日数」の値が自動設定されます。
* @default 0
*
* @param 時間帯IDのゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「時間帯」のIDが自動設定されます。
* 0:深夜 1:早朝 2:朝 3:昼 4:夕方 5:夜
* @default 0
*
* @param 天候IDのゲーム変数
* @type variable
* @desc 指定した番号のゲーム変数に「天候」のIDが自動設定されます。
* 0:なし 1:雨 2:嵐 3:雪
* @default 0
*
* @param フォーマット時間の変数
* @type variable
* @desc 「フォーマット時間の計算式」に基づいて計算した結果が自動設定されます。
* @default 0
*
* @param フォーマット時間の計算式
* @desc 日時フォーマットを使った計算式の内容です。
* YYYY:年 MON:月名 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
* @default HH24 * 60 + MI
*
* @param 日時フォーマット1
* @desc マップ上の日付ウィンドウ1行目に表示される文字列です。
* YYYY:年 MON:月名 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
* @default YYYY年 MM月 DD日 DY
*
* @param 日時フォーマット2
* @desc マップ上の日付ウィンドウ2行目に表示される文字列です。
* YYYY:年 MON:月名 MM:月 DD:日 HH24:時(24) HH:時(12) AM:午前 or 午後 MI:分 DY:曜日
* @default AMHH時 MI分
*
* @param 日時フォーマット行間
* @type number
* @desc カレンダー表示の行間です。
* @default 0
*
* @param カレンダー表示X座標
* @type number
* @desc カレンダーの表示 X 座標です。
* @default 0
*
* @param カレンダー表示Y座標
* @type number
* @desc カレンダーの表示 Y 座標です。
* @default 0
*
* @param カレンダーフォントサイズ
* @type number
* @desc カレンダーのフォントサイズです。0を指定するとデフォルトとなります。
* @default 0
*
* @param カレンダー不透明度
* @type number
* @desc カレンダーの背景の不透明度(0-255)です。
* @default 192
*
* @param カレンダー枠の非表示
* @type boolean
* @desc カレンダーのウィンドウ枠を非表示にします。
* @default false
*
* @param カレンダーの非表示
* @type boolean
* @desc カレンダーを非表示します。プラグインコマンドから表示できます。
* @default false
*
* @param カレンダー余白
* @type number
* @desc カレンダーの余白(8-)です。
* @default 8
*
* @param 文字盤画像ファイル
* @desc アナログ時計を表示する場合の文字盤画像ファイル名(拡張子は不要)です。
* 画像は「img/pictures/」以下に保存してください。
* @default
* @require 1
* @dir img/pictures/
* @type file
*
* @param 長針画像ファイル
* @desc アナログ時計を表示する場合の長針画像ファイル名(拡張子は不要)です。
* 画像は「img/pictures/」以下に保存してください。
* @default
* @require 1
* @dir img/pictures/
* @type file
*
* @param 短針画像ファイル
* @desc アナログ時計を表示する場合の長針画像ファイル名(拡張子は不要)です。
* 画像は「img/pictures/」以下に保存してください。
* @default
* @require 1
* @dir img/pictures/
* @type file
*
* @param 時計X座標
* @type number
* @desc アナログ時計の表示X座標です。画像の中心座標を指定してください。
* @default 84
*
* @param 時計Y座標
* @type number
* @desc アナログ時計の表示Y座標です。画像の中心座標を指定してください。
* @default 156
*
* @param イベント中時間経過
* @desc イベント実行中も時間経過するようになります。(ON/OFF)
* @default false
* @type boolean
*
* @help ゲーム内で時刻と天候の概念を表現できるプラグインです。
* 自動、マップ移動、戦闘で時間が経過し、時間と共に天候と色調が変化します。
* これらの時間は調節可能で、またイベント中は時間の進行が停止します。
*
* さらに、現実の時間をゲーム中に反映させる機能もあります。
* 設定を有効にすると現実の時間がゲーム内とリンクします。
*
* 日付や曜日も記録し、曜日の数や名称を自由に設定できます。
* 現在日付はフォーマットに従って、画面左上に表示されます。
*
* 日付フォーマットには以下を利用できます。
* YYYY:年 MON:月名 MM:月 DD:日 HH24:時(24) HH:時(12)
* AM:午前 or 午後 MI:分 DY:曜日
*
* また、規格に沿った画像を用意すればアナログ時計も表示できます。
* 表示位置は各画像の表示可否は調整できます。
*
* 画像の規格は以下の通りです。
* ・文字盤 : 任意のサイズの正方形画像
* ・長針 : 文字盤と同じサイズの画像で、上(0)を指している針の画像
* ・短針 : 文字盤と同じサイズの画像で、上(0)を指している針の画像
*
* ツクマテにて規格に合った時計画像をリクエストしました。
* 使用する場合は、以下のURLより利用規約を別途確認の上、ご使用ください。
* http://tm.lucky-duet.com/viewtopic.php?f=47&t=555&p=1615#p1615
*
* プラグインコマンド詳細
* イベントコマンド「プラグインコマンド」から実行。
* 指定する値には制御文字V[n]を使用できます。
* (引数の間は半角スペースで区切る)
*
* C_ADD_TIME [分] : 指定した値(分単位)だけ時間が経過します。
* C_ADD_DAY [日] : 指定した値(日単位)だけ日数が経過します。
* C_SET_TIME [時] [分] : 指定した時間に変更します。
* C_SET_DAY [年] [月] [日] : 指定した日付に変更します。
* C_STOP : 時間の進行を停止します。
* C_START : 時間の進行を開始します。
* C_SHOW : カレンダーを表示します。
* C_HIDE : カレンダーを非表示にします。
* C_DISABLE_TINT : 時間帯による色調の変更を禁止します。
* C_ENABLE_TINT : 時間帯による色調の変更を許可します。
* C_DISABLE_WEATHER : 時間経過による天候の変化を禁止します。
* C_ENABLE_WEATHER : 時間経過による天候の変化を許可します。
* C_SET_SNOW_LAND : 悪天候時に雪が降るようになります。
* C_RESET_SNOW_LAND : 悪天候時に雨もしくは嵐が降るようになります。
* C_SET_SPEED [分] : 実時間1秒あたりの時間の経過速度を設定します。
* C_SHOW_CLOCK : アナログ時計を表示します。
* C_HIDE_CLOCK : アナログ時計を非表示にします。
* C_SET_TIME_REAL : 時間の取得方法を実時間に変更します。
* C_SET_TIME_VIRTUAL : 時間の取得方法をゲーム内時間に変更します。
* C_SET_RAINY_PERCENT [確率] : 降水確率(0-100)を設定します。
* C_INIT_TOTAL_TIME : 累計時間、累計日数を初期化します。
*
* ・アナログ時計画像変更コマンド
* アナログ時計の画像ファイル名(img/pictures)を変更できます。
* ただし、実際に画像が変更されるのはマップを移動した後になります。
* C_SET_CLOCK_BASE [ファイル名] : 文字盤画像のファイル名を変更します。
* C_SET_HOUR_HAND [ファイル名] : 短針画像のファイル名を変更します。
* C_SET_MINUTE_HAND [ファイル名] : 長針画像のファイル名を変更します。
*
* ・タイマー操作系コマンド
* コマンド実行から指定した時間[分]が経過後にスイッチやセルフスイッチを
* ONにできるコマンドです。
* 実時間連動機能と併せて使用することもできます。
* スイッチの場合はIDを、セルフスイッチの場合は種類(A,B,C,D)を指定します。
*
* C_SET_SWITCH_TIMER [分] [スイッチID] [ループ]
* 指定例(ゲーム内時間で30分経過後する度にスイッチ[10]をONにする)
* C_SET_SWITCH_TIMER 30 10 ON
*
* C_SET_SELF_SWITCH_TIMER [分] [セルフスイッチ種類] [ループ]
* 指定例(ゲーム内時間で3時間過後にセルフスイッチ[B](※)をONにする)
* C_SET_SELF_SWITCH_TIMER 180 B OFF
* ※対象イベントはプラグインコマンドを実行したイベントです。
*
* 途中で解除や一時停止する可能性がある場合は[タイマー名]を指定するコマンドを
* 実行してください。解除などの際にタイマー名を指定する必要があるためです。
*
* C_SET_SWITCH_NAMED_TIMER [タイマー名] [分] [スイッチID] [ループ]
* 指定例(ゲーム内時間で30分経過後する度にスイッチ[10]をONにする)
* C_SET_SWITCH_NAMED_TIMER timer 30 10 ON
*
* C_SET_SELF_SWITCH_NAMED_TIMER [タイマー名] [分] [セルフスイッチ種類] [ループ]
* 指定例(ゲーム内時間で3時間過後にセルフスイッチ[B](※)をONにする)
* C_SET_SELF_SWITCH_NAMED_TIMER timer 180 B OFF
* ※対象イベントはプラグインコマンドを実行したイベントです。
*
* 解除、停止、再開のコマンドは以下の通りです。
* C_CLEAR_TIMER timer # タイマー名「timer」を解除します。
* C_STOP_TIMER timer # タイマー名「timer」を一時停止します。
* C_START_TIMER timer # タイマー名「timer」を再開します。
*
* メモ欄詳細
* タイトルセットおよびマップのメモ欄に以下を入力すると、
* 一時的に天候と色調変化を自動で無効化できます。
* 屋内マップやイベントシーンなどで一時的に無効化したい場合に利用できます。
* 設定はマップのメモ欄が優先されます。
*
* <C_Tint:OFF> # 色調の変更を一時的に無効化します。
* <C_色調:OFF> # 同上
* <C_Weather:OFF> # 天候を一時的に無効化します。
* <C_天候:OFF> # 同上
*
* イベント実行中にも時間経過するかどうかをイベントごとに設定できます。
* この設定はパラメータの設定よりも優先されます。
* イベントのメモ欄に以下を入力してください。
* <C_時間経過:ON> # イベント実行中に時間経過します。(ON/OFF)
* <C_NoStop:ON> # 同上
*
* 高度な設定
* ソースコード中の「ユーザ書き換え領域」を参照すると以下を変更できます。
* 時間帯の情報(朝が何時から何時まで等)
* 時間帯ごとの色調(ただし、悪天候の場合は補正が掛かります)
*
* 利用規約:
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
* についても制限はありません。
* このプラグインはもうあなたのものです。
*/
/**
* ゲーム内時間を扱うゲームオブジェクトです。
* @constructor
*/
function Game_Chronus() {
this.initialize.apply(this, arguments);
}
/**
* ゲーム内タイマーを扱うゲームオブジェクトです。
* @constructor
*/
function Game_ChronusTimer() {
this.initialize.apply(this, arguments);
}
/**
* 時計画像を扱うスプライトです。
* @constructor
*/
function Sprite_Chronicle_Clock() {
this.initialize.apply(this, arguments);
}
/**
* ゲーム内時間を描画するウィンドウです。
* @constructor
*/
function Window_Chronus() {
this.initialize.apply(this, arguments);
}
(function() {
'use strict';
//=============================================================================
// ユーザ書き換え領域 - 開始 -
//=============================================================================
var settings = {
/* timeZone:時間帯 */
timeZone: [
/* name:時間帯名称 start:開始時刻 end:終了時刻 timeId:時間帯ID */
{name: '深夜', start: 0, end: 4, timeId: 0},
{name: '早朝', start: 5, end: 6, timeId: 1},
{name: '朝', start: 7, end: 11, timeId: 2},
{name: '昼', start: 12, end: 16, timeId: 3},
{name: '夕方', start: 17, end: 18, timeId: 4},
{name: '夜', start: 19, end: 21, timeId: 5},
{name: '深夜', start: 22, end: 24, timeId: 0}
],
/* timeTone:時間帯ごとの色調 */
timeTone: [
/* timeId:時間帯ID value:色調[赤(-255...255),緑(-255...255),青(-255...255),グレー(0...255)] */