//============================================================================= // MOG_TittleCommands.js //============================================================================= /*: * @target MZ * @plugindesc (v1.3) Adiciona comandos em imagens no lugar da janela. * @author Moghunter * @url https://mogplugins.wordpress.com * * @param -> Main <<<<<<<<<<<<<<<<<<<<<<< * @desc * * @param Animation Mode * @desc Definição do tipo de animação. * 0 - None 1 - Pulse 2 - Shake * @default 1 * @type select * @option None * @value 0 * @option Pulse Effect * @value 1 * @option Shake Effect * @value 2 * @parent -> Main <<<<<<<<<<<<<<<<<<<<<<< * * @param Left & Right Input * @desc Ativar a seleção de comandos com as teclas Right/Left. * @default true * @type boolean * @parent -> Main <<<<<<<<<<<<<<<<<<<<<<< * * @param Shake Duration * @desc Tempo de duração do efeito tremer. * @default 30 * @type number * @parent -> Main <<<<<<<<<<<<<<<<<<<<<<< * * @param Slide X-Axis * @desc Faz os comandos deslizarem na horizontal. * @default -100 * @parent -> Main <<<<<<<<<<<<<<<<<<<<<<< * * @param Slide Y-Axis * @desc Faz os comandos deslizarem na vertical. * @default 0 * @parent -> Main <<<<<<<<<<<<<<<<<<<<<<< * * @param -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * @desc * * @param Cursor X-Axis * @text X-Axis * @desc Definição X-axis do cursor. * @default 0 * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param Cursor Y-Axis * @text Y-Axis * @desc Definição Y-axis do cursor. * @default 5 * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param Cursor Visible * @text Visible * @desc Ativar cursor. * @default true * @type boolean * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param Cursor Wave Animation * @text Wave Animation * @desc Ativar animação de deslize. * @default true * @type boolean * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param Cursor Rotation Animation * @text Rotation Animation * @desc Ativar animação de rotação. * @default false * @type boolean * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param Cursor Rotation Speed * @text Rotation Speed * @desc Definição da velociade de rotação. * @default 0.05 * @parent -> Cursor <<<<<<<<<<<<<<<<<<<<<<< * * @param -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 1 * @desc Definição da posição do comando 1. * E.g - 32,32 * @default 180,440 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 2 * @desc Definição da posição do comando 2. * E.g - 32,32 * @default 350,440 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 3 * @desc Definição da posição do comando 3. * E.g - 32,32 * @default 520,440 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 4 * @desc Definição da posição do comando 4. * E.g - 32,32 * @default 690,440 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 5 * @desc Definição da posição do comando 5. * E.g - 32,32 * @default 345,498 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 6 * @desc Definição da posição do comando 6. * E.g - 32,32 * @default 345,530 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 7 * @desc Definição da posição do comando 7. * E.g - 32,32 * @default 0,192 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 8 * @desc Definição da posição do comando 8. * E.g - 32,32 * @default 0,224 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 9 * @desc Definição da posição do comando 9. * E.g - 32,32 * @default 0,256 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @param Command Pos 10 * @desc Definição da posição do comando 10. * E.g - 32,32 * @default 0,288 * @parent -> Commands <<<<<<<<<<<<<<<<<<<<<<< * * @help * ============================================================================= * +++ MOG - Title Picture Commands (v1.3) +++ * By Moghunter * https://mogplugins.wordpress.com * ============================================================================= * Adiciona comandos em imagens no lugar da janela. * É necessário ter os arquivos: * * Command_0.png, Command_1.png, Command_2.png , Command_3.png ... * * Grave as imagens na pasta: * * img/titles2/ * ============================================================================= * Será necessário também uma imagem representando o cursor. * * Cursor.png * * ============================================================================= * * HISTÓRICO * ============================================================================= * (v1.3) - Correção na função sort relativo a codificação. * (v1.2) - Correção de selecionar o comando na transição da cena (fading). * (v1.1) - Correção de apresentar a janela padrão em altas resoluções. * */ //============================================================================= // ** PLUGIN PARAMETERS //============================================================================= var Imported = Imported || {}; Imported.MOG_TitleCommands = true; var Moghunter = Moghunter || {};  Moghunter.parameters = PluginManager.parameters('MOG_TitleCommands'); Moghunter.title_comMode = Number(Moghunter.parameters['Animation Mode'] || 2); Moghunter.title_shakeDuration = Number(Moghunter.parameters['Shake Duration'] || 30); Moghunter.title_slideXaxis = Number(Moghunter.parameters['Slide X-Axis'] || -100); Moghunter.title_slideYaxis = Number(Moghunter.parameters['Slide Y-Axis'] || 0); Moghunter.title_sideInput = String(Moghunter.parameters['Left & Right Input'] || "true"); Moghunter.title_cursorVisible = String(Moghunter.parameters['Cursor Visible'] || "true"); Moghunter.title_cursorSlide = String(Moghunter.parameters['Cursor Wave Animation'] || "true"); Moghunter.title_cursorX = Number(Moghunter.parameters['Cursor X-Axis'] || 8); Moghunter.title_cursorY = Number(Moghunter.parameters['Cursor Y-Axis'] || -10); Moghunter.title_cursorRot = String(Moghunter.parameters['Cursor Rotation Animation'] || "true"); Moghunter.title_cursorRotSpeed = Number(Moghunter.parameters['Cursor Rotation Speed'] || 0.05); Moghunter.title_com_pos = []; for (var i = 0; i < 10; i++) { Moghunter.title_com_pos[i] = (Moghunter.parameters['Command Pos ' + String(i + 1)] || null); }; //============================================================================= // ■■■ Scene Title ■■■ //============================================================================= //============================== // ♦ ALIAS ♦ Create //============================== var _mog_titleCom_ccreate = Scene_Title.prototype.create; Scene_Title.prototype.create = function() { _mog_titleCom_ccreate.call(this); if (this._titleField3) {this._titleField3.children.sort((a, b) => a.z - b.z)} }; //================================ // ♦ ALIAS ♦ createCommandWindow //================================ var _mog_titleCom_createCommandWindow = Scene_Title.prototype.createCommandWindow; Scene_Title.prototype.createCommandWindow = function() { _mog_titleCom_createCommandWindow.call(this); if (!this._titleField3) {this.createTitleField3()}; this.createTitlePictureCommands(); this._sideInput = String(Moghunter.title_sideInput) == "true" ? true : false; if (String(Moghunter.title_cursorVisible) == "true") {this.createCursorCommand()}; }; //================================ // ♦ ALIAS ♦ update //================================ var _mog_titleCom_scnTittle_update = Scene_Title.prototype.update; Scene_Title.prototype.update = function() { _mog_titleCom_scnTittle_update.call(this); this.updatePicCommands(); }; //============================== // * Create Title Field 3 //============================== Scene_Title.prototype.createTitleField3 = function() { this._titleField3 = new Sprite(); this._titleField3.z = 200; this.addChild(this._titleField3); }; //============================== // * createTitlePictureCommands //============================== Scene_Title.prototype.createTitlePictureCommands = function() { this._picComE = false; this._TpictureCom = []; this._tComTouch = [TouchInput.x,TouchInput.y]; this._picComIndex = this._commandWindow._index; for (i = 0; i < this._commandWindow._list.length; i++){ this._TpictureCom[i] = new TpictureCom(this._commandWindow,i); this._TpictureCom[i].z = 300; this._titleField3.addChild(this._TpictureCom[i]); }; this._commandWindow.x = -(Graphics.width * 2); }; //============================== // * Create Cursor Command //============================== Scene_Title.prototype.createCursorCommand = function() { this._cursorSlide = [0,0,0,false]; if (String(Moghunter.title_cursorSlide) == "true") {this._cursorSlide[3] = true}; this._cursor = new Sprite(ImageManager.loadTitle2("Cursor")); this._cursor.anchor.x = 0.5; this._cursor.anchor.y = 0.5; this._cursor.org = [Moghunter.title_cursorX,Moghunter.title_cursorY] if (this._cursorSlide[3]) {this._cursor.org[0] -= 5} this._cursor.opacity = 0; this._cursor.z = 350; this._cursor.rot = [true,0.05]; this._cursor.rot[0] = String(Moghunter.title_cursorRot) == "true" ? true : false; this._cursor.rot[1] = Moghunter.title_cursorRotSpeed; this._titleField3.addChild(this._cursor); }; //============================== // * update Title Cursor //============================== Scene_Title.prototype.updateTitleCursor = function() { if (this._cursorSlide[3]) {this.updateCursorSlide()}; if (this._cursor.rot[0]) {this.updateCursorRotation()}; this._cursor.opacity += 5; var nx = this.comSprite().x - (this.comSprite().bitmap.width / 2) - (this._cursor.width / 2) + this._cursorSlide[0]; var ny = this.comSprite().y - (this.comSprite().bitmap.height / 2) + (this._cursor.height / 2) + this._cursor.org[1]; this._cursor.x = this.cursorMoveto(this._cursor.x , nx, 10); this._cursor.y = this.cursorMoveto(this._cursor.y, ny, 10); }; //============================== // * Com Sprite //============================== Scene_Title.prototype.comSprite = function() { return this._TpictureCom[this._commandWindow._index]; }; //============================== // * Uodate Cursor Rotation //============================== Scene_Title.prototype.updateCursorRotation = function() { this._cursor.rotation += this._cursor.rot[1]; }; //============================== // * update Cursor Slide //============================== Scene_Title.prototype.updateCursorSlide = function() { this._cursorSlide[1] ++ if (this._cursorSlide[1] < 3) {return}; this._cursorSlide[1] = 0 this._cursorSlide[2] ++ if (this._cursorSlide[2] < 15) { this._cursorSlide[0] ++; } else if (this._cursorSlide[2] < 30) { this._cursorSlide[0] --; } else { this._cursorSlide[0] = 0; this._cursorSlide[2] = 0; }; }; //============================== // * Sprite Move To //============================== Scene_Title.prototype.cursorMoveto = function(value,real_value,speed) { if (value == real_value) {return value}; var dnspeed = 5 + (Math.abs(value - real_value) / speed); 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); }; //============================== // * checkTPicCom //============================== Scene_Title.prototype.checkTPicCom = function() { for (i = 0; i < this._TpictureCom.length; i++){ if (this._TpictureCom[i].isOnPicCom()) { this._commandWindow._index = i; if (this._picComIndex == this._commandWindow._index) { this._commandWindow.processOk(); } else { this._commandWindow.playCursorSound() }; this._picComIndex = this._commandWindow._index }; }; }; //============================== // * picComNeedCheckTouch //============================== Scene_Title.prototype.picComNeedCheckTouch = function() { if (this._tComTouch[0] != TouchInput.x) {return true}; if (this._tComTouch[1] != TouchInput.y) {return true}; return false; }; //============================== // * update Title Touch Input Com //============================== Scene_Title.prototype.updateTitleTouchInputCom = function() { if (TouchInput.isTriggered()) {this.checkTPicCom()}; if (this.picComNeedCheckTouch()) {this.updateTComMouseIsOnPic()}; this._tComTouch = [TouchInput.x,TouchInput.y]; }; //============================== // * Update Com Side Input //============================== Scene_Title.prototype.updateComSideInput = function() { if (Input.isRepeated('right')) { this.addTitleComIndex(1); } else if (Input.isRepeated('left')) { this.addTitleComIndex(-1); }; }; //============================== // * updateTComMouseIsOnPic //============================== Scene_Title.prototype.updateTComMouseIsOnPic = function() { var picID = -1; for (i = 0; i < this._TpictureCom.length; i++){ if (this._TpictureCom[i].isOnPicCom()) { this._commandWindow._index = i; if (this._picComIndex != this._commandWindow._index) { this._commandWindow.playCursorSound(); }; this._picComIndex = this._commandWindow._index ; }; }; }; //============================== // * add Title ComIndex //============================== Scene_Title.prototype.addTitleComIndex = function(value) { SoundManager.playCursor(); var maxIndex = this._commandWindow._list.length - 1 this._commandWindow._index += value; if (this._commandWindow._index < 0) { this._commandWindow._index = maxIndex; } else if (this._commandWindow._index > maxIndex) { this._commandWindow._index = 0; }; }; //============================== // * update Pic Commands //============================== Scene_Title.prototype.updatePicCommands = function() { if (!this._picComE) { this.updateTitleTouchInputCom(); if (this._sideInput) {this.updateComSideInput()}; }; if (this._cursor) {this.updateTitleCursor()}; if (!this._picComE && this._commandWindow.isClosing()) {this._picComE = true;} }; //============================================================================= // ■■■ TpictureCom ■■■ //============================================================================= function TpictureCom() { this.initialize.apply(this, arguments); }; TpictureCom.prototype = Object.create(Sprite.prototype); TpictureCom.prototype.constructor = TpictureCom; //============================== // * Initialize //============================== TpictureCom.prototype.initialize = function(data,index) { Sprite.prototype.initialize.call(this); this._index = index; this._data = data; this._index2 = this._data._index; this._wait = 5 * index; this.opacity = 0; this._aniData = {}; this._aniData.mode = Moghunter.title_comMode; this._aniData.zoomON = Moghunter.title_zoomEffect == "true" ? true : false; this._aniData.zoomMax = 1.05; this._aniData.zoomPhase = 0; this._aniData.zoomSpeed = 0.0025; this._aniData.shakeD1 = 60; this._aniData.shakeD2 = 0; this._aniData.shakeX = 0; this._enabled = data.isCommandEnabled(index); this._orgXY = this.set_tcp(Moghunter.title_com_pos[index]); this.prepareBitmap(); }; //============================== // * Prepare Bitmap //============================== TpictureCom.prototype.prepareBitmap = function() { var name = "Command_" + String(this._index); this.bitmap = ImageManager.loadTitle2(name) }; //============================== // * set tcp //============================== TpictureCom.prototype.set_tcp = function(value) { if (!value) {return null}; var s = value.split(','); if (!s[0] || !s[1]) {return null}; return [Number(s[0]),Number(s[1])]; }; //============================== // * get Data //============================== TpictureCom.prototype.getData = function() { this.anchor.x = 0.5; this.anchor.y = 0.5; this._cw = this.bitmap.width; this._ch = this.bitmap.height / 2; var fx = (Graphics.width - 816) / 2; var fy = (Graphics.height - 624) / 2; this._orgXY[0] += (this._cw / 2) + fx; this._orgXY[1] += fy; this.x = this._orgXY[0]; this.y = this._orgXY[1]; this._pw1 = this.x - (this._cw / 2); this._pw2 = this.x + (this._cw / 2); this._ph1 = this.y - (this._ch / 2); this._ph2 = this.y + (this._ch / 2); var rectY = !this._enabled || this._index != this._data._index ? this._ch : 0; this.setFrame(0, rectY, this._cw, this._ch); this.x += Moghunter.title_slideXaxis; this.y += Moghunter.title_slideYaxis; }; //============================== // * On Picture Com //============================== TpictureCom.prototype.isOnPicCom = function() { if (TouchInput.x < this._pw1) {return false}; if (TouchInput.x > this._pw2) {return false}; if (TouchInput.y < this._ph1) {return false}; if (TouchInput.y > this._ph2) {return false}; return true; }; //============================== // * update Zoom Animation //============================== TpictureCom.prototype.updateZoomAnimation = function() { this._aniData.shakeX = 0; if (this._index == this._data._index) { if (this._aniData.zoomPhase == 0) { this.scale.x -= this._aniData.zoomSpeed; if (this.scale.x <= 1.00) { this.scale.x = 1.00; this._aniData.zoomPhase = 1; }; } else { this.scale.x += this._aniData.zoomSpeed; if (this.scale.x >= this._aniData.zoomMax) { this.scale.x = this._aniData.zoomMax; this._aniData.zoomPhase = 0; }; }; } else { this._aniData.zoomPhase = 0; if (this.scale.x > 1.00) {this.scale.x -= (this._aniData.zoomSpeed * 3)}; }; this.scale.y = this.scale.x }; //============================== // * set Frame Index //============================== TpictureCom.prototype.setFrameIndex = function() { this._aniData.shakeD1 = Moghunter.title_shakeDuration; this._aniData.shakeD2 = 3; this._index2 = this._data._index var rectY = !this._enabled || this._index != this._data._index ? this._ch : 0; this.setFrame(0, rectY, this._cw, this._ch); }; //============================== // * update Slide //============================== TpictureCom.prototype.updateSlide = function() { this.x = this.cSlide(this.x, (this._orgXY[0] + this._aniData.shakeX), 60); this.y = this.cSlide(this.y, this._orgXY[1], 60); }; //============================== // * Sprite Move To //============================== TpictureCom.prototype.cSlide = function(value,real_value,speed) { if (value == real_value) {return value}; var dnspeed = 3 + (Math.abs(value - real_value) / speed); 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); }; //============================== // * update Opacity //============================== TpictureCom.prototype.updateOpacity = function() { this.opacity += 15; }; //============================== // * shakeClear //============================== TpictureCom.prototype.shakeClear = function() { this._aniData.shakeD1 = 0; this._aniData.shakeD2 = 0; this._aniData.shakeX = 0; }; //============================== // * update Shake Animation //============================== TpictureCom.prototype.updateShakeAnimation = function() { if (this._index != this._data._index) {this.shakeClear();return}; if (this._aniData.shakeD1 > 0) { if (this._aniData.shakeD2 > 0) { this._aniData.shakeD2--; if (this._aniData.shakeD2 <= 0) { this._aniData.shakeD2 = 3; this._aniData.shakeX = -5 + (Math.abs(Math.random() * 10)); }; }; this._aniData.shakeD1--; if (this._aniData.shakeD1 <= 0) {this.shakeClear()}; }; }; //============================== // * update Pic Command //============================== TpictureCom.prototype.updatePicCommand = function() { if (this._wait > 0) {this._wait--;return}; if (this._aniData.mode == 1) { this.updateZoomAnimation() } else if (this._aniData.mode == 2) { this.updateShakeAnimation(); }; if (this._index2 != this._data._index) {this.setFrameIndex()}; this.updateSlide(); this.updateOpacity(); }; //============================== // * Update //============================== TpictureCom.prototype.update = function() { Sprite.prototype.update.call(this); if (!this._cw) { if (this.bitmap.isReady()) {this.getData()}; } else { this.updatePicCommand(); }; };