//============================================================================= // TMVplugin - リングコマンド // 作者: tomoaky (http://hikimoki.sakura.ne.jp/) // Version: 0.4b // 最終更新日: 2016/04/13 //============================================================================= /*: @plugindesc Adds ring commands that can be used in map scenes. @author tomoaky @url https://github.com/munokura/tomoaky-MV-plugins @license MIT @help English Help Translator: munokura This is an unofficial English translation of the plugin help, created to support global RPG Maker users. Feedback is welcome to improve translation quality (see: https://github.com/munokura/tomoaky-MV-plugins ). Original plugin by tomoaky. ----- While holding Ctrl or Alt in the map scene, the ring command will appear. You can rotate the ring with ← and →, and switch between scenes with Z, Enter, and Space. Setting useEscape to 1 will disable Ctrl (Alt) operations, and you can open and close the ring command with Esc, X, Insert, Num 0, and right-click, just like the default menu. In this case, you do not need to hold down the keys. When using the mouse, clicking to the left or right of the player will rotate the ring in the respective direction, and clicking near the player will switch to the scene corresponding to the command icon in front. Click coordinates are only detected horizontally; clicking anywhere on the screen will respond. There are no plugin commands. When using this in conjunction with TMGoldLevelUp.js (level up with money), the TMGoldLevelUp.js version must be 1.11 or later. @param useEscape @desc Takes over menu processing via Esc key etc. Default: 0 (Setting it to 1 disables the default menu) @default 0 @param useCaption @desc Display command name in subtitles for ring commands. Default: 1 ( 0 = no display). @default 1 @param saveLastIndex @desc Remember last selected command Default: 0 (Setting 1 will default to the last command selected) @default 0 @param openResetIndex @desc Initialize cursor position every time ring command is opened or closed. Initial value: 0 ( 1 to initialize every time) @default 0 @param openGoldWindow @desc Opens and closes the money window with the ring command. Default: 1 (0: not open or close) @default 1 @param goldWindowX @desc X coordinate of the money window Default: 576 @default 576 @param goldWindowY @desc Y coordinate of the money window Initial value: 0 @default 0 @param seOpenCommand @desc Sound effect played when opening the ring command. Default: {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @default {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @param seCloseCommand @desc Sound effect played when closing the ring command. Default: {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @default {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @param commandIconItem @desc Item command icon number Default: 176 @default 176 @param commandIconSkill @desc Skill command icon number Default: 76 @default 76 @param commandIconEquip @desc Equip command icon number Default: 135 @default 135 @param commandIconStatus @desc Status command icon number Default: 84 @default 84 @param commandIconFormation @desc Icon number for sort command Default: 75 @default 75 @param commandIconOptions @desc Optional command icon number Default: 83 @default 83 @param commandIconSave @desc Save command icon number Default: 225 @default 225 @param commandIconGameEnd @desc Exit game command icon number Default: 82 @default 82 @param commandIconGoldLevelUp @desc Icon number for level up command with money Default: 236 (only available when TMGoldLevelUp.js is installed) @default 236 @param rotateDuration @desc Time spent moving the icon Default: 4 (frames) @default 4 @param iconDistX @desc Icon width (horizontal) Default: 16 @default 16 @param iconDistY @desc Icon width (vertical) Default: 12 @default 12 @param iconSelectScale @desc Magnification of selected icon Default: 1.5 @default 1.5 @param captionWidth @desc Caption width Default: 200 @default 200 @param captionHeight @desc Caption height default: 48 @default 48 @param captionShiftX @desc X offset of caption Default: 0 @default 0 @param captionShiftY @desc Y-coordinate offset for captions. Default: -96 @default -96 */ /*:ja @plugindesc マップシーンで使えるリングコマンドを追加します。 @author tomoaky @url https://github.com/munokura/tomoaky-MV-plugins @license MIT @help マップシーンで Ctrl または Alt を押している間、リングコマンドが表示され ←, → でリングの回転、Z, Enter, Space で各シーンへ移行できます。 useEscape に 1 を設定すると Ctrl(Alt) での操作は無効化され、 デフォルトメニューと同様に Esc / X / Insert / Num 0 / 右クリック などで リングコマンドを開閉することができるようになります。 この場合、キーを押しっぱなしにする必要はありません。 マウスで操作する場合は、プレイヤーよりも左あるいは右をクリックすると それぞれの方向へリングを回転させることができ、プレイヤーの近くを クリックすれば正面にあるコマンドアイコンに対応するシーンへ移行します。 クリックの座標判定は横方向のみです、画面のどこをクリックしても反応します。 プラグインコマンドはありません。 TMGoldLevelUp.js(お金でレベルアップ)と併用する場合、TMGoldLevelUp.jsの バージョンが Ver1.11 以上である必要があります。 @param useEscape @desc Escキーなどによるメニュー処理を乗っ取る 初期値: 0 ( 1 にするとデフォルトのメニューは使えません) @default 0 @param useCaption @desc リングコマンドにコマンド名を字幕で表示する 初期値: 1 ( 0 で非表示) @default 1 @param saveLastIndex @desc 最後に選択したコマンドを記憶する 初期値: 0 ( 1 で前回決定したコマンドが初期位置になります) @default 0 @param openResetIndex @desc リングコマンド開閉のたびにカーソル位置を初期化する 初期値: 0 ( 1 で開閉のたびに初期化) @default 0 @param openGoldWindow @desc リングコマンドと一緒に所持金ウィンドウも開閉する 初期値: 1 ( 0 で開閉しない) @default 1 @param goldWindowX @desc 所持金ウィンドウのX座標 初期値: 576 @default 576 @param goldWindowY @desc 所持金ウィンドウのY座標 初期値: 0 @default 0 @param seOpenCommand @desc リングコマンドを開くときに鳴らす効果音 初期値: {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @default {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @param seCloseCommand @desc リングコマンドを閉じるときに鳴らす効果音 初期値: {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @default {name: "Cancel2", volume: 90, pitch: 100, pan: 0} @param commandIconItem @desc アイテムコマンドのアイコン番号 初期値: 176 @default 176 @param commandIconSkill @desc スキルコマンドのアイコン番号 初期値: 76 @default 76 @param commandIconEquip @desc 装備コマンドのアイコン番号 初期値: 135 @default 135 @param commandIconStatus @desc ステータスコマンドのアイコン番号 初期値: 84 @default 84 @param commandIconFormation @desc 並び替えコマンドのアイコン番号 初期値: 75 @default 75 @param commandIconOptions @desc オプションコマンドのアイコン番号 初期値: 83 @default 83 @param commandIconSave @desc セーブコマンドのアイコン番号 初期値: 225 @default 225 @param commandIconGameEnd @desc ゲーム終了コマンドのアイコン番号 初期値: 82 @default 82 @param commandIconGoldLevelUp @desc お金でレベルアップコマンドのアイコン番号 初期値: 236 ( TMGoldLevelUp.js 導入時のみ有効) @default 236 @param rotateDuration @desc アイコンの移動にかける時間 初期値: 4(フレーム数) @default 4 @param iconDistX @desc アイコンの広がり(横方向) 初期値: 16 @default 16 @param iconDistY @desc アイコンの広がり(縦方向) 初期値: 12 @default 12 @param iconSelectScale @desc 選択中アイコンの拡大率補正 初期値: 1.5 @default 1.5 @param captionWidth @desc キャプションの幅 初期値: 200 @default 200 @param captionHeight @desc キャプションの高さ 初期値: 48 @default 48 @param captionShiftX @desc キャプションのX座標補正値 初期値: 0 @default 0 @param captionShiftY @desc キャプションのY座標補正値 初期値: -96 @default -96 */ var Imported = Imported || {}; Imported.TMRingCommand = true; (function() { var parameters = PluginManager.parameters('TMRingCommand'); var useEscape = parameters['useEscape'] === '1' ? true : false; var useCaption = parameters['useCaption'] === '1' ? true : false; var saveLastIndex = parameters['saveLastIndex'] === '1' ? true : false; var openResetIndex = parameters['openResetIndex'] === '1' ? true : false; var openGoldWindow = parameters['openGoldWindow'] === '1' ? true : false; var goldWindowX = Number(parameters['goldWindowX']); var goldWindowY = Number(parameters['goldWindowY']); var seOpenCommand = (new Function("return " + parameters['seOpenCommand']))(); var seCloseCommand = (new Function("return " + parameters['seCloseCommand']))(); var commandIcon = {}; commandIcon['item'] = Number(parameters['commandIconItem']); commandIcon['skill'] = Number(parameters['commandIconSkill']); commandIcon['equip'] = Number(parameters['commandIconEquip']); commandIcon['status'] = Number(parameters['commandIconStatus']); commandIcon['formation'] = Number(parameters['commandIconFormation']); commandIcon['options'] = Number(parameters['commandIconOptions']); commandIcon['save'] = Number(parameters['commandIconSave']); commandIcon['gameEnd'] = Number(parameters['commandIconGameEnd']); commandIcon['goldLevelUp'] = Number(parameters['commandIconGoldLevelUp']); var rotateDuration = Number(parameters['rotateDuration']); var iconDistX = Number(parameters['iconDistX']); var iconDistY = Number(parameters['iconDistY']); var iconSelectScale = Number(parameters['iconSelectScale']); var captionWidth = Number(parameters['captionWidth']); var captionHeight = Number(parameters['captionHeight']); var captionShiftX = Number(parameters['captionShiftX']); var captionShiftY = Number(parameters['captionShiftY']); //----------------------------------------------------------------------------- // Game_Temp // Game_Temp.prototype.isRingCommandVisible = function() { if (this._ringCommandVisible === undefined) { this._ringCommandVisible = false; } return this._ringCommandVisible; }; Game_Temp.prototype.setRingCommandVisible = function(flag) { this._ringCommandVisible = flag; }; Game_Temp.prototype.ringCommandLastIndex = function() { if (this._ringCommandLastIndex === undefined) { this._ringCommandLastIndex = 0; } return this._ringCommandLastIndex; }; Game_Temp.prototype.setRingCommandLastIndex = function(index) { this._ringCommandLastIndex = index; }; Game_Temp.prototype.calledByRingCommand = function() { if (this._calledByRingCommand === undefined) { this._calledByRingCommand = false; } return this._calledByRingCommand; }; Game_Temp.prototype.setCalledByRingCommand = function(flag) { this._calledByRingCommand = flag; }; //----------------------------------------------------------------------------- // Game_Player // var _Game_Player_canMove = Game_Player.prototype.canMove; Game_Player.prototype.canMove = function() { if ($gameTemp.isRingCommandVisible()) { return false; } return _Game_Player_canMove.call(this); }; //----------------------------------------------------------------------------- // Sprite_TMRingCommandIcon // function Sprite_TMRingCommandIcon() { this.initialize.apply(this, arguments); } Sprite_TMRingCommandIcon.prototype = Object.create(Sprite.prototype); Sprite_TMRingCommandIcon.prototype.constructor = Sprite_TMRingCommandIcon; Sprite_TMRingCommandIcon.prototype.initialize = function(name) { Sprite.prototype.initialize.call(this); this.anchor.x = 0.5; this.anchor.y = 0.5; this._commandName = name; this.bitmap = ImageManager.loadSystem('IconSet'); var bx = commandIcon[name] % 16 * Window_Base._iconWidth; var by = Math.floor(commandIcon[name] / 16) * Window_Base._iconHeight; this.setFrame(bx, by, Window_Base._iconWidth, Window_Base._iconHeight); this._targetPosAngle = 0; this._posAngle = 0; }; Sprite_TMRingCommandIcon.prototype.setIndex = function(index) { this._targetPosAngle = Math.PI * 2 / this.parent._commandSprites.length * index; var r = this._targetPosAngle - this._posAngle; r -= Math.floor(r / (Math.PI * 2)) * (Math.PI * 2); if (r > Math.PI) { r -= Math.PI * 2; } this._rotationCount = rotateDuration; this._va = r / this._rotationCount; }; Sprite_TMRingCommandIcon.prototype.name = function() { return this._commandName; }; Sprite_TMRingCommandIcon.prototype.isEnabled = function() { switch (this._commandName) { case 'save': return this.isSaveEnabled(); case 'options': return this.isOptionsEnabled(); case 'gameEnd': return this.isGameEndEnabled(); default: return this.areMainCommandsEnabled(); } }; Sprite_TMRingCommandIcon.prototype.areMainCommandsEnabled = function() { return $gameParty.exists(); }; Sprite_TMRingCommandIcon.prototype.isFormationEnabled = function() { return $gameParty.size() >= 2 && $gameSystem.isFormationEnabled(); }; Sprite_TMRingCommandIcon.prototype.isOptionsEnabled = function() { return true; }; Sprite_TMRingCommandIcon.prototype.isSaveEnabled = function() { return !DataManager.isEventTest() && $gameSystem.isSaveEnabled(); }; Sprite_TMRingCommandIcon.prototype.isGameEndEnabled = function() { return true; }; Sprite_TMRingCommandIcon.prototype.update = function() { Sprite.prototype.update.call(this); if (this._rotationCount > 0) { this._posAngle += this._va; this._rotationCount--; if (this._rotationCount === 0) { this._posAngle = this._targetPosAngle; } } var r = this._posAngle + Math.PI / 2; this.x = Math.cos(r) * this.parent._commandRadius * iconDistX; this.y = Math.sin(r) * this.parent._commandRadius * iconDistY - 24; var scale = (this.y + 56) / 256 + 0.75; if (this.parent.currentCommandName() === this.name()) { scale *= iconSelectScale; } this.scale.set(scale, scale); this.opacity = this.isEnabled() ? 255 : 160 }; //----------------------------------------------------------------------------- // Sprite_TMRingCommandCaption // function Sprite_TMRingCommandCaption() { this.initialize.apply(this, arguments); } Sprite_TMRingCommandCaption.prototype = Object.create(Sprite.prototype); Sprite_TMRingCommandCaption.prototype.constructor = Sprite_TMRingCommandCaption; Sprite_TMRingCommandCaption.prototype.initialize = function() { Sprite.prototype.initialize.call(this); this.anchor.x = 0.5; this.anchor.y = 0.5; this.x = captionShiftX; this.y = captionShiftY; this._commandName = ''; this.bitmap = new Bitmap(captionWidth, captionHeight); }; Sprite_TMRingCommandCaption.prototype.update = function() { if (this._commandName !== this.parent.currentCommandName()) { this._commandName = this.parent.currentCommandName(); this.refresh(); } }; Sprite_TMRingCommandCaption.prototype.refresh = function() { this.bitmap.clear(); this.bitmap.paintOpacity = 160; this.bitmap.fillRect(0, 0, 240, 48, '#000000'); this.bitmap.paintOpacity = 255; this.bitmap.drawText(TextManager[this._commandName], 0, 0, captionWidth, captionHeight, 'center'); }; //----------------------------------------------------------------------------- // Sprite_TMRingCommand // function Sprite_TMRingCommand() { this.initialize.apply(this, arguments); } Sprite_TMRingCommand.prototype = Object.create(Sprite.prototype); Sprite_TMRingCommand.prototype.constructor = Sprite_TMRingCommand; Sprite_TMRingCommand.prototype.initialize = function() { Sprite.prototype.initialize.call(this); this._commandIndex = saveLastIndex ? $gameTemp.ringCommandLastIndex() : 0; this._commandRadius = 0; this.makeCommandList(); this.makeCaption(); this.refresh(); }; Sprite_TMRingCommand.prototype.makeCommandList = function() { this._commandSprites = [] this.addMainCommands(); this.addFormationCommand(); this.addOptionsCommand(); this.addOriginalCommand(); this.addSaveCommand(); this.addGameEndCommand(); }; Sprite_TMRingCommand.prototype.currentCommandName = function() { return this._commandSprites[this._commandIndex].name(); }; Sprite_TMRingCommand.prototype.addMainCommands = function() { if (this.needsCommand('item')) { var sprite = new Sprite_TMRingCommandIcon('item'); this._commandSprites.push(sprite); this.addChild(sprite); } if (this.needsCommand('skill')) { var sprite = new Sprite_TMRingCommandIcon('skill'); this._commandSprites.push(sprite); this.addChild(sprite); } if (this.needsCommand('equip')) { var sprite = new Sprite_TMRingCommandIcon('equip'); this._commandSprites.push(sprite); this.addChild(sprite); } if (this.needsCommand('status')) { var sprite = new Sprite_TMRingCommandIcon('status'); this._commandSprites.push(sprite); this.addChild(sprite); } }; Sprite_TMRingCommand.prototype.addFormationCommand = function() { if (this.needsCommand('formation')) { var sprite = new Sprite_TMRingCommandIcon('formation'); this._commandSprites.push(sprite); this.addChild(sprite); } }; Sprite_TMRingCommand.prototype.addOriginalCommand = function() { if (Imported.TMGoldLevelUp && TextManager.goldLevelUp) { var sprite = new Sprite_TMRingCommandIcon('goldLevelUp'); this._commandSprites.push(sprite); this.addChild(sprite); } }; Sprite_TMRingCommand.prototype.addOptionsCommand = function() { var sprite = new Sprite_TMRingCommandIcon('options'); this._commandSprites.push(sprite); this.addChild(sprite); }; Sprite_TMRingCommand.prototype.addSaveCommand = function() { if (this.needsCommand('save')) { var sprite = new Sprite_TMRingCommandIcon('save'); this._commandSprites.push(sprite); this.addChild(sprite); } }; Sprite_TMRingCommand.prototype.addGameEndCommand = function() { var sprite = new Sprite_TMRingCommandIcon('gameEnd'); this._commandSprites.push(sprite); this.addChild(sprite); }; Sprite_TMRingCommand.prototype.needsCommand = function(name) { var flags = $dataSystem.menuCommands; if (flags) { switch (name) { case 'item': return flags[0]; case 'skill': return flags[1]; case 'equip': return flags[2]; case 'status': return flags[3]; case 'formation': return flags[4]; case 'save': return flags[5]; } } return true; }; Sprite_TMRingCommand.prototype.makeCaption = function() { if (useCaption) { this._captionSprite = new Sprite_TMRingCommandCaption(); this.addChild(this._captionSprite); } }; Sprite_TMRingCommand.prototype.update = function() { Sprite.prototype.update.call(this); this.updateVisible(); if ($gameTemp.isRingCommandVisible()) { if (this._commandRadius < 4) { if (this._commandRadius === 0) { if (openResetIndex) { this._commandIndex = saveLastIndex ? $gameTemp.ringCommandLastIndex() : 0; this.refresh(); } AudioManager.playSe(seOpenCommand); } if (openGoldWindow && this.parent.parent) { var goldWindow = this.parent.parent._messageWindow._goldWindow; goldWindow.x = goldWindowX; goldWindow.y = goldWindowY; goldWindow.open(); } this._commandRadius++; } this.updateInput(); this.x = $gamePlayer.screenX(); this.y = $gamePlayer.screenY(); } else { if (this._commandRadius > 0) { if (this._commandRadius === 4) { if (openGoldWindow) { this.parent.parent._messageWindow._goldWindow.close(); } AudioManager.playSe(seCloseCommand); } this._commandRadius--; } } }; Sprite_TMRingCommand.prototype.updateVisible = function() { if (SceneManager._scene.isBusy() || $gameMap.isEventRunning() || !$gameSystem.isMenuEnabled()) { $gameTemp.setRingCommandVisible(false); } else if (useEscape) { } else { $gameTemp.setRingCommandVisible(Input.isPressed('control')); } this.visible = this._commandRadius > 0; }; Sprite_TMRingCommand.prototype.updateInput = function() { if (Input.isRepeated('left') || (TouchInput.isRepeated() && TouchInput.x < $gamePlayer.screenX() - 24)) { this._commandIndex-- if (this._commandIndex < 0) { this._commandIndex = this._commandSprites.length - 1; } this.refresh(); SoundManager.playCursor(); } if (Input.isRepeated('right') || (TouchInput.isRepeated() && TouchInput.x > $gamePlayer.screenX() + 24)) { this._commandIndex++; if (this._commandIndex >= this._commandSprites.length) { this._commandIndex = 0; } this.refresh(); SoundManager.playCursor(); } if (Input.isTriggered('ok') || (TouchInput.isTriggered() && TouchInput.x >= $gamePlayer.screenX() - 24 && TouchInput.x <= $gamePlayer.screenX() + 24)) { var sprite = this._commandSprites[this._commandIndex]; if (sprite.isEnabled()) { switch (sprite.name()) { case 'item': $gameTemp.setCalledByRingCommand(true); SceneManager.push(Scene_Item); break; case 'skill': $gameTemp.setCalledByRingCommand(true); SceneManager.push(Scene_Skill); break; case 'equip': SceneManager.push(Scene_Equip); break; case 'status': $gameTemp.setCalledByRingCommand(true); SceneManager.push(Scene_Status); break; case 'formation': SceneManager.push(Scene_RCFormation); break; case 'options': SceneManager.push(Scene_Options); break; case 'save': SceneManager.push(Scene_Save); break; case 'gameEnd': SceneManager.push(Scene_GameEnd); break; case 'goldLevelUp': SceneManager.push(TMParam.Scene_GoldLevelUp); break; } this._commandRadius = 0; if (openGoldWindow) { this.parent.parent._messageWindow._goldWindow.hide(); } $gameTemp.setRingCommandLastIndex(this._commandIndex); $gameTemp.setRingCommandVisible(false); SoundManager.playOk(); } else { SoundManager.playBuzzer(); } } if (useEscape && this._commandRadius === 4 && (Input.isTriggered('menu') || TouchInput.isCancelled())) { $gameTemp.setRingCommandVisible(false); } }; Sprite_TMRingCommand.prototype.refresh = function() { for (var i = 0; i < this._commandSprites.length; i++) { var sprite = this._commandSprites[i]; var index = (this._commandIndex - i) % this._commandSprites.length; sprite.setIndex(index); } }; //----------------------------------------------------------------------------- // Spriteset_Map // var _Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer; Spriteset_Map.prototype.createLowerLayer = function() { _Spriteset_Map_createLowerLayer.call(this); this.createRingCommand(); }; Spriteset_Map.prototype.createRingCommand = function() { this._ringCommand = new Sprite_TMRingCommand(); this.addChild(this._ringCommand); }; //----------------------------------------------------------------------------- // Window_MenuActor // var _Window_MenuActor_refresh = Window_MenuActor.prototype.refresh; Window_MenuActor.prototype.refresh = function() { if (!$gameTemp.calledByRingCommand()) { _Window_MenuActor_refresh.call(this); } }; //----------------------------------------------------------------------------- // Window_SkillStatus // var _Window_SkillStatus_refresh = Window_SkillStatus.prototype.refresh; Window_SkillStatus.prototype.refresh = function() { if (!$gameTemp.calledByRingCommand()) { _Window_SkillStatus_refresh.call(this); } }; //----------------------------------------------------------------------------- // Window_Status // var _Window_Status_refresh = Window_Status.prototype.refresh; Window_Status.prototype.refresh = function() { if (!$gameTemp.calledByRingCommand()) { _Window_Status_refresh.call(this); } }; //----------------------------------------------------------------------------- // Window_Message // var _Window_Message_updatePlacement = Window_Message.prototype.updatePlacement; Window_Message.prototype.updatePlacement = function() { _Window_Message_updatePlacement.call(this); this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width; }; //----------------------------------------------------------------------------- // Scene_Item // var _Scene_Item_start = Scene_Item.prototype.start; Scene_Item.prototype.start = function() { _Scene_Item_start.call(this); if ($gameTemp.calledByRingCommand()) { $gameTemp.setCalledByRingCommand(false); this._actorWindow.refresh(); } } //----------------------------------------------------------------------------- // Scene_Skill // var _Scene_Skill_start = Scene_Skill.prototype.start; Scene_Skill.prototype.start = function() { _Scene_Skill_start.call(this); if ($gameTemp.calledByRingCommand()) { $gameTemp.setCalledByRingCommand(false); this._actorWindow.refresh(); this._statusWindow.refresh(); } } //----------------------------------------------------------------------------- // Scene_Status // var _Scene_Status_start = Scene_Status.prototype.start; Scene_Status.prototype.start = function() { _Scene_Status_start.call(this); if ($gameTemp.calledByRingCommand()) { $gameTemp.setCalledByRingCommand(false); this._statusWindow.refresh(); } } //----------------------------------------------------------------------------- // Scene_Map // var _Scene_Map_callMenu = Scene_Map.prototype.callMenu; Scene_Map.prototype.callMenu = function() { if (useEscape) { $gameTemp.setRingCommandVisible(true); this.menuCalling = false; } else { _Scene_Map_callMenu.call(this); } }; //----------------------------------------------------------------------------- // Scene_RCFormation // function Scene_RCFormation() { this.initialize.apply(this, arguments); } Scene_RCFormation.prototype = Object.create(Scene_MenuBase.prototype); Scene_RCFormation.prototype.constructor = Scene_RCFormation; Scene_RCFormation.prototype.initialize = function() { Scene_MenuBase.prototype.initialize.call(this); }; Scene_RCFormation.prototype.create = function() { Scene_MenuBase.prototype.create.call(this); this.createStatusWindow(); }; Scene_RCFormation.prototype.start = function() { Scene_MenuBase.prototype.start.call(this); this._statusWindow.refresh(); this._statusWindow.setFormationMode(true); this._statusWindow.selectLast(); this._statusWindow.activate(); this._statusWindow.setHandler('ok', this.onFormationOk.bind(this)); this._statusWindow.setHandler('cancel', this.onFormationCancel.bind(this)); }; Scene_RCFormation.prototype.createStatusWindow = function() { this._statusWindow = new Window_MenuStatus(0, 0); this._statusWindow.x = (Graphics.boxWidth - this._statusWindow.width) / 2; this.addWindow(this._statusWindow); }; Scene_RCFormation.prototype.onFormationOk = function() { var index = this._statusWindow.index(); var actor = $gameParty.members()[index]; var pendingIndex = this._statusWindow.pendingIndex(); if (pendingIndex >= 0) { $gameParty.swapOrder(index, pendingIndex); this._statusWindow.setPendingIndex(-1); this._statusWindow.redrawItem(index); } else { this._statusWindow.setPendingIndex(index); } this._statusWindow.activate(); }; Scene_RCFormation.prototype.onFormationCancel = function() { if (this._statusWindow.pendingIndex() >= 0) { this._statusWindow.setPendingIndex(-1); this._statusWindow.activate(); } else { this.popScene(); } }; })();