brainwashing-school/js/plugins/PresetWarning.js
2025-02-25 10:53:19 -06:00

85 lines
2.5 KiB
JavaScript

//=============================================================================
// PresetWarning.js
//=============================================================================
/*:
* @author Thirop
* @target MZ
* @plugindesc サンプルマップ用プリセットチェック
* @help サンプルマップ動作に必要な追加プリセットプラグイン
* が導入されていない場合にメッセージを表示する
* サンプルプロジェクト用のプラグインです。
*/
//=============================================================================
//PRAGMA: englishHeader
//PRAGMA_END: englishHeader
(function () {
"use strict";
var allInNames = ["TRP_ParticleMZ_ExPreset", "TRP_Particle_ExPreset"];
var LC = TRP_Localize.localize.bind(TRP_Localize, "preWa");
var NLC = TRP_Localize.noLocalize;
//=============================================================================
// Game_Map
//=============================================================================
var _Game_Map_setup = Game_Map.prototype.setup;
Game_Map.prototype.setup = function (mapId) {
_Game_Map_setup.call(this, mapId);
if ($dataMap.meta.presetNames) {
if (Utils.RPGMAKER_NAME === "MZ") {
Game_Particle.checkPresetNames($dataMap.meta.presetNames.split(","));
} else {
Game_Particle.checkPresetNames(
($dataMap.meta.presetNamesMV || $dataMap.meta.presetNames).split(",")
);
}
}
};
Game_Particle.checkPresetNames = function (names) {
var hasAllInPreset = false;
for (var i = allInNames.length - 1; i >= 0; i = (i - 1) | 0) {
if (PluginManager._scripts.contains(allInNames[i])) {
hasAllInPreset = true;
}
}
var allPluginOk = true;
for (var i = names.length - 1; i >= 0; i = (i - 1) | 0) {
var name = names[i];
if (PluginManager._scripts.contains(name)) {
continue;
}
if (hasAllInPreset && name.contains("ExPreset")) {
continue;
}
allPluginOk = false;
break;
}
if (allPluginOk) {
return;
}
var errText = LC("このマップは追加プリセット用のサンプルマップです。", 0);
var length = names.length;
for (var i = 0; i < length; i = (i + 1) | 0) {
if (i > 0) {
errText += '","';
}
var name = names[i];
errText += name + ".js";
}
errText += LC(
'"をお持ちの場合はプラグインを導入した上でお試しください。',
1
);
throw new Error(errText);
};
})();