//============================================================================= // MOG_MenuParticles.js //============================================================================= /*: * @plugindesc (v1.1) Adiciona partículas nas cenas menu. * @author Moghunter * * @param Number of Particles * @desc Definição do numero de partículas. * @default 15 * * @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 * * @param Unique Particles * @desc Cada cena terá uma imagem de partícula diferente. * @default false * * @param X-Axis Speed * @desc Definição da velocidade de deslize na horizontal. * @default 0 * * @param Y-Axis Speed * @desc Definição da velocidade de deslize na vertical. * @default -1 * * @param Rotation Speed * @desc Definição da velocidade da rotação. * @default 1 * * @param Blend Mode * @desc Definição do modo Blend. * @default 1 * * @help * ============================================================================= * +++ MOG - Menu Particles (v1.1) +++ * By Moghunter * https://atelierrgss.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... * ============================================================================= * HISTÓRICO * ============================================================================= * (v1.1) - Correção da função UNIQUE PARTICLES. * */ //============================================================================= // ** PLUGIN PARAMETERS //============================================================================= var Imported = Imported || {}; Imported.MOG_MenuParticles = true; var Moghunter = Moghunter || {}; Moghunter.parameters = PluginManager.parameters("MOG_MenuParticles"); 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 = Number(Moghunter.parameters["Blend Mode"] || 1); SceneManager._mpart = false; //============================================================================= // ** ImageManager //============================================================================= //============================== // * Menus //============================== ImageManager.loadMenus = function (filename) { return this.loadBitmap("img/menus/", filename, 0, true); }; //============================================================================= // ** Game System //============================================================================= //============================== // * 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 //============================================================================= //============================== // * 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; }; //============================== // * Create //============================== var _alias_mog_mpart_scbase_createBackground = Scene_MenuBase.prototype.createBackground; Scene_MenuBase.prototype.createBackground = function () { SceneManager._mpart = false; _alias_mog_mpart_scbase_createBackground.call(this); if (!this.skip_particles()) { this.create_mparticles(); } }; //============================== // * Terminate //============================== var _alias_mog_mpart_scmb_terminate = Scene_MenuBase.prototype.terminate; Scene_MenuBase.prototype.terminate = function () { _alias_mog_mpart_scmb_terminate.call(this); SceneManager._mpart = false; }; //============================== // * Set Particle Img //============================== Scene_MenuBase.prototype.set_particle_img = function () { if (this._self_par && SceneManager._scene) { return SceneManager._scene.constructor.name + "_par"; } return "Particles"; }; //============================== // * Create Mbackground //============================== Scene_MenuBase.prototype.create_mparticles = function () { this._self_par = false; SceneManager._mpart = true; 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.boxWidth / 3); } if (Moghunter.mpart_ox < 0) { this._nw[0] = Graphics.boxWidth / 3; } this._nw[1] = Math.abs(this._nw[0]); for (i = 0; i < Moghunter.mpart_number; i++) { this._sprite_particles.push( new Sprite(ImageManager.loadMenus(this.set_particle_img())) ); this.addChild(this._sprite_particles[i]); this._sprite_particles_data[i] = []; this.reset_particles(i); this._sprite_particles[i].x = Math.randomInt(Graphics.boxWidth); this._sprite_particles[i].y = Math.randomInt(Graphics.boxHeight); this._sprite_particles[i].opacity = 0; this._sprite_particles[i].blendMode = Moghunter.mpart_blendMode; } }; //============================== // * Reset Particles //============================== Scene_MenuBase.prototype.reset_particles = function (i) { this._sprite_particles_data[i][0] = (Math.random() * 2 + 0.4) * Moghunter.mpart_ox; this._sprite_particles_data[i][1] = (Math.random() * 2 + 0.4) * Moghunter.mpart_oy; this._sprite_particles_data[i][2] = Math.random() * Moghunter.mpart_a * 0.01; this._sprite_particles[i].opacity = 0; this._sprite_particles[i].x = this._nw[0] + Math.randomInt(Graphics.boxWidth); 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.boxHeight); } if ( this._sprite_particles_data[i][0] == 0 && this._sprite_particles_data[i][1] == 0 ) { this._sprite_particles[i].x = -Graphics.width; } }; //============================== // * Update //============================== var _mog_mpart_scbase_update = Scene_MenuBase.prototype.update; Scene_MenuBase.prototype.update = function () { _mog_mpart_scbase_update.call(this); if (SceneManager._mpart) { this.update_particles(); } }; //============================== // * Update Particles //============================== Scene_MenuBase.prototype.update_particles = 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 //============================== Scene_MenuBase.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.boxWidth + 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.boxHeight + this._sprite_particles[i].height * 3 ) { return true; } return false; };