OMORI_Android/www.eng/js/plugins/SimpleEventFade.js
2024-01-15 18:44:53 +03:00

105 lines
No EOL
3.9 KiB
JavaScript

//=============================================================================
// Simple Event Fade
// SimpleEventFade.js
// Version: 1.1
// Author: Kuoushi
//=============================================================================
//=============================================================================
/*:
* @plugindesc v1.1 Makes fading events in or out easier.
* @author Kuoushi
*
* @param Default Fade Time
* @desc The default number of frames to fade an event in or out. (1 - 255)
* @default 30
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* This plugin is meant to make events fading in or out a much simpler process
* than having to set the opacity over and over. Not sure if anyone else has
* that issue or not, (or if it's actually fixable in engine), but I made a
* plugin to help simplify the process.
*
* In the move route of the event you want to fade, add a script call where
* you want the fade to occur. The script call would be one of the following:
*
* this.fadeIn(x)
* this.fadeOut(x)
*
* x is the number of frames you want the fade to last. If you just want to use
* the default in the plugin parameters then you can just say this.fadeIn() for
* even further convenience. The fade will start on whatever your character's
* current opacity is set at.
*
* ============================================================================
* Changelog
* ============================================================================
*
* 1.1 Fixed possible bug where we didn't move the moveroute index back
* after splicing in the new fade commands. Also added in a new fadeTo
* command that'll allow you to fade to a specific opacity instead of
* just in or out.
* 1.01 Fixed the issue which required the call to be at the end of the
* route list. Now it can be called in any location in a movement route.
* 1.00 Plugin with basic functionality created.
*
*/
//=============================================================================
(function() {
var Parameters = PluginManager.parameters('SimpleEventFade');
var DefaultFadeTime = Number(Parameters['Default Fade Time']);
Game_CharacterBase.prototype.fadeOut = function(numFrames) {
this.fadeTo(0,numFrames);
};
Game_CharacterBase.prototype.fadeIn = function(numFrames) {
this.fadeTo(255,numFrames);
};
Game_CharacterBase.prototype.fadeTo = function(fadeOpac, numFrames) {
var time = DefaultFadeTime;
if(numFrames)
time = numFrames;
var route = {};
route.list = [];
var waitObj = {};
waitObj.code = Game_Character.ROUTE_WAIT;
waitObj.parameters = [1];
var step = (fadeOpac - this._opacity) / time;
if(step < 0)
step = Math.ceil(Math.abs(step)) * -1;
else
step = Math.ceil(step);
for(var i = this._opacity; i != fadeOpac; i += step) {
var command = new Object();
command.code = Game_Character.ROUTE_CHANGE_OPACITY;
command.parameters = [i];
route.list.push(command);
route.list.push(waitObj);
if(i != fadeOpac) {
if((step > 0 && (i + step) > fadeOpac) || (step < 0 && (i + step) < fadeOpac)) {
var last = new Object();
last.code = Game_Character.ROUTE_CHANGE_OPACITY;
last.parameters = [fadeOpac];
route.list.push(last);
i = fadeOpac - step;
}
}
}
route.list = this._moveRoute.list.slice(0,this._moveRouteIndex).concat(route.list).concat(this._moveRoute.list.slice(this._moveRouteIndex+1));
this._moveRoute.list = route.list;
this._moveRouteIndex--;
};
})();