244 lines
8.3 KiB
JavaScript
244 lines
8.3 KiB
JavaScript
//=============================================================================
|
|
// Yanfly Engine Plugins - FPS Synch Option
|
|
// YEP_FpsSynchOption.js
|
|
//=============================================================================
|
|
|
|
var Imported = Imported || {};
|
|
Imported.YEP_SynchFpsOption = true;
|
|
|
|
var Yanfly = Yanfly || {};
|
|
Yanfly.FpsSynch = Yanfly.FpsSynch || {};
|
|
Yanfly.FpsSynch.version = 1.03;
|
|
|
|
//=============================================================================
|
|
/*:
|
|
* @plugindesc v1.03 Adds a new command to Options menu for synching
|
|
* the FPS of moniters with higher FPS rates.
|
|
* @author Yanfly Engine Plugins
|
|
*
|
|
* @param Command Name
|
|
* @desc Command name used inside of the Options menu.
|
|
* @default Synch Monitor FPS
|
|
*
|
|
* @param Default Setting
|
|
* @type boolean
|
|
* @on ON
|
|
* @off OFF
|
|
* @desc The default setting of the Synch Monitor FPS.
|
|
* OFF - false (Recommended) ON - true
|
|
* @default false
|
|
*
|
|
* @help
|
|
* ============================================================================
|
|
* Introduction
|
|
* ============================================================================
|
|
*
|
|
* This plugin is to be used with RPG Maker MV version 1.1.0 and upward.
|
|
*
|
|
* RPG Maker MV is constructed in a way where each update to its engine is done
|
|
* once per frame update. While this is normally fine, as many players view the
|
|
* game through 60 fps, some players experience the game differently as their
|
|
* hardware may run at higher than 60 fps.
|
|
*
|
|
* When RPG Maker MV version 1.1.0 is implemented, it implemented Galenmereth's
|
|
* fluid timestep, which forces the game to always play as if it is 60 fps. In
|
|
* practice, this is great for everybody because players that experience more
|
|
* 60 fps will be able to play the game as if it was 60 fps.
|
|
*
|
|
* However, there comes a problem when a player's hardware isn't strong enough
|
|
* to support RPG Maker MV natively at 60 fps (such as the case with older
|
|
* computers, or weaker mobile devices) or if the player is using video
|
|
* recording software that goes below 60 fps. The game will appear laggy and
|
|
* jumping without good response rates from input commands or possibly even
|
|
* make the player miss out on certain visual frame updates.
|
|
*
|
|
* This plugin places a setting in the Options menu to enable or disable the
|
|
* fluid timestep addition and utilize the former RPG Maker MV engine updating
|
|
* function. This way, players will have the option of using fluid timesteps or
|
|
* opting to not use it instead of forcing it on everybody who may not be able
|
|
* to handle it.
|
|
*
|
|
* ============================================================================
|
|
* Options Core Settings - Adding the New Options
|
|
* ============================================================================
|
|
*
|
|
* If you are using YEP_OptionsCore.js, you can add a new Option using this
|
|
* plugin. Here's the following code/parameter settings you can use with it.
|
|
*
|
|
* ---------
|
|
* Settings:
|
|
* ---------
|
|
*
|
|
* Name:
|
|
* \i[302]Synch Monitor FPS
|
|
*
|
|
* Help Description:
|
|
* Turn this ON if your monitor runs above 60 FPS
|
|
* to synchronize the game to run at 60 FPS.
|
|
*
|
|
* Symbol:
|
|
* synchFps
|
|
*
|
|
* Show/Hide:
|
|
* show = Imported.YEP_SynchFpsOption;
|
|
*
|
|
* Enable:
|
|
* enabled = true;
|
|
*
|
|
* Ext:
|
|
* ext = 0;
|
|
*
|
|
* ----------
|
|
* Functions:
|
|
* ----------
|
|
*
|
|
* Make Option Code:
|
|
* this.addCommand(name, symbol, enabled, ext);
|
|
*
|
|
* Draw Option Code:
|
|
* var rect = this.itemRectForText(index);
|
|
* var statusWidth = this.statusWidth();
|
|
* var titleWidth = rect.width - statusWidth;
|
|
* this.resetTextColor();
|
|
* this.changePaintOpacity(this.isCommandEnabled(index));
|
|
* this.drawOptionsName(index);
|
|
* this.drawOptionsOnOff(index);
|
|
*
|
|
* Process OK Code:
|
|
* var index = this.index();
|
|
* var symbol = this.commandSymbol(index);
|
|
* var value = this.getConfigValue(symbol);
|
|
* this.changeValue(symbol, !value);
|
|
*
|
|
* Cursor Right Code:
|
|
* var index = this.index();
|
|
* var symbol = this.commandSymbol(index);
|
|
* var value = this.getConfigValue(symbol);
|
|
* this.changeValue(symbol, true);
|
|
*
|
|
* Cursor Left Code:
|
|
* var index = this.index();
|
|
* var symbol = this.commandSymbol(index);
|
|
* var value = this.getConfigValue(symbol);
|
|
* this.changeValue(symbol, false);
|
|
*
|
|
* Default Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Save Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* Load Config Code:
|
|
* // Empty. Provided by this plugin.
|
|
*
|
|
* ============================================================================
|
|
* Changelog
|
|
* ============================================================================
|
|
*
|
|
* Version 1.03:
|
|
* - Compatibility update with YEP_OptionsCore.js.
|
|
*
|
|
* Version 1.02:
|
|
* - Updated for RPG Maker MV version 1.5.0.
|
|
*
|
|
* Version 1.01:
|
|
* - The plugin is now prevented if the project's core files are under version
|
|
* RPG Maker MV 1.1.0.
|
|
*
|
|
* Version 1.00:
|
|
* - Finished Plugin!
|
|
*/
|
|
//=============================================================================
|
|
|
|
if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.1.0") {
|
|
//=============================================================================
|
|
// Parameter Variables
|
|
//=============================================================================
|
|
|
|
Yanfly.Parameters = PluginManager.parameters("YEP_FpsSynchOption");
|
|
Yanfly.Param = Yanfly.Param || {};
|
|
|
|
Yanfly.Param.FpsSynchCmd = String(Yanfly.Parameters["Command Name"]);
|
|
Yanfly.Param.FpsSDefault = eval(String(Yanfly.Parameters["Default Setting"]));
|
|
|
|
//=============================================================================
|
|
// MainCode
|
|
//=============================================================================
|
|
|
|
ConfigManager.synchFps = Yanfly.Param.FpsSDefault;
|
|
|
|
Yanfly.FpsSynch.ConfigManager_makeData = ConfigManager.makeData;
|
|
ConfigManager.makeData = function () {
|
|
var config = Yanfly.FpsSynch.ConfigManager_makeData.call(this);
|
|
config.synchFps = this.synchFps;
|
|
return config;
|
|
};
|
|
|
|
Yanfly.FpsSynch.ConfigManager_applyData = ConfigManager.applyData;
|
|
ConfigManager.applyData = function (config) {
|
|
Yanfly.FpsSynch.ConfigManager_applyData.call(this, config);
|
|
this.synchFps = this.readConfigFpsSynch(config, "synchFps");
|
|
};
|
|
|
|
ConfigManager.readConfigFpsSynch = function (config, name) {
|
|
var value = config[name];
|
|
if (value !== undefined) {
|
|
return value;
|
|
} else {
|
|
return Yanfly.Param.FpsSDefault;
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// SceneManager
|
|
//=============================================================================
|
|
|
|
SceneManager.updateMainFluidTimestep = SceneManager.updateMain;
|
|
|
|
SceneManager.updateMain = function () {
|
|
if (ConfigManager.synchFps) {
|
|
this.updateMainFluidTimestep();
|
|
} else {
|
|
this.updateMainNoFpsSynch();
|
|
}
|
|
};
|
|
|
|
SceneManager.updateMainNoFpsSynch = function () {
|
|
this.updateInputData();
|
|
this.changeScene();
|
|
this.updateScene();
|
|
this.renderScene();
|
|
this.requestUpdate();
|
|
};
|
|
|
|
//=============================================================================
|
|
// Window_Options
|
|
//=============================================================================
|
|
|
|
Yanfly.FpsSynch.Window_Options_addGeneralOptions =
|
|
Window_Options.prototype.addGeneralOptions;
|
|
Window_Options.prototype.addGeneralOptions = function () {
|
|
Yanfly.FpsSynch.Window_Options_addGeneralOptions.call(this);
|
|
if (!Imported.YEP_OptionsCore) {
|
|
this.addCommand(Yanfly.Param.FpsSynchCmd, "synchFps");
|
|
}
|
|
};
|
|
|
|
//=============================================================================
|
|
// Version Compatibility Update
|
|
//=============================================================================
|
|
} else {
|
|
var text = "";
|
|
text += "You are getting this error because you are trying to run FPS Synch ";
|
|
text += "Options while your project files are lower than version 1.1.0. \n\n";
|
|
text += "Please visit this thread for instructions on how to update your ";
|
|
text += "project files to 1.1.0 or higher: \n\n";
|
|
text += "http://forums.rpgmakerweb.com/index.php?/topic/";
|
|
text += "71400-rpg-maker-mv-v134-update/";
|
|
console.log(text);
|
|
require("nw.gui").Window.get().showDevTools();
|
|
} // (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= '1.1.0')
|
|
|
|
//=============================================================================
|
|
// End of File
|
|
//=============================================================================
|