247 lines
7.7 KiB
JavaScript
247 lines
7.7 KiB
JavaScript
/*=============================================================================
|
||
PluginBaseFunction.js
|
||
----------------------------------------------------------------------------
|
||
(C)2020 Triacontane
|
||
This software is released under the MIT License.
|
||
http://opensource.org/licenses/mit-license.php
|
||
----------------------------------------------------------------------------
|
||
Version
|
||
1.0.0 2020/06/12 初版
|
||
----------------------------------------------------------------------------
|
||
[Blog] : https://triacontane.blogspot.jp/
|
||
[Twitter]: https://twitter.com/triacontane/
|
||
[GitHub] : https://github.com/triacontane/
|
||
=============================================================================*/
|
||
|
||
/*:
|
||
* @target MZ
|
||
* @plugindesc Plugin Common Functions
|
||
* @author Triacontane
|
||
* @base PluginCommonBase
|
||
* @orderAfter PluginCommonBase
|
||
* @url https://raw.githubusercontent.com/triacontane/RPGMakerMZ/master/js/plugins/PluginBaseFunction.js
|
||
*
|
||
* @help PluginBaseFunction.js
|
||
*
|
||
* It is a base plugin that provides common functions.
|
||
* Provides only functions, methods and does not affect the existing processing.
|
||
* Also, additions to the function may increase but do not reduce or change the IO.
|
||
*
|
||
* - Added Functions
|
||
* Returns whether the map needs to be reloaded or not.
|
||
* $gamePlayer.isNeedMapReload();
|
||
*
|
||
* Returns the first event whose event name matches the argument.
|
||
* $gameMap.findEventByName(eventName);
|
||
*
|
||
* Returns the first value that matches the specified
|
||
* name from the memo field of the database with the feature.
|
||
* Game_BattlerBase.prototype.findTraitMetaFirst(names);
|
||
*
|
||
* Returns the largest value that matches the specified name
|
||
* from the notes field of the database with the feature.
|
||
* Game_BattlerBase.prototype.findTraitMetaMax(names);
|
||
*
|
||
* Returns the total value that matches the specified name
|
||
* from the notes field of the database with the feature.
|
||
* Game_BattlerBase.prototype.findTraitMetaSum(names);
|
||
*
|
||
* Returns whether one of the windows is active.
|
||
* Scene_Base.prototype.isAnyWindowActive();
|
||
*
|
||
* Returns whether the current scene matches a scene of the specified class.
|
||
* SceneManager.isCurrentScene(sceneClass);
|
||
*
|
||
* Searches the database for exact matches on a given condition and returns the first one matched.
|
||
* DataManager.searchDataItem(dataArray, columnName, columnValue);
|
||
*
|
||
* Stop all systems SE.
|
||
* AudioManager.stopAllStaticSe();
|
||
*
|
||
* Stop the specified system SE.
|
||
* AudioManager.stopStaticSe(se);
|
||
*
|
||
* User Agreement:
|
||
* You may alter or redistribute the plugin without permission. There are no restrictions on usage format
|
||
* (such as adult- or commercial-use only).
|
||
* This plugin is now all yours.
|
||
*/
|
||
/*:ja
|
||
* @target MZ
|
||
* @plugindesc プラグイン共通関数
|
||
* @author トリアコンタン
|
||
* @base PluginCommonBase
|
||
* @orderAfter PluginCommonBase
|
||
* @url https://raw.githubusercontent.com/triacontane/RPGMakerMZ/master/js/plugins/PluginBaseFunction.js
|
||
*
|
||
* @help PluginBaseFunction.js
|
||
*
|
||
* 共通関数を提供するベースプラグインです。
|
||
* 関数、メソッドの提供のみを行い、既存の処理に影響は与えません。
|
||
* また、機能追加によって関数を増やすことはあっても
|
||
* 減らすことやIOを変更することはありません。
|
||
*
|
||
* ・追加した関数
|
||
* マップのリロードが必要かどうかを返します。
|
||
* $gamePlayer.isNeedMapReload();
|
||
*
|
||
* イベント名が引数と一致する最初のイベントを返します。
|
||
* $gameMap.findEventByName(eventName);
|
||
*
|
||
* 特徴を有するデータベースのメモ欄から
|
||
* 指定した名前に一致する最初の値を返します。
|
||
* Game_BattlerBase.prototype.findTraitMetaFirst(names);
|
||
*
|
||
* 特徴を有するデータベースのメモ欄から
|
||
* 指定した名前に一致する最大の値を返します。
|
||
* Game_BattlerBase.prototype.findTraitMetaMax(names);
|
||
*
|
||
* 特徴を有するデータベースのメモ欄から
|
||
* 指定した名前に一致する合計値を返します。
|
||
* Game_BattlerBase.prototype.findTraitMetaSum(names);
|
||
*
|
||
* いずれかのウィンドウがアクティブになっているかを返します。
|
||
* Scene_Base.prototype.isAnyWindowActive();
|
||
*
|
||
* 現在のシーンが指定したクラスのシーンと一致するかを返します。
|
||
* SceneManager.isCurrentScene(sceneClass);
|
||
*
|
||
* データベースを指定した条件で完全一致検索して一致した最初の1件を返します。
|
||
* DataManager.searchDataItem(dataArray, columnName, columnValue);
|
||
*
|
||
* 全てのシステムSEを停止します。
|
||
* AudioManager.stopAllStaticSe();
|
||
*
|
||
* 指定したシステムSEを停止します。
|
||
* AudioManager.stopStaticSe(se);
|
||
*
|
||
* 利用規約:
|
||
* 作者に無断で改変、再配布が可能で、利用形態(商用、18禁利用等)
|
||
* についても制限はありません。
|
||
* このプラグインはもうあなたのものです。
|
||
*/
|
||
|
||
(() => {
|
||
"use strict";
|
||
|
||
/**
|
||
* Game_Player
|
||
*/
|
||
Game_Player.prototype.isNeedMapReload = function () {
|
||
return this._needsMapReload;
|
||
};
|
||
|
||
/**
|
||
* Game_Map
|
||
*/
|
||
Game_Map.prototype.findEventByName = function (eventName) {
|
||
return (
|
||
$gameMap.events().filter((event) => {
|
||
return event.event().name === eventName;
|
||
})[0] || null
|
||
);
|
||
};
|
||
|
||
/**
|
||
* Game_BattlerBase
|
||
*/
|
||
Game_BattlerBase.prototype.findTraitMetaFirst = function (names) {
|
||
for (const traitObj of this.traitObjects()) {
|
||
const meta = PluginManagerEx.findMetaValue(traitObj, names);
|
||
if (meta) {
|
||
return meta;
|
||
}
|
||
}
|
||
};
|
||
|
||
Game_BattlerBase.prototype.findTraitMetaMax = function (names) {
|
||
let maxValue = 0;
|
||
this.traitObjects().forEach((traitObj) => {
|
||
const meta = PluginManagerEx.findMetaValue(traitObj, names);
|
||
if (meta) {
|
||
maxValue = Math.max(maxValue, parseInt(meta));
|
||
}
|
||
});
|
||
return maxValue;
|
||
};
|
||
|
||
Game_BattlerBase.prototype.findTraitMetaSum = function (names) {
|
||
return this.traitObjects().reduce((prevValue, traitObj) => {
|
||
const meta = PluginManagerEx.findMetaValue(traitObj, names);
|
||
if (meta) {
|
||
prevValue = prevValue + parseInt(meta);
|
||
}
|
||
return prevValue;
|
||
}, 0);
|
||
};
|
||
|
||
/**
|
||
* Scene_Base.prototype.isAnyWindowActive
|
||
* @returns {boolean}
|
||
*/
|
||
Scene_Base.prototype.isAnyWindowActive = function () {
|
||
if (this._windowLayer) {
|
||
return this._windowLayer.children.some((win) => {
|
||
return win instanceof Window_Selectable && win.active;
|
||
});
|
||
} else {
|
||
return false;
|
||
}
|
||
};
|
||
|
||
/**
|
||
* SceneManager
|
||
*/
|
||
SceneManager.isCurrentScene = function (sceneClass) {
|
||
return this._scene && this._scene.constructor === sceneClass;
|
||
};
|
||
|
||
/**
|
||
* DataManager.searchDataItem
|
||
* Search database
|
||
* @param dataArray target
|
||
* @param columnName condition1
|
||
* @param columnValue condition2
|
||
* @returns {object} result
|
||
*/
|
||
DataManager.searchDataItem = function (dataArray, columnName, columnValue) {
|
||
let result = 0;
|
||
dataArray.some((dataItem) => {
|
||
if (dataItem && dataItem[columnName] === columnValue) {
|
||
result = dataItem;
|
||
return true;
|
||
}
|
||
return false;
|
||
});
|
||
return result;
|
||
};
|
||
|
||
/**
|
||
* AudioManager.stopAllStaticSe
|
||
* Stop all system SE.
|
||
*/
|
||
AudioManager.stopAllStaticSe = function () {
|
||
this._staticBuffers.forEach(function (buffer) {
|
||
buffer.stop();
|
||
});
|
||
this._staticBuffers = [];
|
||
};
|
||
|
||
/**
|
||
* AudioManager.stopStaticSe
|
||
* Stop system SE.
|
||
*/
|
||
AudioManager.stopStaticSe = function (se) {
|
||
if (!se.name) {
|
||
return;
|
||
}
|
||
for (let i = 0; i < this._staticBuffers.length; i++) {
|
||
const buffer = this._staticBuffers[i];
|
||
if (buffer._reservedSeName === se.name) {
|
||
buffer.stop();
|
||
this.updateSeParameters(buffer, se);
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
})();
|