508 lines
16 KiB
JavaScript
508 lines
16 KiB
JavaScript
//=============================================================================
|
|
// MOG_MenuParticles.js
|
|
//=============================================================================
|
|
|
|
/*:
|
|
* @target MZ
|
|
* @plugindesc (v1.0) Adiciona partículas nas cenas menu.
|
|
* @author Moghunter
|
|
* @url https://mogplugins.wordpress.com
|
|
*
|
|
* @param File Name
|
|
* @text File Name
|
|
* @desc Definição do nome de arquivo.
|
|
* @type file
|
|
* @dir img/menus/
|
|
* @default Particles
|
|
*
|
|
* @param Number of Particles
|
|
* @text Number of Particles
|
|
* @desc Definição do numero de partículas.
|
|
* @type number
|
|
* @default 15
|
|
* @min 5
|
|
* @max 1000
|
|
*
|
|
* @param Disable Scenes
|
|
* @text 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
|
|
*
|
|
* @param Unique Particles
|
|
* @text Unique Particles
|
|
* @desc Cada cena terá uma imagem de partícula diferente.
|
|
* @type boolean
|
|
* @default false
|
|
*
|
|
* @param X-Axis Speed
|
|
* @text X-axis Speed
|
|
* @desc Definição da velocidade das partículas na horizontal.
|
|
* @default 0
|
|
*
|
|
* @param Y-Axis Speed
|
|
* @text Y-axis Speed
|
|
* @desc Definição da velocidade das partículas na vertical.
|
|
* @default -1
|
|
*
|
|
* @param Rotation Speed
|
|
* @text Rotation Speed
|
|
* @desc Definição da velocidade da rotação.
|
|
* @default 1
|
|
*
|
|
* @param Blend Mode
|
|
* @desc Definição do blend.
|
|
* @text Blend Mode
|
|
* @type select
|
|
* @default Normal
|
|
* @option Additive
|
|
* @value Additive
|
|
* @option Normal
|
|
* @value Normal
|
|
* @option Multiply
|
|
* @value Multiply
|
|
*
|
|
* @command MenuParticles_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 Particles
|
|
*
|
|
* @arg power
|
|
* @text Number of Particles
|
|
* @desc Definição do numero de partículas.
|
|
* @type number
|
|
* @default 15
|
|
* @min 5
|
|
* @max 1000
|
|
*
|
|
* @arg sx
|
|
* @text X-axis Speed
|
|
* @desc Definição da velocidade das partículas na horizontal.
|
|
* @default 0
|
|
*
|
|
* @arg sy
|
|
* @text Y-axis Speed
|
|
* @desc Definição da velocidade das partículas na vertical.
|
|
* @default -1
|
|
*
|
|
* @arg rt
|
|
* @text Rotation Speed
|
|
* @desc Definição da velocidade da rotação.
|
|
* @default 1
|
|
*
|
|
* @arg blendMode
|
|
* @text Blend Mode
|
|
* @desc Definição do blend.
|
|
* @text Blend Mode
|
|
* @type select
|
|
* @default Normal
|
|
* @option Additive
|
|
* @value Additive
|
|
* @option Normal
|
|
* @value Normal
|
|
* @option Multiply
|
|
* @value Multiply
|
|
|
|
* @help
|
|
* =============================================================================
|
|
* ♦♦♦ MOG - Menu Particles ♦♦♦
|
|
* Author - Moghunter
|
|
* Version - 1.0
|
|
* Updated - 2020/10/18
|
|
* https://mogplugins.wordpress.com
|
|
* =============================================================================
|
|
* Adiciona partículas nas cenas menu
|
|
* É possivel ativar uma partícula diferente para cada cena ou desativar a
|
|
* partícula em cenas especificas.
|
|
* =============================================================================
|
|
* As imagens das patículas deverão ficar na paste /img/menus/
|
|
* =============================================================================
|
|
* No caso da opção Unique Particles estiver ativada cada partícula deverá
|
|
* seguir essa nomeação.
|
|
*
|
|
* SCENE_NAME + _par.png
|
|
*
|
|
* Exemplo.
|
|
*
|
|
* Scene_Menu_par.png
|
|
* Scene_Item_par.png
|
|
* Scene_Skill_par.png
|
|
* etc...
|
|
*
|
|
*/
|
|
|
|
(() => {
|
|
//=============================================================================
|
|
// ** PLUGIN PARAMETERS
|
|
//=============================================================================
|
|
var Imported = Imported || {};
|
|
Imported.MOG_MenuParticles = true;
|
|
var Moghunter = Moghunter || {};
|
|
|
|
Moghunter.parameters = PluginManager.parameters("MOG_MenuParticles");
|
|
Moghunter.mpart_fileName = String(
|
|
Moghunter.parameters["File Name"] || "Particles"
|
|
);
|
|
Moghunter.mpart_selfpart = String(
|
|
Moghunter.parameters["Unique Particles"] || "false"
|
|
);
|
|
Moghunter.mpart_skipscenes = Object(
|
|
Moghunter.parameters["Disable Scenes"] || []
|
|
);
|
|
Moghunter.mpart_ox = Number(Moghunter.parameters["X-Axis Speed"] || 0);
|
|
Moghunter.mpart_oy = Number(Moghunter.parameters["Y-Axis Speed"] || -1);
|
|
Moghunter.mpart_a = Number(Moghunter.parameters["Rotation Speed"] || 1);
|
|
Moghunter.mpart_number = Number(
|
|
Moghunter.parameters["Number of Particles"] || 15
|
|
);
|
|
Moghunter.mpart_blendMode = String(
|
|
Moghunter.parameters["Blend Mode"] || "Normal"
|
|
);
|
|
SceneManager._mpart = false;
|
|
|
|
//==============================
|
|
// * Setup Command
|
|
//==============================
|
|
PluginManager.registerCommand(
|
|
"MOG_MenuParticles",
|
|
"MenuParticles_Setup",
|
|
(data) => {
|
|
const fileName = String(data.fileName);
|
|
const sx = Number(data.sx);
|
|
const sy = Number(data.sy);
|
|
const rt = Number(data.rt);
|
|
const power = Number(data.power);
|
|
const blendMode = $gameSystem.parameterCommandGetBlend(
|
|
String(data.blendMode)
|
|
);
|
|
$gameSystem._menuParticlesData.fileName = fileName;
|
|
$gameSystem._menuParticlesData.sx = sx;
|
|
$gameSystem._menuParticlesData.sy = sy;
|
|
$gameSystem._menuParticlesData.rt = rt;
|
|
$gameSystem._menuParticlesData.power = Math.min(Math.max(power, 5), 1000);
|
|
$gameSystem._menuParticlesData.blensMode = blendMode;
|
|
$gameSystem._menuParticlesData.needRefresh = true;
|
|
}
|
|
);
|
|
|
|
//=============================================================================
|
|
// ■■■ ImageManager ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// * Menus
|
|
//==============================
|
|
ImageManager.loadMenus = function (filename) {
|
|
return this.loadBitmap("img/menus/", filename);
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Game System ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Initialize
|
|
//==============================
|
|
const _mog_menuParticles_gSystem_initialize =
|
|
Game_System.prototype.initialize;
|
|
Game_System.prototype.initialize = function () {
|
|
_mog_menuParticles_gSystem_initialize.call(this);
|
|
this.setupMenuParticles();
|
|
};
|
|
|
|
//==============================
|
|
// * Setup Menu Particles
|
|
//==============================
|
|
Game_System.prototype.setupMenuParticles = function () {
|
|
this._menuParticlesData = {};
|
|
this._menuParticlesData.fileName = String(Moghunter.mpart_fileName);
|
|
this._menuParticlesData.sx = Number(Moghunter.mpart_ox);
|
|
this._menuParticlesData.sy = Number(Moghunter.mpart_oy);
|
|
this._menuParticlesData.rt = Number(Moghunter.mpart_a);
|
|
this._menuParticlesData.power = Math.min(
|
|
Math.max(Number(Moghunter.mpart_number), 5),
|
|
1000
|
|
);
|
|
this._menuParticlesData.blendMode = this.parameterCommandGetBlend(
|
|
String(Moghunter.mpart_blendMode)
|
|
);
|
|
this._menuParticlesData.needRefresh = false;
|
|
};
|
|
|
|
//==============================
|
|
// * parameterCommandGetBlend
|
|
//==============================
|
|
Game_System.prototype.parameterCommandGetBlend = function (blend) {
|
|
if (blend == "Additive") {
|
|
return 1;
|
|
} else if (blend == "Multiply") {
|
|
return 2;
|
|
}
|
|
return 0;
|
|
};
|
|
|
|
//==============================
|
|
// * 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]));
|
|
}
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ Scene MenuBase ■■■
|
|
//=============================================================================
|
|
|
|
//==============================
|
|
// ** create Menu Field 1
|
|
//==============================
|
|
Scene_MenuBase.prototype.createMenuField1 = function () {
|
|
this._menuField1 = new Sprite();
|
|
this._menuField1.z = 10;
|
|
this.addChild(this._menuField1);
|
|
};
|
|
|
|
//==============================
|
|
// ** sort MZ
|
|
//==============================
|
|
Scene_MenuBase.prototype.sortMenuMz = function () {
|
|
if (this._menuField1) {
|
|
this._menuField1.children.sort((a, b) => a.z - b.z);
|
|
}
|
|
if (this._menuField2) {
|
|
this._menuField2.children.sort((a, b) => a.z - b.z);
|
|
}
|
|
if (this._menuField3) {
|
|
this._menuField3.children.sort((a, b) => a.z - b.z);
|
|
}
|
|
};
|
|
|
|
//==============================
|
|
// * Skip Particles
|
|
//==============================
|
|
Scene_MenuBase.prototype.skip_particles = function () {
|
|
if (!SceneManager._scene) {
|
|
return false;
|
|
}
|
|
this._mb_skip_scenes = [];
|
|
$gameSystem.get_par_array(
|
|
this._mb_skip_scenes,
|
|
Moghunter.mpart_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 ♦ Create
|
|
//==============================
|
|
const _mog_mpart_scbase_createBackground =
|
|
Scene_MenuBase.prototype.createBackground;
|
|
Scene_MenuBase.prototype.createBackground = function () {
|
|
SceneManager._mpart = false;
|
|
_mog_mpart_scbase_createBackground.call(this);
|
|
if (!this._menuField1) {
|
|
this.createMenuField1();
|
|
}
|
|
if (!this.skip_particles()) {
|
|
this.createMenuParticles();
|
|
}
|
|
this.sortMenuMz();
|
|
};
|
|
|
|
//==============================
|
|
// ♦ ALIAS ♦ Terminate
|
|
//==============================
|
|
const _mog_mpart_scmb_terminate = Scene_MenuBase.prototype.terminate;
|
|
Scene_MenuBase.prototype.terminate = function () {
|
|
_mog_mpart_scmb_terminate.call(this);
|
|
SceneManager._mpart = false;
|
|
};
|
|
|
|
//==============================
|
|
// * Create Menu Particles
|
|
//==============================
|
|
Scene_MenuBase.prototype.createMenuParticles = function () {
|
|
this._menuParticles = new MenuParticles();
|
|
this._menuParticles.z = 30;
|
|
this._menuField1.addChild(this._menuParticles);
|
|
SceneManager._mpart = true;
|
|
};
|
|
|
|
//=============================================================================
|
|
// ■■■ MenuParticles ■■■
|
|
//=============================================================================
|
|
function MenuParticles() {
|
|
this.initialize.apply(this, arguments);
|
|
}
|
|
|
|
MenuParticles.prototype = Object.create(Sprite.prototype);
|
|
MenuParticles.prototype.constructor = MenuParticles;
|
|
|
|
//==============================
|
|
// ♦♦ Initialize
|
|
//==============================
|
|
MenuParticles.prototype.initialize = function () {
|
|
Sprite.prototype.initialize.call(this);
|
|
this.createParticles();
|
|
};
|
|
|
|
//==============================
|
|
// * File Name
|
|
//==============================
|
|
MenuParticles.prototype.fileName = function () {
|
|
if (this._self_par && SceneManager._scene) {
|
|
return SceneManager._scene.constructor.name + "_par";
|
|
}
|
|
return String($gameSystem._menuParticlesData.fileName);
|
|
};
|
|
|
|
//==============================
|
|
// * max Particles
|
|
//==============================
|
|
MenuParticles.prototype.maxParticles = function () {
|
|
return $gameSystem._menuParticlesData.power;
|
|
};
|
|
|
|
//==============================
|
|
// * Create Mbackground
|
|
//==============================
|
|
MenuParticles.prototype.createParticles = function () {
|
|
this._self_par = false;
|
|
if (String(Moghunter.mpart_selfpart) === "true") {
|
|
this._self_par = true;
|
|
}
|
|
this._sprite_particles = [];
|
|
this._sprite_particles_data = [];
|
|
this._nw = [0, 0];
|
|
if (Moghunter.mpart_ox > 0) {
|
|
this._nw[0] = -(Graphics.width / 3);
|
|
}
|
|
if (Moghunter.mpart_ox < 0) {
|
|
this._nw[0] = Graphics.width / 3;
|
|
}
|
|
this._nw[1] = Math.abs(this._nw[0]);
|
|
for (i = 0; i < this.maxParticles(); i++) {
|
|
this._sprite_particles.push(
|
|
new Sprite(ImageManager.loadMenus(this.fileName()))
|
|
);
|
|
this.addChild(this._sprite_particles[i]);
|
|
this._sprite_particles_data[i] = [];
|
|
this.reset_particles(i);
|
|
this._sprite_particles[i].x = Math.randomInt(Graphics.width);
|
|
this._sprite_particles[i].y = Math.randomInt(Graphics.height);
|
|
this._sprite_particles[i].opacity = 0;
|
|
this._sprite_particles[i].blendMode =
|
|
$gameSystem._menuParticlesData.blendMode;
|
|
this._sprite_particles[i].z = 30 + i;
|
|
}
|
|
};
|
|
|
|
//==============================
|
|
// * Reset Particles
|
|
//==============================
|
|
MenuParticles.prototype.reset_particles = function (i) {
|
|
this._sprite_particles_data[i][0] =
|
|
(Math.random() * 2 + 0.4) * $gameSystem._menuParticlesData.sx;
|
|
this._sprite_particles_data[i][1] =
|
|
(Math.random() * 2 + 0.4) * $gameSystem._menuParticlesData.sy;
|
|
this._sprite_particles_data[i][2] =
|
|
Math.random() * $gameSystem._menuParticlesData.rt * 0.01;
|
|
this._sprite_particles[i].opacity = 0;
|
|
this._sprite_particles[i].x = this._nw[0] + Math.randomInt(Graphics.width);
|
|
var pz = Math.random() * 0.5 * 1;
|
|
this._sprite_particles[i].scale = new PIXI.Point(
|
|
0.5 + Number(pz),
|
|
0.5 + Number(pz)
|
|
);
|
|
if (Moghunter.mpart_oy < 0) {
|
|
this._sprite_particles[i].y =
|
|
Graphics.boxHeight + this._sprite_particles[i].height * 3;
|
|
} else if (Moghunter.mpart_oy > 0) {
|
|
this._sprite_particles[i].y = -this._sprite_particles[i].height * 3;
|
|
} else {
|
|
this._sprite_particles[i].y = Math.randomInt(Graphics.height);
|
|
}
|
|
if (
|
|
this._sprite_particles_data[i][0] == 0 &&
|
|
this._sprite_particles_data[i][1] == 0
|
|
) {
|
|
this._sprite_particles[i].x = -Graphics.width;
|
|
}
|
|
};
|
|
|
|
//==============================
|
|
// * Update Particles
|
|
//==============================
|
|
MenuParticles.prototype.updateParticles = function () {
|
|
for (var i = 0; i < this._sprite_particles.length; i++) {
|
|
this._sprite_particles[i].x += this._sprite_particles_data[i][0];
|
|
this._sprite_particles[i].y += this._sprite_particles_data[i][1];
|
|
this._sprite_particles[i].opacity += 4;
|
|
this._sprite_particles[i].rotation += this._sprite_particles_data[i][2];
|
|
if (this.need_reset_particles(i)) {
|
|
this.reset_particles(i);
|
|
}
|
|
}
|
|
};
|
|
|
|
//==============================
|
|
// * Need Reset Particles
|
|
//==============================
|
|
MenuParticles.prototype.need_reset_particles = function (i) {
|
|
if (
|
|
this._sprite_particles[i].x <
|
|
-this._nw[1] - this._sprite_particles[i].width * 3
|
|
) {
|
|
return true;
|
|
}
|
|
if (
|
|
this._sprite_particles[i].x >
|
|
this._nw[1] + Graphics.width + this._sprite_particles[i].width * 3
|
|
) {
|
|
return true;
|
|
}
|
|
if (this._sprite_particles[i].y < -this._sprite_particles[i].height * 3) {
|
|
return true;
|
|
}
|
|
if (
|
|
this._sprite_particles[i].y >
|
|
Graphics.height + this._sprite_particles[i].height * 3
|
|
) {
|
|
return true;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
//==============================
|
|
// ♦♦ Update
|
|
//==============================
|
|
MenuParticles.prototype.update = function () {
|
|
Sprite.prototype.update.call(this);
|
|
if (this._sprite_particles) {
|
|
this.updateParticles();
|
|
}
|
|
};
|
|
})();
|