enicia-contract-mark/js/plugins/FTKR_ExMetaData.js

156 lines
5.4 KiB
JavaScript

//=============================================================================
// メタデータを拡張するプラグイン
// FTKR_ExMetaData.js
// プラグインNo : 36
// 作成者 : フトコロ
// 作成日 : 2017/05/05
// 最終更新日 : 2018/02/19
// バージョン : v1.0.1
//=============================================================================
var Imported = Imported || {};
Imported.FTKR_EMD = true;
var FTKR = FTKR || {};
FTKR.EMD = FTKR.EMD || {};
//=============================================================================
/*:
*@target MZ
* @plugindesc v1.0.1 メタデータを拡張するプラグイン
* @author フトコロ
*
* @help
*-----------------------------------------------------------------------------
* 概要
*-----------------------------------------------------------------------------
* 本プラグインは、下記のメタデータ(*1)を各オブジェクトデータに取り込みます。
*
* (*1) <name:data>形式で記述したデータ
*
*
* 1. 敵グループのバトルイベント1ページ目の注釈内のメタデータを
* ゲーム起動時に $dataTroops[n].meta に取り込みます。
* (n は敵グループID)
*
*
* 2. イベントの1ページ目の注釈内のメタデータを、マップのデータ読み込み時に
* $dataMap.events[n].meta に取り込みます。
* (n はイベントID)
*
*
*-----------------------------------------------------------------------------
* 設定方法
*-----------------------------------------------------------------------------
* 1.「プラグインマネージャー(プラグイン管理)」に、本プラグインを追加して
* ください。
*
*
*-----------------------------------------------------------------------------
* 本プラグインのライセンスについて(License)
*-----------------------------------------------------------------------------
* 本プラグインはMITライセンスのもとで公開しています。
* This plugin is released under the MIT License.
*
* Copyright (c) 2017,2018 Futokoro
* http://opensource.org/licenses/mit-license.php
*
*
* プラグイン公開元
* https://github.com/futokoro/RPGMaker/blob/master/README.md
*
*
*-----------------------------------------------------------------------------
* 変更来歴
*-----------------------------------------------------------------------------
*
* v1.0.1 - 2018/02/19 : 不具合修正
* 1. メニュー開閉で、メタデータが消える不具合を修正。
*
* v1.0.0 - 2017/05/05 : 初版作成
*
*-----------------------------------------------------------------------------
*/
//=============================================================================
//=============================================================================
// プラグイン パラメータ
//=============================================================================
FTKR.EMD.parameters = PluginManager.parameters('FTKR_ExMetaData');
var readMetadata = function (data, note) {
var re = /<([^<>:]+)(:?)([^>]*)>/g;
data.meta = data.meta || {};
for (; ;) {
var match = re.exec(note);
if (match) {
if (match[2] === ':') {
data.meta[match[1]] = match[3];
} else {
data.meta[match[1]] = true;
}
} else {
break;
}
}
};
var readPagesCommentMetadata = function (obj, pages) {
for (var v = 0; v < pages[0].list.length; v++) {
var list = pages[0].list[v];
if (list && ([108, 408].contains(list.code))) {
readMetadata(obj, list.parameters[0]);
}
}
};
//=============================================================================
// イベントのコメント欄のメタデータ取得
//=============================================================================
/*
FTKR.EMD.Game_Map_setupEvents = Game_Map.prototype.setupEvents;
Game_Map.prototype.setupEvents = function() {
this.readEventsCommentMetadata();
FTKR.EMD.Game_Map_setupEvents.call(this);
};
*/
Game_Map.prototype.readEventsCommentMetadata = function () {
for (var i = 1; i < $dataMap.events.length; i++) {
var event = $dataMap.events[i];
if (event && event.pages.length) {
readPagesCommentMetadata(event, event.pages);
}
}
};
FTKR.EMD.Scene_Map_start = Scene_Map.prototype.start;
Scene_Map.prototype.start = function () {
FTKR.EMD.Scene_Map_start.call(this);
$gameMap.readEventsCommentMetadata();
};
//=============================================================================
// 敵グループのバトルイベントのコメント欄のメタデータ取得
//=============================================================================
FTKR.EMD.DatabaseLoaded = false;
FTKR.EMD.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
DataManager.isDatabaseLoaded = function () {
if (!FTKR.EMD.DataManager_isDatabaseLoaded.call(this)) return false;
if (!FTKR.EMD.DatabaseLoaded) {
this.readCommentNotetags($dataTroops);
FTKR.EMD.DatabaseLoaded = true;
}
return true;
};
DataManager.readCommentNotetags = function (group) {
for (var n = 1; n < group.length; n++) {
var obj = group[n];
obj.meta = {};
var pages = obj.pages;
if (pages.length) {
readPagesCommentMetadata(obj, pages);
}
}
};