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

424 lines
14 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;
};
})();