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

265 lines
8.8 KiB
JavaScript

//=============================================================================
// Yanfly Engine Plugins - Help File Access
// YEP_HelpFileAccess.js
//=============================================================================
var Imported = Imported || {};
Imported.YEP_HelpFileAccess = true;
var Yanfly = Yanfly || {};
Yanfly.Help = Yanfly.Help || {};
Yanfly.Help.version = 1.00;
//=============================================================================
/*:
* @plugindesc v1.00 Set the F1 key to open up an HTML help file when
* pressued during your game.
* @author Yanfly Engine Plugins
*
* @param ---General---
* @default
*
* @param Help File Path
* @parent ---General---
* @desc Path to the help file. Use a local path to an HTML file or
* a URL for an online website.
* @default /help/index.htm
*
* @param Enable F1 Key
* @parent ---General---
* @type boolean
* @on Enable
* @off Disable
* @desc Enable the F1 key to open the help file?
* ON - true OFF - false
* @default true
*
* @param ---Menu---
* @default
*
* @param Help Command
* @parent ---Menu---
* @desc This is the text used for the menu command.
* @default Help
*
* @param Auto Add Menu
* @parent ---Menu---
* @type boolean
* @on YES
* @off NO
* @desc Automatically add the 'Help' command to the main menu?
* NO - false YES - true
* @default true
*
* @param Show Command
* @parent ---Menu---
* @type boolean
* @on Show
* @off Hide
* @desc Show the Help command in the main menu by default?
* NO - false YES - true
* @default true
*
* @param Auto Place Command
* @parent ---Menu---
* @type boolean
* @on YES
* @off NO
* @desc Allow this plugin to decide the menu placement position?
* NO - false YES - true
* @default true
*
* @help
* ============================================================================
* Introduction
* ============================================================================
*
* It's not surprising for streamlined games nowadays to have their own help
* manuals included with the game or accessible within the game. RPG Maker MV
* doesn't provide anything like that by default, unfortunately. However, using
* this plugin, you can create ways to access the helpfile from within your
* game through either the F1 key or an in-game menu.
*
* This helpfile can be linked to a local HTML file within the directory or to
* a website URL online, such as a wiki page. This setting has to be changed in
* the 'Help File Path' plugin parameters.
*
* ============================================================================
* Main Menu Manager - Positioning the Help Command
* ============================================================================
*
* For those using the Main Menu Manager and would like to position the Help
* command in a place you'd like, use the following format:
*
* Name: Yanfly.Param.HelpCmd
* Symbol: help
* Show: $gameSystem.isShowHelpCommand()
* Enabled: true
* Ext:
* Main Bind: this.commandHelp.bind(this)
* Actor Bind:
*
* Insert the above setup within a Main Menu Manager slot. Provided you copy
* the exact settings to where you need it, it will appear there while using
* all of the naming, enabling, disabling, hiding, and showing effects done by
* the plugin parameters.
*
* Remember to turn off 'Auto Add Menu' from the plugin parameters.
*
* ============================================================================
* Plugin Commands
* ============================================================================
*
* You can use the following plugin commands to adjust how accessing the help
* file is done for your game.
*
* Plugin Commands
*
* OpenHelp
* - This will open up the help file or URL for your game.
*
* ShowMenuHelpCommand
* - Will make the 'Help' command show up in the main menu.
*
* HideMenuHelpCommand
* - Will make the 'Help' command hidden in the main menu.
*/
//=============================================================================
Yanfly.Parameters = PluginManager.parameters('YEP_HelpFileAccess');
Yanfly.Param = Yanfly.Param || {};
Yanfly.Param.HelpFilePath = String(Yanfly.Parameters['Help File Path']);
Yanfly.Param.HelpF1Key = eval(String(Yanfly.Parameters['Enable F1 Key']));
Yanfly.Param.HelpCmd = String(Yanfly.Parameters['Help Command']);
Yanfly.Param.HelpAutoAdd = eval(String(Yanfly.Parameters['Auto Add Menu']));
Yanfly.Param.HelpShow = eval(String(Yanfly.Parameters['Show Command']));
Yanfly.Param.HelpAutoPlace = String(Yanfly.Parameters['Auto Place Command']);
Yanfly.Param.HelpAutoPlace = eval(Yanfly.Param.HelpAutoPlace);
//=============================================================================
// Graphics
//=============================================================================
if (Yanfly.Param.HelpF1Key) {
Yanfly.Help.Graphics_onKeyDown = Graphics._onKeyDown;
Graphics._onKeyDown = function(event) {
Yanfly.Help.Graphics_onKeyDown.call(this, event);
if (!event.ctrlKey && !event.altKey && event.keyCode === 112) {
Yanfly.AccessHelpFile();
};
};
}; // Yanfly.Param.HelpF1Key
//=============================================================================
// Game_System
//=============================================================================
Yanfly.Help.Game_System_initialize = Game_System.prototype.initialize;
Game_System.prototype.initialize = function() {
Yanfly.Help.Game_System_initialize.call(this);
this.initHelp();
};
Game_System.prototype.initHelp = function() {
this._helpCommandShow = Yanfly.Param.HelpShow;
};
Game_System.prototype.isShowHelpCommand = function() {
if (this._helpCommandShow === undefined) this.initHelp();
return this._helpCommandShow;
};
Game_System.prototype.setShowHelpCommand = function(value) {
if (this._helpCommandShow === undefined) this.initHelp();
this._helpCommandShow = value;
};
//=============================================================================
// Game_Interpreter
//=============================================================================
Yanfly.Help.Game_Interpreter_pluginCommand =
Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Yanfly.Help.Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'OpenHelp') {
Yanfly.AccessHelpFile();
} else if (command === 'ShowMenuHelpCommand') {
$gameSystem.setShowHelpCommand(true);
} else if (command === 'HideMenuHelpCommand') {
$gameSystem.setShowHelpCommand(false);
}
};
//=============================================================================
// Window_MenuCommand
//=============================================================================
Yanfly.Help.Window_MenuCommand_addOriginalCommands =
Window_MenuCommand.prototype.addOriginalCommands;
Window_MenuCommand.prototype.addOriginalCommands = function() {
Yanfly.Help.Window_MenuCommand_addOriginalCommands.call(this);
if (Yanfly.Param.HelpAutoAdd) this.addHelpCommand();
};
Window_MenuCommand.prototype.addHelpCommand = function() {
if (!Yanfly.Param.HelpAutoPlace) return;
if (!$gameSystem.isShowHelpCommand()) return;
if (this.findSymbol('help') > -1) return;
var text = Yanfly.Param.HelpCmd;
this.addCommand(text, 'help', true);
};
//=============================================================================
// Scene_Menu
//=============================================================================
Yanfly.Help.Scene_Menu_createCommandWindow =
Scene_Menu.prototype.createCommandWindow;
Scene_Menu.prototype.createCommandWindow = function() {
Yanfly.Help.Scene_Menu_createCommandWindow.call(this);
this._commandWindow.setHandler('help', this.commandHelp.bind(this));
};
Scene_Menu.prototype.commandHelp = function() {
Yanfly.AccessHelpFile();
this._commandWindow.activate();
};
//=============================================================================
// Utilities
//=============================================================================
Yanfly.AccessHelpFile = function() {
if ($gameTemp.isPlaytest()) console.log('Opening Help File...');
TouchInput.clear();
Input.clear();
var url = this.getHelpFileUrl();
var win = window.open(url);
if (win) {
win.focus();
} else if (Imported.YEP_ExternalLinks) {
SceneManager.openPopupBlockerMessage();
}
};
Yanfly.getHelpFileUrl = function() {
var url = Yanfly.Param.HelpFilePath;
if (url.match(/http/i)) {
return url;
} else {
var path = window.location.pathname.replace(/(\/www|)\/[^\/]*$/,
'/' + Yanfly.Param.HelpFilePath);
if (path.match(/^\/([A-Z]\:)/)) path = path.slice(1);
path = decodeURI(path);
return path;
}
};
//=============================================================================
// End of File
//=============================================================================