//=========================================================================== // MOG_MenuCursor.js // Translate to Japanese : fungamemake.com //=========================================================================== /*: * @plugindesc (v1.6) Adiciona um cursor animado no menu. * @author Moghunter * * @param Slide Animation * @desc Ativar animação de movimento lateral. * @default true * * @param Cursor X-axis * @desc Definição da posição X-axis para ajustes. * @default 0 * * @param Cursor Y-axis * @desc Definição da posição Y-axis para ajustes. * @default 0 * * @param Frames Animation * @desc Ativar animação por frames de imagem. * @default false * * @param Max Frames * @desc Quantidade de frames de animação. * @default 4 * * @param Animation Speed * @desc Definição da velocidade da animação. * @default 7 * * @help * =========================================================================== * +++ MOG - Menu Cursor (v1.6) +++ * By Moghunter * https://atelierrgss.wordpress.com/ * =========================================================================== * Adiciona um cursor animado no menu. * Será necessário o arquivo Menu_Cursor.png gravado na pasta. (img/system/) * * =========================================================================== * HISTÓTICO * =========================================================================== * (v1.6) - Melhoria na codificação. * (v1.5) - Correção de não ativar o cursor animado. * (v1.4) - Correção da velocidade do cursor na cena de titulo. * (v1.3) - Correção de na atualização na posição do Index quando os comandos * ultrapassam o tamanho da janela. * - Melhoria na compatibilidade de plugins. * (v1.2) - Melhoria no sistema de rolamento do mouse. * (v1.1) - Correção do glitch de não ocultar o cursor durante o fade da cena. * - Melhoria da animação inicial do cursor. * */ /*:ja * @plugindesc (v1.6) アニメカーソルをメニューに追加します。 * @author Moghunter * * @param Slide Animation * @text 横モーションアニメの有効化 * @default true * @type boolean * @on 有効 * @off 無効 * * @param Cursor X-axis * @text X軸位置 * @desc 正:右 / 負:左 * @default 0 * * @param Cursor Y-axis * @text Y軸位置 * @desc 正:下 / 負:上 * @default 0 * * @param Frames Animation * @text 画像フレームのアニメの有効化 * @default false * @type boolean * @on 有効 * @off 無効 * * @param Max Frames * @text アニメフレーム数 * @default 4 * * @param Animation Speed * @text アニメの速度設定 * @default 7 * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * =========================================================================== * +++ MOG - Menu Cursor (v1.6) +++ * By Moghunter * https://atelierrgss.wordpress.com/ * =========================================================================== * アニメカーソルをメニューに追加します。 * Menu_Cursor.png ファイルが下記フォルダに保存されている必要があります。 * (img/system/) * * =========================================================================== * 更新履歴 * =========================================================================== * (v1.6) - コーディングの改善 * (v1.5) - アニメカーソルを有効にしなかった問題を修正 * (v1.4) - タイトルシーンのカーソルスピードの修正 * (v1.3) - コマンドがウィンドウサイズを超えた時、インデックス位置の更新を修正 *       - プラグインの互換性を改善 * (v1.2) - マウスローリングシステムの改善 * (v1.1) - シーンフェード中にカーソルを隠さない修正 *       - 初期カーソルアニメを改善 * */ //=========================================================================== // ** PLUGIN PARAMETERS //=========================================================================== var Imported = Imported || {}; Imported.MOG_MenuCursor = true; var Moghunter = Moghunter || {}; Moghunter.parameters = PluginManager.parameters('MOG_MenuCursor'); Moghunter.mcursor_float = String(Moghunter.parameters['Slide Animation'] || true); Moghunter.mcursor_x = Number(Moghunter.parameters['Cursor X-axis'] || 0); Moghunter.mcursor_y = Number(Moghunter.parameters['Cursor Y-axis'] || 0); Moghunter.mcursor_animated = String(Moghunter.parameters['Frames Animation'] || "false"); Moghunter.mcursor_maxframes = Number(Moghunter.parameters['Max Frames'] || 4); Moghunter.mcursor_animationSpeed = Number(Moghunter.parameters['Animation Speed'] || 7); //=========================================================================== // ** Game_Temp //=========================================================================== //============================== // * Initialize //============================== var _alias_mog_mcursor_temp_initialize = Game_Temp.prototype.initialize; Game_Temp.prototype.initialize = function () { _alias_mog_mcursor_temp_initialize.call(this); this._mcursorData = [false, 0, 0, 0]; }; //=========================================================================== // ** Scene_Base //=========================================================================== //============================== // * Initialize //============================== var _mog_mcursor_scnBase_initialize = Scene_Base.prototype.initialize; Scene_Base.prototype.initialize = function () { _mog_mcursor_scnBase_initialize.call(this); if ($gameTemp) { $gameTemp._mcursorData = [false, 0, 0, 0] }; this._sprite_mcursor = null; }; //============================== // * Update //============================== var _mog_mcursor_scnBase_update = Scene_Base.prototype.update; Scene_Base.prototype.update = function () { _mog_mcursor_scnBase_update.call(this); if (!this._sprite_mcursor && $gameTemp && $gameTemp._mcursorData[0]) { this.create_menucursor() }; if (this._sprite_mcursor) { this.update_mcursor(); }; }; //============================== // * Create Menu Cursor //============================== Scene_Base.prototype.create_menucursor = function () { this.removeChild(this._sprite_mcursor); this._sprite_mcursor = new Sprite(ImageManager.loadSystem("Menu_Cursor")); this._sprite_mcursor.opacity = 0; this._sprite_mcursor.anchor.x = 0.5; this._sprite_mcursor.anchor.y = 0.5; this._mcursor_data = [-1, -1, 0, 0, 0, false, false, 0, 0, 0, 5, 0, 0]; if (String(Moghunter.mcursor_float) === "true") { this._mcursor_data[5] = true }; if (String(Moghunter.mcursor_animated) === "true") { this._mcursor_data[6] = true }; this._mcursor_data[11] = Math.min(Math.max(Moghunter.mcursor_animationSpeed, 1), 999); this.addChild(this._sprite_mcursor); }; //============================== // * Update Menu Cursor //============================== Scene_Base.prototype.update_mcursor = function () { if (this.isBusy()) { this._sprite_mcursor.opacity -= 25; return }; if (this._mcursor_data[0] == -1) { this.set_mcursor_initial(); return } if ($gameTemp._mcursorData[1] > 0) { $gameTemp._mcursorData[1] -= 1, this._sprite_mcursor.opacity += 15; } else { this._sprite_mcursor.opacity = 0 }; if (this._mcursor_data[5]) { this.update_mcursor_float() }; if (this._mcursor_data[6]) { this.update_mcursor_frames() }; var nx = $gameTemp._mcursorData[2] + this._mcursor_data[0] + this._mcursor_data[2]; this._sprite_mcursor.x = this.cursorMoveToSVD(this._sprite_mcursor.x, nx, 5); this._sprite_mcursor.y = this.cursorMoveToSVD(this._sprite_mcursor.y, $gameTemp._mcursorData[3] + this._mcursor_data[1], 5); }; //============================== // * Set Mcursor Initial //============================== Scene_Base.prototype.set_mcursor_initial = function () { if (!this._sprite_mcursor.bitmap.isReady()) { return }; this._mcursor_data[0] = Moghunter.mcursor_x; this._mcursor_data[1] = (this._sprite_mcursor.bitmap.height / 2) + Moghunter.mcursor_y; if (this._mcursor_data[6]) { this._mcursor_data[7] = Math.floor(this._sprite_mcursor.bitmap.width / Moghunter.mcursor_maxframes) this._mcursor_data[8] = this._sprite_mcursor.bitmap.height; }; }; //============================== // * Udate Mcursor Frames //============================== Scene_Base.prototype.update_mcursor_frames = function () { this._mcursor_data[10] += 1 if (this._mcursor_data[10] < this._mcursor_data[11]) { return }; this._mcursor_data[10] = 0 this._sprite_mcursor.setFrame(this._mcursor_data[7] * this._mcursor_data[9], 0, this._mcursor_data[7], this._mcursor_data[8]); this._mcursor_data[9] += 1; if (this._mcursor_data[9] >= Moghunter.mcursor_maxframes) { this._mcursor_data[9] = 0 }; }; //============================== // * Update Mcursor Float //============================== Scene_Base.prototype.update_mcursor_float = function () { this._mcursor_data[4] += 1; if (this._mcursor_data[4] < 2) { return; }; this._mcursor_data[4] = 0; this._mcursor_data[3] += 1; if (this._mcursor_data[3] < 15) { this._mcursor_data[2] += 1 } else if (this._mcursor_data[3] < 30) { this._mcursor_data[2] -= 1 } else { this._mcursor_data[2] = 0; this._mcursor_data[3] = 0 }; }; //============================== // * cursor Move toSVD //============================== Scene_Base.prototype.cursorMoveToSVD = function (value, real_value, speed) { if (value == real_value) { return value }; var dnspeed = 5 + (Math.abs(value - real_value) / 10); if (value > real_value) { value -= dnspeed; if (value < real_value) { value = real_value }; } else if (value < real_value) { value += dnspeed; if (value > real_value) { value = real_value }; }; return Math.floor(value); }; //=========================================================================== // ** Window Selectable //=========================================================================== //============================== // * Initialize //============================== var _mog_mcursor_wselect_initialize = Window_Selectable.prototype.initialize; Window_Selectable.prototype.initialize = function (x, y, width, height) { _mog_mcursor_wselect_initialize.call(this, x, y, width, height); this._refCursorIndex = false; }; //============================== // * Update Arrows //============================== var _mog_mcursor_wSelect_updateArrows = Window_Selectable.prototype.updateArrows Window_Selectable.prototype.updateArrows = function () { _mog_mcursor_wSelect_updateArrows.call(this); if (this.need_set_mcursor_data()) { this.set_mcursor_data(); }; }; //============================== // * Need Set MCursor Data //==============================x Window_Selectable.prototype.need_set_mcursor_data = function () { if (!this.active) { return false }; if (!this.visible) { return false }; if (this.index() < 0) { return false }; if (this._opening) { return false }; if (this._closing) { return false }; if (this.openness <= 0) { return false }; if (this.x <= -this.width || this.x >= Graphics.boxWidth) { return false }; if (this.y <= -this.height || this.y >= Graphics.boxHeight) { return false }; if (SceneManager.isSceneChanging()) { return false }; return true; }; //============================== // * Set Mcursor Data //============================== Window_Selectable.prototype.set_mcursor_data = function () { if (!this._refCursorIndex) { this._refCursorIndex = true; this.select(this.index()) }; var rect = this.itemRect(this.index()); if (rect.x < 0 || rect.y < 0 || rect.x > (this.width - 48) || rect.y > (this.height - 48)) { return }; $gameTemp._mcursorData[0] = true; $gameTemp._mcursorData[1] = 1; $gameTemp._mcursorData[2] = this.x + rect.x; $gameTemp._mcursorData[3] = this.y + rect.y + (rect.height / 2); this.updateScrollRoll(); }; //============================== // * update SCroll Roll //============================== Window_Selectable.prototype.updateScrollRoll = function () { if (this.isOpenAndActive() && this.maxItems() > 0) { var srow = this.maxTopRow() === 0 ? 1 : this.maxCols(); var threshold = 20; var idx = this._index; if (TouchInput.wheelY >= threshold) { this._index += srow; if (this._index > (this.maxItems() - 1)) { this._index = this.maxItems() - 1 }; this.select(this._index); if (idx != this._index) { SoundManager.playCursor() }; }; if (TouchInput.wheelY <= -threshold) { this._index -= srow; if (this._index < 0) { this._index = 0 }; this.select(this._index); if (idx != this._index) { SoundManager.playCursor() }; }; }; };