360 lines
No EOL
13 KiB
JavaScript
360 lines
No EOL
13 KiB
JavaScript
//=============================================================================
|
|
// MOG_MenuBackground.js
|
|
//=============================================================================
|
|
/*:
|
|
* @target MZ
|
|
* @plugindesc (v1.0) O plugin permite mudar a imagem de fundo do menu.
|
|
* @author Moghunter
|
|
* @url https://mogplugins.wordpress.com
|
|
*
|
|
* @param Default FileName
|
|
* @text File Name
|
|
* @desc Definição do nome de arquivo.
|
|
* @type file
|
|
* @dir img/menus/
|
|
* @default Background_01
|
|
*
|
|
* @param Window Opacity
|
|
* @desc Definição da transparência da janela.
|
|
* @type number
|
|
* @default 0
|
|
* @min 0
|
|
* @max 255
|
|
*
|
|
* @param Scroll X-Axis
|
|
* @desc Definição da velocidade de deslize na horizontal.
|
|
* @default 0
|
|
*
|
|
* @param Scroll Y-Axis
|
|
* @desc Definição da velocidade de deslize na vertical.
|
|
* @default 0
|
|
*
|
|
* @param Disable Scenes
|
|
* @desc Definição das cenas que terão o efeito desativado.
|
|
* Scene_Name1 , Scene_Name2 , Scene_Name3 ...
|
|
* @default Scene_Test1,Scene_Test2,Scene_Test3
|
|
*
|
|
* @command MenuBackground_Setup
|
|
* @desc Configuração do fundo do menu.
|
|
* @text Setup
|
|
*
|
|
* @arg fileName
|
|
* @text File Name
|
|
* @desc Definição do nome de arquivo.
|
|
* @type file
|
|
* @dir img/menus/
|
|
* @default Background_01
|
|
*
|
|
* @arg sx
|
|
* @text Horizontal Scroll
|
|
* @desc Definição da velocidade de deslize na horizontal.
|
|
* @default 0
|
|
*
|
|
* @arg sy
|
|
* @text Vertical Scroll
|
|
* @desc Definição da velocidade do deslize na vertical.
|
|
* @default 0
|
|
*
|
|
* @help
|
|
* =============================================================================
|
|
* ♦♦♦ MOG - Menu Background ♦♦♦
|
|
* Author - Moghunter
|
|
* Version - 1.0
|
|
* Updated - 2020/10/18
|
|
* https://mogplugins.wordpress.com
|
|
* =============================================================================
|
|
* O plugin permite mudar a imagem de fundo do menu.
|
|
*
|
|
* =============================================================================
|
|
* As imagens do background deverão ficar na pasta /img/menus/
|
|
* =============================================================================
|
|
*
|
|
*/
|
|
(() => {
|
|
|
|
//=============================================================================
|
|
// ** PLUGIN PARAMETERS
|
|
//=============================================================================
|
|
var Imported = Imported || {};
|
|
Imported.MOG_MenuBackground = true;
|
|
var Moghunter = Moghunter || {};
|
|
|
|
Moghunter.parameters = PluginManager.parameters('MOG_MenuBackground');
|
|
Moghunter.mback_fileName = String(Moghunter.parameters['Default FileName'] || "Background_01");
|
|
Moghunter.mback_sufixName = String(Moghunter.parameters['Suffix FileName'] || "_back");
|
|
Moghunter.mback_selfback = String(Moghunter.parameters['Unique Backgrounds'] || "false");
|
|
Moghunter.mback_skipscenes = Object(Moghunter.parameters['Disable Scenes'] || []);
|
|
Moghunter.mback_ox = Number(Moghunter.parameters['Scroll X-Axis'] || 0);
|
|
Moghunter.mback_oy = Number(Moghunter.parameters['Scroll Y-Axis'] || 0);
|
|
Moghunter.mback_opacity = Number(Moghunter.parameters['Window Opacity'] || 0);
|
|
SceneManager._mback = false;
|
|
|
|
//==============================
|
|
// * Setup Command
|
|
//==============================
|
|
PluginManager.registerCommand('MOG_MenuBackground', "MenuBackground_Setup", data => {
|
|
const fileName = String(data.fileName);
|
|
const sx = Number(data.sx);
|
|
const sy = Number(data.sy);
|
|
$gameSystem._menuBackgroundData.fileName = fileName;
|
|
$gameSystem._menuBackgroundData.sx = sx;
|
|
$gameSystem._menuBackgroundData.sy = sy;
|
|
SceneManager.setMenuBackgroundBitmap(true);
|
|
});
|
|
|
|
//=============================================================================
|
|
// ■■■ ImageManager ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// * Menus
|
|
//==============================
|
|
ImageManager.loadMenus = function (filename) {
|
|
return this.loadBitmap('img/menus/', filename);
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Game System ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Initialize
|
|
//==============================
|
|
const _mog_menuBackground_gSystem_initialize = Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function () {
|
|
_mog_menuBackground_gSystem_initialize.call(this);
|
|
this.setupMenuBackground();
|
|
};
|
|
|
|
//==============================
|
|
// * setup Menu Background
|
|
//==============================
|
|
Game_System.prototype.setupMenuBackground = function () {
|
|
this._menuBackgroundData = {};
|
|
this._menuBackgroundData.fileName = String(Moghunter.mback_fileName);
|
|
this._menuBackgroundData.sx = Moghunter.mback_ox;
|
|
this._menuBackgroundData.sy = Moghunter.mback_oy;
|
|
this._menuBackgroundData.needRefresh = false;
|
|
};
|
|
|
|
//==============================
|
|
// * Get Par Array
|
|
//==============================
|
|
Game_System.prototype.get_par_array = function (object, value, type) {
|
|
if (value.length === 0) { return };
|
|
var s = value.split(',');
|
|
if (type === 0) {
|
|
for (var i = 0; i < s.length; i++) { object.push(String(s[i])); };
|
|
} else {
|
|
for (var i = 0; i < s.length; i++) { object.push(Number(s[i])); };
|
|
};
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Window Base ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Initialize
|
|
//==============================
|
|
const _mog_menuBack_wbase_initialize = Window_Base.prototype.initialize;
|
|
Window_Base.prototype.initialize = function (rect) {
|
|
_mog_menuBack_wbase_initialize.call(this, rect);
|
|
if (this.needUpdateBackOpacity()) { this.updateBackgroundOpacity() };
|
|
};
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Update
|
|
//==============================
|
|
const _alias_mog_mback_wbase_update = Window_Base.prototype.update;
|
|
Window_Base.prototype.update = function () {
|
|
_alias_mog_mback_wbase_update.call(this);
|
|
if (this.needUpdateBackOpacity()) { this.updateBackgroundOpacity() };
|
|
};
|
|
|
|
//==============================
|
|
// * Need Update Back Opacity
|
|
//==============================
|
|
Window_Base.prototype.needUpdateBackOpacity = function () {
|
|
if (!SceneManager._mback) { return false };
|
|
return true;
|
|
};
|
|
|
|
//==============================
|
|
// * Update Background Opacity
|
|
//==============================
|
|
Window_Base.prototype.updateBackgroundOpacity = function () {
|
|
this.opacity = Moghunter.mback_opacity;
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Scene MenuBase ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// * Skip Mbackground
|
|
//==============================
|
|
Scene_MenuBase.prototype.needSkipBackgroundScene = function () {
|
|
if (!SceneManager._scene) { return false };
|
|
this._mb_skip_scenes = [];
|
|
$gameSystem.get_par_array(this._mb_skip_scenes, Moghunter.mback_skipscenes, 0);
|
|
for (var i = 0; i < this._mb_skip_scenes.length; i++) {
|
|
if (this._mb_skip_scenes[i] === SceneManager._scene.constructor.name) { return true };
|
|
};
|
|
return false;
|
|
};
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Terminate
|
|
//==============================
|
|
const _alias_mog_mback_scmb_terminate = Scene_MenuBase.prototype.terminate;
|
|
Scene_MenuBase.prototype.terminate = function () {
|
|
_alias_mog_mback_scmb_terminate.call(this);
|
|
SceneManager._mback = false;
|
|
};
|
|
|
|
//==============================
|
|
// ♦♦♦ ALIAS ♦♦♦ createBackground
|
|
//==============================
|
|
const _mog_menuBack_scnMenuBase_createBackground = Scene_MenuBase.prototype.createBackground;
|
|
Scene_MenuBase.prototype.createBackground = function () {
|
|
SceneManager._mback = false;
|
|
if (!this.needSkipBackgroundScene()) { this.createBackground2(); return };
|
|
_mog_menuBack_scnMenuBase_createBackground.call(this);
|
|
};
|
|
|
|
//==============================
|
|
// ♦♦♦ ALIAS ♦♦♦ createBackground
|
|
//==============================
|
|
Scene_MenuBase.prototype.createBackground2 = function () {
|
|
SceneManager._mback = true;
|
|
this._backgroundSprite = new TilingSprite();
|
|
this._backgroundSprite.move(0, 0, Graphics.width, Graphics.height);
|
|
this.refreshBackgroundBitmap();
|
|
this.addChild(this._backgroundSprite);
|
|
if (this.needResizeBackground()) { this.resizeBackground(true) };
|
|
};
|
|
|
|
//==============================
|
|
// * refresh Background Bitmap
|
|
//==============================
|
|
Scene_MenuBase.prototype.refreshBackgroundBitmap = function () {
|
|
this._backgroundSpriteName = $gameSystem ? $gameSystem._menuBackgroundData.fileName : "";
|
|
this._backgroundSprite.bitmap = SceneManager.backgroundMenuBitmap();
|
|
this._backgroundSprite.visible = false;
|
|
this._backgroundSpriteResize = true;
|
|
};
|
|
|
|
//==============================
|
|
// * need Resize Background
|
|
//==============================
|
|
Scene_MenuBase.prototype.needResizeBackground = function () {
|
|
if (!this._backgroundSprite) { return false };
|
|
if (!this._backgroundSpriteResize) { return false }
|
|
if (!this._backgroundSprite.bitmap.isReady()) { return false };
|
|
return true;
|
|
};
|
|
|
|
//==============================
|
|
// * resize Background
|
|
//==============================
|
|
Scene_MenuBase.prototype.resizeBackground = function () {
|
|
this._backgroundSpriteResize = false
|
|
this._backgroundSprite.visible = true;
|
|
this._backgroundSprite.scale.x = Graphics.width / this._backgroundSprite.bitmap.width;
|
|
this._backgroundSprite.scale.y = Graphics.height / this._backgroundSprite.bitmap.height;
|
|
this._backgroundSprite.move(0, 0, this._backgroundSprite.bitmap.width, this._backgroundSprite.bitmap.height);
|
|
};
|
|
|
|
//==============================
|
|
// * update Menu Background
|
|
//==============================
|
|
Scene_MenuBase.prototype.updateMenuBackground = function () {
|
|
this._backgroundSprite.origin.x += $gameSystem._menuBackgroundData.sx;
|
|
this._backgroundSprite.origin.y += $gameSystem._menuBackgroundData.sy;
|
|
if (this.needResizeBackground()) { this.resizeBackground() };
|
|
if (this.needRefreshBackground()) {
|
|
SceneManager.setMenuBackgroundBitmap(false);
|
|
this.refreshBackgroundBitmap();
|
|
};
|
|
};
|
|
|
|
//==============================
|
|
// * needRefreshBackground
|
|
//==============================
|
|
Scene_MenuBase.prototype.needRefreshBackground = function () {
|
|
if (!$gameSystem) { return false }
|
|
if (this._backgroundSpriteName != $gameSystem._menuBackgroundData.fileName) { return true };
|
|
return false;
|
|
};
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Update
|
|
//==============================
|
|
const _mog_mback_scbase_update = Scene_MenuBase.prototype.update;
|
|
Scene_MenuBase.prototype.update = function () {
|
|
_mog_mback_scbase_update.call(this);
|
|
if (this._backgroundSprite) { this.updateMenuBackground() };
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Scene Map ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Terminate
|
|
//==============================
|
|
const _mog_menuBack_scnMap_terminate = Scene_Map.prototype.terminate;
|
|
Scene_Map.prototype.terminate = function () {
|
|
_mog_menuBack_scnMap_terminate.call(this);
|
|
SceneManager.setMenuBackgroundBitmap(false);
|
|
};
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ call Menu
|
|
//==============================
|
|
const _mog_menuBack_scnMap_callMenu = Scene_Map.prototype.callMenu;
|
|
Scene_Map.prototype.callMenu = function () {
|
|
_mog_menuBack_scnMap_callMenu.call(this);
|
|
SceneManager.setMenuBackgroundBitmap(false);
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Scene Manager ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ initialize
|
|
//==============================
|
|
const _mog_menuBack_scnMngr_initialize = SceneManager.initialize;
|
|
SceneManager.initialize = function () {
|
|
_mog_menuBack_scnMngr_initialize.call(this);
|
|
this.setMenuBackgroundBitmap(false);
|
|
};
|
|
|
|
//==============================
|
|
// * backgroundName
|
|
//==============================
|
|
SceneManager.backgroundName = function () {
|
|
if ($gameSystem) { return String($gameSystem._menuBackgroundData.fileName) };
|
|
return String(Moghunter.mback_fileName);
|
|
};
|
|
|
|
//==============================
|
|
// * setMenuBackgroundBitmap
|
|
//==============================
|
|
SceneManager.setMenuBackgroundBitmap = function (name, destroy) {
|
|
if (this._backgroundMenuBitmap && destroy) {
|
|
this._backgroundMenuBitmap.destroy();
|
|
}
|
|
this._backgroundMenuBitmap = ImageManager.loadMenus(this.backgroundName());
|
|
};
|
|
|
|
//==============================
|
|
// * backgroundMenuBitmap
|
|
//==============================
|
|
SceneManager.backgroundMenuBitmap = function () {
|
|
return this._backgroundMenuBitmap;
|
|
};
|
|
|
|
})(); |