brainwashing-school/js/plugins/MOG_TitleCommands.js
2025-05-30 08:36:40 -05:00

638 lines
No EOL
21 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// 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();
};
};