brainwashing-school/js/plugins/MOG_MenuBackground.js
2025-05-30 08:36:40 -05:00

360 lines
No EOL
13 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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;
};
})();