Files
2019-11-05 20:14:51 +01:00

367 lines
12 KiB
JavaScript

//=============================================================================
// Yanfly Engine Plugins - Message Core Extension - Message Speed Option
// YEP_X_MessageSpeedOpt.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_X_MessageSpeedOpt = true;
var Yanfly = Yanfly || {};
Yanfly.MsgSpdOpt = Yanfly.MsgSpdOpt || {};
Yanfly.MsgSpdOpt.version = 1.00;
//=============================================================================
/*:
* @plugindesc v1.00 (Requires YEP_MessageCore.js) Let your places adjust the
* speed the message window displays text.
* @author Yanfly Engine Plugins
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* This plugin requires YEP_MessageCore.
* Make sure this plugin is located under YEP_MessageCore in the plugin list.
*
* The option to control the message speed is quite common in RPG's nowadays.
* Players can put in whatever option they feel like for the text to go at, or
* if they wish, to have the text display instantly! This plugin will add in
* the 'Message Speed' option into your Options Menu for players to adjust! It
* comes with speeds from 0 (slowest) to 10 (fastest) and even an "11th" speed
* of being instant!
*
* ============================================================================
* 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[87]Message Speed
*
* Help Description:
* Changes the speed text is displayed during messages.
*
* Symbol:
* messageSpeed
*
* Show/Hide:
* show = Imported.YEP_X_MessageSpeedOpt;
*
* 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);
* var value = this.getConfigValue(symbol);
* var rate = ((value) / 10).clamp(0, 1);
* if (value > 10) {
* var gaugeColor1 = this.textColor(14);
* var gaugeColor2 = this.textColor(6);
* } else {
* var gaugeColor1 = this.textColor(20);
* var gaugeColor2 = this.textColor(21);
* }
* this.drawOptionsGauge(index, rate, gaugeColor1, gaugeColor2);
* this.drawText(this.statusText(index), titleWidth, rect.y, statusWidth, 'center');
*
* Process OK Code:
* var index = this.index();
* var symbol = this.commandSymbol(index);
* var value = this.getConfigValue(symbol);
* value += 1;
* if (value > 11) value = 0;
* value = value.clamp(0, 11);
* this.changeValue(symbol, value);
*
* Cursor Right Code:
* var index = this.index();
* var symbol = this.commandSymbol(index);
* var value = this.getConfigValue(symbol);
* value += 1;
* value = value.clamp(0, 11);
* this.changeValue(symbol, value);
*
* Cursor Left Code:
* var index = this.index();
* var symbol = this.commandSymbol(index);
* var value = this.getConfigValue(symbol);
* value -= 1;
* value = value.clamp(0, 11);
* this.changeValue(symbol, value);
*
* 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 BETA:
* - Started Plugin!
*
* ============================================================================
* End of Helpfile
* ============================================================================
*
* @param OptionsCommand
* @text Options Command
* @desc The name of the option to be used.
* @default Message Speed
*
* @param DefaultSpeed
* @text Default Speed
* @type number
* @min 0
* @max 11
* @desc Default speed used by text messages. Use a number betwee
* 0 - Slowest, 10 - Fastest, 11 - Instant
* @default 8
*
* @param InstantText
* @text Instant Text
* @desc The text to display to show the speed is instant.
* @default Instant
*
*/
//=============================================================================
if (Imported.YEP_MessageCore) {
//=============================================================================
// Parameter Variables
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('YEP_X_MessageSpeedOpt');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.MsgSpeedOptCmd = String(Yanfly.Parameters['OptionsCommand']);
Yanfly.Param.MsgSpeedOptDefault = Number(Yanfly.Parameters['DefaultSpeed']);
Yanfly.Param.MsgSpeedOptInstant = String(Yanfly.Parameters['InstantText']);
//=============================================================================
// ConfigManager
//=============================================================================
ConfigManager.messageSpeed = Yanfly.Param.MsgSpeedOptDefault;
Yanfly.MsgSpdOpt.ConfigManager_makeData = ConfigManager.makeData;
ConfigManager.makeData = function() {
var config = Yanfly.MsgSpdOpt.ConfigManager_makeData.call(this);
config.messageSpeed = this.messageSpeed;
return config;
};
Yanfly.MsgSpdOpt.ConfigManager_applyData = ConfigManager.applyData;
ConfigManager.applyData = function(config) {
Yanfly.MsgSpdOpt.ConfigManager_applyData.call(this, config);
this.messageSpeed = this.readConfigMessageSpeed(config, 'messageSpeed');
};
ConfigManager.readConfigMessageSpeed = function(config, name) {
var value = config[name];
if (value !== undefined) {
return value;
} else {
return Yanfly.Param.MsgSpeedOptDefault;
}
};
//=============================================================================
// Window_Message
//=============================================================================
Yanfly.MsgSpdOpt.Window_Message_newPage = Window_Message.prototype.newPage;
Window_Message.prototype.newPage = function(textState) {
Yanfly.MsgSpdOpt.Window_Message_newPage.call(this, textState);
this._textDelay = 0;
};
Yanfly.MsgSpdOpt.Window_Message_updateShowFast =
Window_Message.prototype.updateShowFast;
Window_Message.prototype.updateShowFast = function() {
Yanfly.MsgSpdOpt.Window_Message_updateShowFast.call(this);
if (this.messageSpeed() < 0) this._showFast = true;
};
Window_Message.prototype.messageSpeed = function() {
return 10 - (ConfigManager.messageSpeed.clamp(0, 11));
};
Window_Message.prototype.updateMessage = function() {
if (this._textState) {
while (!this.isEndOfText(this._textState)) {
if (this.needsNewPage(this._textState)) {
this.newPage(this._textState);
}
this.updateShowFast();
if (this._textDelay <= 0 || this._showFast || this._lineShowFast) {
this.processCharacter(this._textState);
this._textDelay = this.messageSpeed();
} else {
this._textDelay -= 1;
break;
}
if (!this._showFast && !this._lineShowFast) {
break;
}
if (this.pause || this._waitCount > 0) {
break;
}
}
if (this.isEndOfText(this._textState)) {
this.onEndOfText();
}
return true;
} else {
return false;
}
};
if (Imported.YEP_X_ExtMesPack1) {
Yanfly.EMP1.Window_Message_updateMessage =
Window_Message.prototype.updateMessage;
Window_Message.prototype.updateMessage = function() {
var state = Yanfly.EMP1.Window_Message_updateMessage.call(this);
if (state) {
this._soundCount = this._soundCount || 0;
if (this._soundCount-- <= 0) {
this._soundCount = $gameSystem.messageSoundInterval();
if ($gameSystem.isMessageSoundEnabled()) SoundManager.playMessageSound();
}
}
return state;
}
}; // Imported.YEP_X_ExtMesPack1
Yanfly.MsgSpdOpt.Window_Message_updateWait =
Window_Message.prototype.updateWait;
Window_Message.prototype.updateWait = function() {
if (this.messageSpeed() < 0) {
this._waitCount = 0;
this._lineShowFast = true;
this._showFast = true;
}
return Yanfly.MsgSpdOpt.Window_Message_updateWait.call(this);
};
//=============================================================================
// Window_Options
//=============================================================================
Yanfly.MsgSpdOpt.Window_Options_addGeneralOptions =
Window_Options.prototype.addGeneralOptions;
Window_Options.prototype.addGeneralOptions = function() {
Yanfly.MsgSpdOpt.Window_Options_addGeneralOptions.call(this);
if (Imported.YEP_OptionsCore) return;
this.addMessageSpeedOptions();
};
Window_Options.prototype.addMessageSpeedOptions = function() {
this.addCommand(Yanfly.Param.MsgSpeedOptCmd, 'messageSpeed');
};
Yanfly.MsgSpdOpt.Window_Options_statusText = Window_Options.prototype.statusText;
Window_Options.prototype.statusText = function(index) {
var symbol = this.commandSymbol(index);
var value = this.getConfigValue(symbol);
if (symbol === 'messageSpeed') {
if (value > 10) return Yanfly.Param.MsgSpeedOptInstant;
return Yanfly.Util.toGroup(value);
} else {
return Yanfly.MsgSpdOpt.Window_Options_statusText.call(this, index);
}
};
if (!Imported.YEP_OptionsCore) {
Yanfly.MsgSpdOpt.Window_Options_processOk = Window_Options.prototype.processOk;
Window_Options.prototype.processOk = function() {
var index = this.index();
var symbol = this.commandSymbol(index);
if (symbol === 'messageSpeed') {
var value = this.getConfigValue(symbol);
value += 1;
if (value > 11) value = 0;
value = value.clamp(0, 11);
this.changeValue(symbol, value);
} else {
Yanfly.MsgSpdOpt.Window_Options_processOk.call(this);
}
};
Yanfly.MsgSpdOpt.Window_Options_cursorRight =
Window_Options.prototype.cursorRight;
Window_Options.prototype.cursorRight = function(wrap) {
var index = this.index();
var symbol = this.commandSymbol(index);
if (symbol === 'messageSpeed') {
var value = this.getConfigValue(symbol);
value += 1;
value = value.clamp(0, 11);
this.changeValue(symbol, value);
} else {
Yanfly.MsgSpdOpt.Window_Options_cursorRight.call(this, wrap);
}
};
Yanfly.MsgSpdOpt.Window_Options_cursorLeft =
Window_Options.prototype.cursorLeft;
Window_Options.prototype.cursorLeft = function(wrap) {
var index = this.index();
var symbol = this.commandSymbol(index);
if (symbol === 'messageSpeed') {
var value = this.getConfigValue(symbol);
value -= 1;
value = value.clamp(0, 11);
this.changeValue(symbol, value);
} else {
Yanfly.MsgSpdOpt.Window_Options_cursorLeft.call(this, wrap);
}
};
}; // Imported.YEP_OptionsCore
//=============================================================================
// End of File
//=============================================================================
} else {
var text = '';
text += 'You are getting this error because you are trying to run ';
text += 'YEP_X_MessageSpeedOpt without the required plugins. Please visit ';
text += 'Yanfly.moe and install the required plugins neede for this plugin ';
text += 'found in this plugin\'s help file before you can use it.';
console.log(text);
require('nw.gui').Window.get().showDevTools();
}; // Imported.YEP_MessageCore