menacephere-of-inverted-dreams/js/plugins/MOG_MenuCursor.js
2025-04-07 10:17:54 -05:00

1437 lines
46 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=============================================================================
// MOG_MenuCursor.js
//=============================================================================
/*:
* @target MZ
* @plugindesc (v1.0) Adiciona um cursor animado no menu de comando.
* @author Moghunter
* @url https://mogplugins.wordpress.com
*
* @param -> GENERAL
* @desc
*
* @param FileName
* @parent -> GENERAL
* @text File Name
* @desc Definição do nome do arquivo de imagem.
* @type file
* @dir img/menus/
* @default Cursor_A
*
* @param X-Axis Offset
* @parent -> GENERAL
* @text X-Axis Offset
* @desc Definição X-axis do cursor.
* @default 15
*
* @param Y-Axis Offset
* @parent -> GENERAL
* @text Y-Axis Offset
* @desc Definição Y-axis do cursor.
* @default 0
*
* @param Show Selection
* @parent -> GENERAL
* @text Show Selection
* @desc Apresentar a seleção padrão do cursor.
* @type boolean
* @default true
*
* @param Show Selection All
* @parent -> GENERAL
* @text Show Selection All
* @desc Apresentar a seleção padrão do cursor.
* @type boolean
* @default true
*
* @param Move Animation
* @parent -> GENERAL
* @text Slide Animation
* @desc Ativar a animação de deslize (Slide).
* @type boolean
* @default true
*
* @param Move Speed %
* @parent -> GENERAL
* @text Slide Speed %
* @desc Definição da velocidade do cursor. (30% -> 1000%)
* @type number
* @min 30
* @max 1000
* @default 100
*
* @param Align
* @parent -> GENERAL
* @desc Definição do alinhamento do cursor.
* @text Align
* @type select
* @default Left
* @option Left
* @value Left
* @option Center
* @value Center
* @option Right
* @value Right
*
* @param Animation Speed %
* @parent -> GENERAL
* @text Animated (Speed %)
* @desc Definição da velocidade do cursor animado. (30% -> 500%)
* @type number
* @min 30
* @max 500
* @default 100
*
* @param -----------------------
* @desc
*
* @param -> WAVE ANIMATION
* @desc
*
* @param Wave Horizontal
* @parent -> WAVE ANIMATION
* @text Horizontal Wave
* @desc Ativar a animação na horizontal.
* @type boolean
* @default true
*
* @param Wave Vertical
* @parent -> WAVE ANIMATION
* @text Vertical Wave
* @desc Ativar a animação na vertical.
* @type boolean
* @default false
*
* @param Wave Range
* @parent -> WAVE ANIMATION
* @text Range
* @desc Definição do espaço da animação. (5 -> 50)
* @type number
* @min 5
* @max 50
* @default 15
*
* @param Wave Speed %
* @parent -> WAVE ANIMATION
* @text Speed %
* @desc Definição da velocidade de animação. (30% -> 400%)
* @type number
* @min 30
* @max 400
* @default 100
*
* @param ------------------------
* @desc
*
* @param -> ROTATION ANIMATION
* @desc
*
* @param Rotation Animation
* @parent -> ROTATION ANIMATION
* @text Rotation Animation
* @desc Ativar a animação de rotação.
* @type boolean
* @default false
*
* @param Rotation Speed %
* @parent -> ROTATION ANIMATION
* @text Speed %
* @desc Definição da velocidade de rotação. (30% -> 1000%)
* @type number
* @min 30
* @max 1000
* @default 100
*
* @param -------------------------
* @desc
*
* @param -> PARTICLES
* @desc
*
* @param Particles
* @parent -> PARTICLES
* @text Particle Effects
* @desc Ativar partículas no cursor.
* @type boolean
* @default true
*
* @param Par File Name
* @parent -> PARTICLES
* @text File Name
* @desc Definição do nome do arquivo de imagem.
* @type file
* @dir img/menus/
* @default Cursor_Par01
*
* @param Par Number of Particles
* @parent -> PARTICLES
* @text Number of Particles
* @desc Definição da quantidade de partículas. (5 -> 300)
* @type number
* @min 5
* @max 300
* @default 30
*
* @param Par X-Axis Offset
* @parent -> PARTICLES
* @text X-Axis Offset
* @desc Definição X-axis Offset das partículas.
* @default 0
*
* @param Par Y-Axis Offset
* @parent -> PARTICLES
* @text Y-Axis Offset
* @desc Definição X-axis Offset das partículas.
* @default 0
*
* @param Par SX-Axis
* @parent -> PARTICLES
* @text X-Axis Speed
* @desc Definição da velocidade das partículas na horizontal.
* @default -1
*
* @param Par SY-Axis
* @parent -> PARTICLES
* @text Y-Axis Speed
* @desc Definição da velocidade das partículas na vertical.
* @default -2
*
* @command MenuCursorGeneral
* @desc Configuração do cursor de commando.
* @text General
*
* @arg fileName
* @text File Name
* @desc Definição do nome do arquivo de imagem.
* @type file
* @dir img/menus/
* @default Cursor_A
*
* @arg x
* @text X-Axis Offset
* @desc Definição X-axis do cursor.
* @default 15
*
* @arg y
* @text Y-Axis Offset
* @desc Definição Y-axis do cursor.
* @default 0
*
* @arg slide
* @text Slide Animation
* @desc Ativar a animação de deslize (Slide).
* @type boolean
* @default true
*
* @arg moveSpeed
* @text Slide Speed %
* @desc Definição da velocidade do cursor. (30% -> 1000%)
* @type number
* @min 30
* @max 1000
* @default 100
*
* @arg align
* @desc Definição do alinhamento do cursor.
* @text Align
* @type select
* @default Left
* @option Left
* @value Left
* @option Center
* @value Center
* @option Right
* @value Right
*
* @arg animeSpeed
* @text Animated (Speed %)
* @desc Definição da velocidade do cursor animado. (30% -> 500%)
* @type number
* @min 30
* @max 500
* @default 100
*
* @command MenuCursorWave
* @desc Configuração do efeito wave.
* @text Wave Effect
*
* @arg horzWave
* @text Horizontal Mode
* @desc Ativar a animação na horizontal.
* @type boolean
* @default true
*
* @arg vertWave
* @text Vertical Mode
* @desc Ativar a animação na vertical.
* @type boolean
* @default false
*
* @arg waveRange
* @text Range
* @desc Definição do espaço da animação. (5 -> 50)
* @type number
* @min 5
* @max 50
* @default 15
*
* @arg waveSpeed
* @text Speed %
* @desc Definição da velocidade de animação. (30% -> 400%)
* @type number
* @min 30
* @max 400
* @default 100
*
* @command MenuCursorRotation
* @desc Configuração do efeito de rotação.
* @text Rotation Effect
*
* @arg rotation
* @text Rotation Animation
* @desc Ativar a animação de rotação.
* @type boolean
* @default false
*
* @arg rotationSpeed
* @text Speed %
* @desc Definição da velocidade de rotação. (30% -> 1000%)
* @type number
* @min 30
* @max 1000
* @default 100
*
* @command MenuCursorParticles
* @desc Configuração das Partículas
* @text Particle Effect
*
* @arg parEnable
* @text Particle Effect
* @desc Ativar partículas no cursor.
* @type boolean
* @default true
*
* @arg parFileName
* @text File Name
* @desc Definição do nome do arquivo de imagem.
* @type file
* @dir img/menus/
* @default Particles
*
* @arg parPower
* @text Number of Particles
* @desc Definição da quantidade de partículas. (10 -> 300)
* @type number
* @min 5
* @max 300
* @default 30
*
* @arg parX_Offset
* @text X-Axis Offset
* @desc Definição X-axis Offset das partículas.
* @default 0
*
* @arg parY_Offset
* @text Y-Axis Offset
* @desc Definição X-axis Offset das partículas.
* @default 0
*
* @arg parSX
* @text X-Axis Speed
* @desc Definição da velocidade das partículas na horizontal.
* @default -1
*
* @arg parSY
* @text Y-Axis Speed
* @desc Definição da velocidade das partículas na vertical.
* @default -2
*
* @help
* =============================================================================
* ♦♦♦ MOG - Menu Cursor ♦♦♦
* Author - Moghunter
* Version - 1.0
* Updated - 2020/10/18
* https://mogplugins.wordpress.com
* =============================================================================
* Adiciona um cursor animado no menu de comando.
*
* =============================================================================
* ■ IMAGENS
* =============================================================================
* Crie uma pasta com o nome de:
*
* /img/menus/
*
* E grave as imagens do seu cursor nesta pasta.
*
* =============================================================================
* ■ ANIMATED CURSOR
* =============================================================================
* Para animar o cursor nomeie o cursor da imagem da seguinte forma.
*
* FILE_NAME(X).png
*
* X - Numero de frames.
*
*
* Cursor(5).png
*
* 西ヤスアキ X @nishi_ak1 mail nishi.aki11@gmail.com
* このプラグインを改変しました。
* このプラグインを入れる前のセーブデータを開こうとすると
* $gameSystem._menuCursorDataが定義されてないため、エラーがでます。
* それの対策のために値をハードコーディングして$gameSystem._menuCursorDataをなくしています。
*
*/
(() => {
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
var Imported = Imported || {};
Imported.MOG_MenuCursor = true;
var Moghunter = Moghunter || {};
Moghunter.parameters = PluginManager.parameters("MOG_MenuCursor");
Moghunter.menuCursor_fileName = String(
Moghunter.parameters["FileName"] || "Cursor"
);
Moghunter.menuCursor_x = Number(Moghunter.parameters["X-Axis Offset"] || 15);
Moghunter.menuCursor_y = Number(Moghunter.parameters["Y-Axis Offset"] || 0);
Moghunter.menuCursor_showRect = String(
Moghunter.parameters["Show Selection"] || true
);
Moghunter.menuCursor_showRectAll = String(
Moghunter.parameters["Show Selection All"] || true
);
Moghunter.menuCursor_slide = String(
Moghunter.parameters["Move Animation"] || true
);
Moghunter.menuCursor_speed = Number(
Moghunter.parameters["Move Speed %"] || 100
);
Moghunter.menuCursor_align = String(Moghunter.parameters["Align"] || "Left");
Moghunter.menuCursor_waveX = String(
Moghunter.parameters["Wave Horizontal"] || true
);
Moghunter.menuCursor_waveY = String(
Moghunter.parameters["Wave Vertical"] || false
);
Moghunter.menuCursor_waveR = Number(Moghunter.parameters["Wave Range"] || 15);
Moghunter.menuCursor_waveS = Number(
Moghunter.parameters["Wave Speed %"] || 100
);
Moghunter.menuCursor_animationSpeed = Number(
Moghunter.parameters["Animation Speed %"] || 100
);
Moghunter.menuCursor_rotated = String(
Moghunter.parameters["Rotation Animation"] || true
);
Moghunter.menuCursor_rotationSpeed = Number(
Moghunter.parameters["Rotation Speed %"] || 100
);
Moghunter.menuCursor_parEnable = String(
Moghunter.parameters["Particles"] || true
);
Moghunter.menuCursor_parFileName = String(
Moghunter.parameters["Par File Name"] || "Particles"
);
Moghunter.menuCursor_parPower = Number(
Moghunter.parameters["Par Number of Particles"] || 30
);
Moghunter.menuCursor_parX = Number(
Moghunter.parameters["Par X-Axis Offset"] || 0
);
Moghunter.menuCursor_parY = Number(
Moghunter.parameters["Par Y-Axis Offset"] || 0
);
Moghunter.menuCursor_parSX = Number(
Moghunter.parameters["Par SX-Axis"] || -1
);
Moghunter.menuCursor_parSY = Number(
Moghunter.parameters["Par SY-Axis"] || -2
);
//=============================================================================
// ■■■ PluginManager ■■■
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// 西ヤスアキ
// $gameSystemを使っている今回のゲームではプラグインコマンドを使わないため全て非表示
// !!!!!!!!!!!!!!!!!!!!!!!!
//=============================================================================
//==============================
// * General Command
// $gameSystemを使っている今回のゲームではプラグインコマンドを使わないため全て非表示
//==============================
// PluginManager.registerCommand("MOG_MenuCursor", "MenuCursorGeneral", (data) => {
// const fileName = String(data.fileName);
// const x = Number(data.x);
// const y = Number(data.y);
// const slide = String(data.slide) == "true" ? true : false;
// const align = $gameSystem.getCursorMenuAlign(String(data.align));
// const moveSpeed = Number(data.moveSpeed);
// const animeSpeed = Number(data.animeSpeed);
// const frames = fileName.match(/(F(\d+\.*\d*))/i);
// $gameSystem._menuCursorData.x = x;
// $gameSystem._menuCursorData.y = y;
// $gameSystem._menuCursorData.fileName = fileName;
// $gameSystem._menuCursorData.slide = slide;
// $gameSystem._menuCursorData.speed = Math.min(Math.max(moveSpeed, 30), 1000);
// $gameSystem._menuCursorData.animated = frames && frames[2] > 1 ? true : false;
// $gameSystem._menuCursorData.align = Number(align);
// $gameSystem._menuCursorData.maxFrames = !$gameSystem._menuCursorData.animated ? 1 : frames[2];
// $gameSystem._menuCursorData.animationSpeed = Math.min(Math.max(animeSpeed, 30), 500);
// $gameTemp._menuCursor.needRefresh = true;
// });
// //==============================
// // * Wave Command
// //==============================
// PluginManager.registerCommand("MOG_MenuCursor", "MenuCursorWave", (data) => {
// const horzWave = String(data.horzWave) == "true" ? true : false;
// const vertWave = String(data.vertWave) == "true" ? true : false;
// const waveRange = Number(data.waveRange);
// const waveSpeed = Number(data.waveSpeed);
// $gameSystem._menuCursorData.waveX = horzWave;
// $gameSystem._menuCursorData.waveY = vertWave;
// $gameSystem._menuCursorData.waveR = Math.min(Math.max(waveRange, 5), 50);
// $gameSystem._menuCursorData.waveS = Math.min(Math.max(waveSpeed, 30), 400);
// $gameTemp._menuCursor.needRefresh = true;
// });
// //==============================
// // * Particles Command
// //==============================
// PluginManager.registerCommand("MOG_MenuCursor", "MenuCursorParticles", (data) => {
// const parEnable = String(data.parEnable) == "true" ? true : false;
// const parFileName = String(data.parFileName);
// const parPower = Number(data.parPower);
// const parX_Offset = Number(data.parX_Offset);
// const parY_Offset = Number(data.parY_Offset);
// const parSX = Number(data.parSX);
// const parSY = Number(data.parSY);
// $gameSystem._menuCursorData.particles.enabled = parEnable;
// $gameSystem._menuCursorData.particles.fileName = parFileName;
// $gameSystem._menuCursorData.particles.power = Math.min(Math.max(parPower, 5), 300);
// $gameSystem._menuCursorData.particles.x = parX_Offset;
// $gameSystem._menuCursorData.particles.y = parY_Offset;
// $gameSystem._menuCursorData.particles.sx = parSX;
// $gameSystem._menuCursorData.particles.sy = parSY;
// $gameTemp._menuCursor.needRefresh2 = true;
// });
// //==============================
// // * Rotation Command
// //==============================
// PluginManager.registerCommand("MOG_MenuCursor", "MenuCursorRotation", (data) => {
// const rotation = String(data.rotation) == "true" ? true : false;
// const rotationSpeed = Number(data.rotationSpeed);
// $gameSystem._menuCursorData.rotated = String(rotation) == "true" ? true : false;
// $gameSystem._menuCursorData.rotationSpeed = Math.min(Math.max(rotationSpeed, 30), 1000);
// $gameTemp._menuCursor.needRefresh = true;
// });
//=============================================================================
// ■■■ ImageManager ■■■
//=============================================================================
//==============================
// * Menus
//==============================
ImageManager.loadMenus = function (filename) {
return this.loadBitmap("img/menus/", filename);
};
//=============================================================================
// ■■■ Game_System ■■■
// 旧セーブデータ対策のため削除 西ヤスアキ
//=============================================================================
// //==============================
// // ♦ ALIAS ♦ Initialize
// //==============================
// const _mog_MenuCursor_gSystem_initialize = Game_System.prototype.initialize;
// Game_System.prototype.initialize = function () {
// _mog_MenuCursor_gSystem_initialize.call(this);
// this.setMenuCursorData();
// };
// // ==============================
// // * get Cursor Menu Align
// //==============================
// Game_System.prototype.getCursorMenuAlign = function (align) {
// if (align == "Center") {
// return 1;
// } else if (align == "Right") {
// return 2;
// }
// return 0;
// };
// //==============================
// // * set Menu Cursor Data
// //==============================
// Game_System.prototype.setMenuCursorData = function () {
// this._menuCursorData = {};
// this._menuCursorData.x = Moghunter.menuCursor_x;
// this._menuCursorData.y = Moghunter.menuCursor_y;
// this._menuCursorData.visible = true;
// this._menuCursorData.fileName = String(Moghunter.menuCursor_fileName);
// this._menuCursorData.slide = String(Moghunter.menuCursor_slide) == "true" ? true : false;
// this._menuCursorData.align = this.getCursorMenuAlign(String(Moghunter.menuCursor_align));
// const frames = this._menuCursorData.fileName.match(/(F(\d+\.*\d*))/i);
// this._menuCursorData.speed = Math.min(Math.max(Moghunter.menuCursor_speed, 30), 1000);
// this._menuCursorData.waveX = String(Moghunter.menuCursor_waveX) == "true" ? true : false;
// this._menuCursorData.waveY = String(Moghunter.menuCursor_waveY) == "true" ? true : false;
// this._menuCursorData.waveR = Math.min(Math.max(Moghunter.menuCursor_waveR, 5), 50);
// this._menuCursorData.waveS = Math.min(Math.max(Moghunter.menuCursor_waveS, 30), 400);
// this._menuCursorData.animated = frames && frames[2] > 1 ? true : false;
// this._menuCursorData.maxFrames = !this._menuCursorData.animated ? 1 : frames[2];
// this._menuCursorData.animationSpeed = Math.min(Math.max(Moghunter.menuCursor_animationSpeed, 30), 500);
// this._menuCursorData.rotated = String(Moghunter.menuCursor_rotated) == "true" ? true : false;
// this._menuCursorData.rotationSpeed = Math.min(Math.max(Moghunter.menuCursor_rotationSpeed, 30), 1000);
// this._menuCursorData.showRect = String(Moghunter.menuCursor_showRect) == "true" ? true : false;
// this._menuCursorData.showRectAll = String(Moghunter.menuCursor_showRectAll) == "true" ? true : false;
// this._menuCursorData.particles = {};
// this._menuCursorData.particles.enabled = String(Moghunter.menuCursor_parEnable) == "true" ? true : false;
// this._menuCursorData.particles.fileName = String(Moghunter.menuCursor_parFileName);
// this._menuCursorData.particles.power = Math.min(Math.max(Moghunter.menuCursor_parPower, 5), 300);
// this._menuCursorData.particles.x = Moghunter.menuCursor_parX;
// this._menuCursorData.particles.y = Moghunter.menuCursor_parY;
// this._menuCursorData.particles.sx = Moghunter.menuCursor_parSX;
// this._menuCursorData.particles.sy = Moghunter.menuCursor_parSY;
// console.log(this._menuCursorData);
// };
//=============================================================================
// ■■■ Game_Temp ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
const _mog_MenuCursor_gTemp_initialize = Game_Temp.prototype.initialize;
Game_Temp.prototype.initialize = function () {
_mog_MenuCursor_gTemp_initialize.call(this);
this.setupCursorMenuInitial();
};
//==============================
// * menu Cursor C
//==============================
Game_Temp.prototype.setupCursorMenuInitial = function () {
this._menuCursor = {};
this.menuCursorClear();
this._menuCursor.x2 = this._menuCursor.x;
this._menuCursor.y2 = this._menuCursor.y;
this._menuCursor.w = 0;
this._menuCursor.h = 0;
this._menuCursor.visible = false;
this._menuCursor.visible2 = false;
this._menuCursor.opacity = 0;
this._menuCursor.needRefresh = false;
this._menuCursor.needRefresh2 = false;
};
//==============================
// * menu Cursor Clear
//==============================
Game_Temp.prototype.menuCursorClear = function () {
this._menuCursor.x = -100;
this._menuCursor.y = -100;
};
//=============================================================================
// ■■■ Scene Base ■■■
//=============================================================================
//==============================
// * create Sprite Field
//==============================
Scene_Base.prototype.createSpriteField3 = function () {
this._spriteField3 = new Sprite();
this._spriteField3.z = 100;
this.addChild(this._spriteField3);
};
//==============================
// * sort Sprite Field
//==============================
Scene_Base.prototype.sortSpriteField = function () {
if (this._spriteField1) {
this._spriteField1.children.sort((a, b) => a.z - b.z);
}
if (this._spriteField2) {
this._spriteField2.children.sort((a, b) => a.z - b.z);
}
if (this._spriteField3) {
this._spriteField3.children.sort((a, b) => a.z - b.z);
}
};
//==============================
// * create Menu Cursor
//==============================
Scene_Base.prototype.createMenuCursor = function () {
$gameTemp.setupCursorMenuInitial();
this._spriteCursor = new SpriteMenuCursor();
this._spriteCursor.z = 501;
this._spriteField3.addChild(this._spriteCursor);
this.sortSpriteField();
};
//==============================
// * create Menu Cursor
//==============================
Scene_Base.prototype.createMenuCursorParticles = function () {
this._spriteCursorParticles = new SpriteMenuCursorParticles();
this._spriteCursorParticles.z = 500;
this._spriteField3.addChild(this._spriteCursorParticles);
this.sortSpriteField();
};
//==============================
// ♦ ALIAS ♦ Update
//==============================
const _mog_menuCursor_scnBase_update = Scene_Base.prototype.update;
Scene_Base.prototype.update = function () {
_mog_menuCursor_scnBase_update.call(this);
if (!this._spriteField3) {
this.createSpriteField3();
}
//改変 西ヤスアキ
//if ($gameSystem._menuCursorData.particles.enabled && !this._spriteCursorParticles) {
if (!this._spriteCursorParticles) {
this.createMenuCursorParticles();
}
if (!this._spriteCursor) {
this.createMenuCursor();
}
};
//==============================
// ♦ ALIAS ♦ Update Children
//==============================
const _mog_menuCursor_scnBase_updateChildren =
Scene_Base.prototype.updateChildren;
Scene_Base.prototype.updateChildren = function () {
$gameTemp.menuCursorClear();
_mog_menuCursor_scnBase_updateChildren.call(this);
};
//=============================================================================
// ■■■ Window Selecable ■■■
//=============================================================================
//==============================
// ♦ ALIAS ♦ Initialize
//==============================
const _mog_MenuCursor_Window_Selectable_update =
Window_Selectable.prototype.update;
Window_Selectable.prototype.update = function () {
_mog_MenuCursor_Window_Selectable_update.call(this);
if (this.isMenuCursorVisible()) {
this.setMenuCursorData();
}
};
//==============================
// * is Menu Cursor Visible
//==============================
Window_Selectable.prototype.isMenuCursorVisible = function () {
if (!this.isOpenAndActive()) {
return false;
}
if (this._index < 0) {
return false;
}
return true;
};
//==============================
// * set Menu Cursor Data
//==============================
Window_Selectable.prototype.setMenuCursorData = function () {
const rect = this.itemRect(this.index());
$gameTemp._menuCursor.rectX = rect.x;
$gameTemp._menuCursor.rectX = rect.y;
// 改変 西ヤスアキ
// if ($gameSystem._menuCursorData.align == 1) {
// var x = !this._cursorAll ? rect.x + rect.width / 2 : this.width / 2;
// var y = rect.y;
// } else if ($gameSystem._menuCursorData.align == 2) {
// var x = rect.x + rect.width;
// var y = !this._cursorAll ? rect.y + rect.height / 2 : this.height / 2;
// } else {
var x = rect.x;
var y = !this._cursorAll ? rect.y + rect.height / 2 : this.height / 2;
// }
if (rect.x >= 0 && rect.y >= 0) {
$gameTemp._menuCursor.x = x + this.x - this.origin.x;
$gameTemp._menuCursor.y = y + this.y - this.origin.y;
}
$gameTemp._menuCursor.visible2 = this.checkCursorVis(rect);
};
//==============================
// * checkCursorVis
//==============================
Window_Selectable.prototype.checkCursorVis = function (rect) {
if ($gameTemp._menuCursor.x < this.x) {
return false;
}
if ($gameTemp._menuCursor.y < this.y) {
return false;
}
if ($gameTemp._menuCursor.x > Graphics.width) {
return false;
}
if ($gameTemp._menuCursor.y > Graphics.height) {
return false;
}
if (rect.width <= 0) {
return false;
}
if (rect.height <= 0) {
return false;
}
return true;
};
//==============================
// ♦ ALIAS ♦ Refresh Cursor
//==============================
const _mog_menuCursor_winSel_refreshCursor =
Window_Selectable.prototype.refreshCursor;
Window_Selectable.prototype.refreshCursor = function () {
_mog_menuCursor_winSel_refreshCursor.call(this);
// 改変 西ヤスアキ
// if (this._cursorAll) {
// if (!$gameSystem._menuCursorData.showRectAll) {
// this.setCursorRect(0, 0, 0, 0);
// }
// } else if (this.index() >= 0) {
// if (!$gameSystem._menuCursorData.showRect) {
// this.setCursorRect(0, 0, 0, 0);
// }
// }
};
//=============================================================================
// ■■■ SpriteMenuCursorParticles ■■■
//=============================================================================
function SpriteMenuCursorParticles() {
this.initialize.apply(this, arguments);
}
window.SpriteMenuCursorParticles = SpriteMenuCursorParticles;
SpriteMenuCursorParticles.prototype = Object.create(Sprite.prototype);
SpriteMenuCursorParticles.prototype.constructor = SpriteMenuCursorParticles;
//==============================
// ♦♦ Initialize
//==============================
SpriteMenuCursorParticles.prototype.initialize = function () {
Sprite.prototype.initialize.call(this);
this.createParticles();
};
//==============================
// * File Name
//==============================
SpriteMenuCursorParticles.prototype.fileName = function () {
return "Cursor_Par01"; //String($gameSystem._menuCursorData.particles.fileName);
};
//==============================
// * Particles Max
//==============================
SpriteMenuCursorParticles.prototype.particlesMax = function () {
return 12; //$gameSystem._menuCursorData.particles.power;
};
//==============================
// * SX
//==============================
SpriteMenuCursorParticles.prototype.sx = function () {
return -1; //$gameSystem._menuCursorData.particles.sx;
};
//==============================
// * SY
//==============================
SpriteMenuCursorParticles.prototype.sy = function () {
return -2; //$gameSystem._menuCursorData.particles.sy;
};
//==============================
// * Remove Particles
//==============================
SpriteMenuCursorParticles.prototype.removeParticles = function () {
for (var i = 0; i < this._particles.length; i++) {
this.removeChild(this._particles[i]);
}
};
//==============================
// * create Particles
//==============================
SpriteMenuCursorParticles.prototype.createParticles = function () {
if (this._particles) {
this.removeParticles();
}
this._particles = [];
const img = ImageManager.loadMenus(this.fileName());
for (var i = 0; i < this.particlesMax(); i++) {
this._particles[i] = new Sprite(img);
this._particles[i].z = i;
this._particles[i].blendType = 1;
this._particles[i].anchor.x = 0.5;
this._particles[i].anchor.y = 0.5;
this._particles[i].sx = [0, this.sx()];
this._particles[i].sy = [0, this.sy()];
this._particles[i].rt = [0, Number(0)];
this._particles[i].int = true;
this._particles[i].duration = 60;
this.addChild(this._particles[i]);
this.refreshParticles(this._particles[i]);
}
};
//==============================
// * refresh Particles
//==============================
SpriteMenuCursorParticles.prototype.refreshParticles = function (sprite) {
if (sprite.sx[1] != 0) {
var r = 0.7 + Math.abs(Math.random() * sprite.sx[1]);
sprite.sx[0] = sprite.sx[1] > 0 ? r : -r;
}
if (sprite.sy[1] != 0) {
var r = 0.7 + Math.abs(Math.random() * sprite.sy[1]);
sprite.sy[0] = sprite.sy[1] > 0 ? r : -r;
}
if (sprite.rt[1] != 0) {
var r = 0.03 + Math.abs(Math.random() * sprite.rt[1]);
sprite.rt[0] = sprite.rt[1] > 0 ? r : -r;
}
var r = Math.randomInt(360) * 0.01;
sprite.rotation = r;
var pz = Math.random() * 0.5 * 1;
sprite.scale = new PIXI.Point(0.5 + Number(pz), 0.5 + Number(pz));
sprite.opacity = 0;
sprite.duration = 5 + Math.randomInt(20);
sprite.visible = true;
this.setPosition(sprite);
if (sprite.int) {
this.setInitial(sprite);
}
};
//==============================
// * set Position
//==============================
SpriteMenuCursorParticles.prototype.setInitial = function (sprite) {
sprite.int = false;
sprite.visible = false;
sprite.opacity = 30 + Math.randomInt(170);
sprite.duration = 0;
};
//==============================
// * set Position
//==============================
SpriteMenuCursorParticles.prototype.setPosition = function (sprite) {
const x = $gameTemp._menuCursor.x2 + 0; //$gameSystem._menuCursorData.particles.x;
const y = $gameTemp._menuCursor.y2 + 0; //$gameSystem._menuCursorData.particles.y;
const w = $gameTemp._menuCursor.w;
const h = $gameTemp._menuCursor.h;
sprite.x = x - w / 2 + Math.randomInt(w);
sprite.y = y - h / 2 + Math.randomInt(h);
};
//==============================
// * Need Refresh
//==============================
SpriteMenuCursorParticles.prototype.needRefresh = function (sprite) {
if (sprite.duration > 0) {
return false;
}
if (sprite.opacity > 0) {
return false;
}
return true;
};
//==============================
// * update Move
//==============================
SpriteMenuCursorParticles.prototype.updateMove = function (sprite) {
sprite.x += sprite.sx[0];
sprite.y += sprite.sy[0];
sprite.rotation += sprite.rt[0];
if (sprite.duration > 0) {
sprite.opacity += 15;
sprite.duration--;
} else {
sprite.opacity -= 15;
}
};
//==============================
// * update Particles
//==============================
SpriteMenuCursorParticles.prototype.updateParticles = function () {
for (var i = 0; i < this._particles.length; i++) {
this.updateMove(this._particles[i]);
if (this.needRefresh(this._particles[i])) {
this.refreshParticles(this._particles[i]);
}
}
};
//==============================
// * is Visible
//==============================
SpriteMenuCursorParticles.prototype.isVisible = function () {
//改変 西ヤスアキ
//このプラグインが入ってないバージョンのセーブデータを読み込んだときのエラー対応
// if ($gameSystem._menuCursorData) {
// if (!$gameSystem._menuCursorData.particles.enabled) {
// return false;
// }
// }
return $gameTemp._menuCursor.visible;
};
//==============================
// * update Other
//==============================
SpriteMenuCursorParticles.prototype.updateOther = function () {
this.visible = this.isVisible();
this.opacity = $gameTemp._menuCursor.opacity;
};
//==============================
// * refreshBase
//==============================
SpriteMenuCursorParticles.prototype.refreshBase = function () {
$gameTemp._menuCursor.needRefresh2 = false;
this.createParticles();
};
//==============================
// * needRefreshBase
//==============================
SpriteMenuCursorParticles.prototype.needRefreshBase = function () {
return $gameTemp._menuCursor.needRefresh2;
};
//==============================
// ♦♦ Update
//==============================
SpriteMenuCursorParticles.prototype.update = function () {
Sprite.prototype.update.call(this);
if (this.needRefreshBase()) {
this.refreshBase();
}
this.updateParticles();
this.updateOther();
};
//=============================================================================
// ■■■ SpriteMenuCursor ■■■
//=============================================================================
function SpriteMenuCursor() {
this.initialize.apply(this, arguments);
}
SpriteMenuCursor.prototype = Object.create(Sprite.prototype);
SpriteMenuCursor.prototype.constructor = SpriteMenuCursor;
//==============================
// ♦♦ Initialize
//==============================
SpriteMenuCursor.prototype.initialize = function () {
Sprite.prototype.initialize.call(this);
this._waitData = true;
this._cw = this.width;
this._ch = this.height;
this._ax = this.align() == 2 ? this._cw : 0;
this._xOffset = 15; //this.align() == 2 ? -$gameSystem._menuCursorData.x : $gameSystem._menuCursorData.x;
this._yOffset = 0; //$gameSystem._menuCursorData.y;
this.opacity = 0;
this._screenX = (Graphics.width - Graphics.boxWidth) / 2;
this._screenY = (Graphics.height - Graphics.boxHeight) / 2;
this.setWaveData();
this.setAnimationData();
this.setRotationData();
this.createCursor();
};
//==============================
// * set wave Data
//==============================
SpriteMenuCursor.prototype.setWaveData = function () {
this._wave = {};
this._wave.horz = false; //$gameSystem._menuCursorData.waveX;
this._wave.vert = true; //$gameSystem._menuCursorData.waveY;
this._wave.x = 0;
this._wave.y = 0;
this._wave.t = 0;
this._wave.mx = 13; //$gameSystem._menuCursorData.waveR;
this._wave.speed1 = 90 / 100; //$gameSystem._menuCursorData.waveS / 100;
this._wave.speed2 = 0;
this._wave.speed3 = 3;
this._wave.phase = 0;
};
//==============================
// * set Animation Data
//==============================
SpriteMenuCursor.prototype.setAnimationData = function () {
this._anime = {};
this._anime.frameIndex = 0;
this._anime.maxFrame = 1; //$gameSystem._menuCursorData.maxFrames;
this._anime.speed1 = 100 / 100; //$gameSystem._menuCursorData.animationSpeed / 100;
this._anime.speed2 = 0;
this._anime.speed3 = 5;
};
//==============================
// * set Rotation Data
//==============================
SpriteMenuCursor.prototype.setRotationData = function () {
this._rotation = {};
//const speed = (0.02 * $gameSystem._menuCursorData.rotationSpeed) / 100;
const speed = (0.02 * 100) / 100;
this._rotation.speed = speed;
};
//==============================
// * update Rotation
//==============================
SpriteMenuCursor.prototype.updateRotation = function () {
this._spriteCursor.rotation += this._rotation.speed;
};
//==============================
// * refresh Frame
//==============================
SpriteMenuCursor.prototype.refreshFrame = function () {
this._anime.frameIndex++;
if (this._anime.frameIndex >= this._anime.maxFrame) {
this._anime.frameIndex = 0;
}
const cw = this._cw * this._anime.frameIndex;
this._spriteCursor.setFrame(cw, 0, this._cw, this._ch);
};
//==============================
// * update Animated
//==============================
SpriteMenuCursor.prototype.updateAnimated = function () {
this._anime.speed2 += this._anime.speed1;
if (this._anime.speed2 > this._anime.speed3) {
this._anime.speed2 = 0;
this.refreshFrame();
}
};
//==============================
// * Get Data
//==============================
SpriteMenuCursor.prototype.getData = function () {
this._waitData = false;
this._cw = this._spriteCursor.bitmap.width / this.maxFrames();
this._ch = this._spriteCursor.bitmap.height;
this._ax = this.align() == 2 ? this._cw : 0;
//this._xOffset = this.align() == 2 ? -$gameSystem._menuCursorData.x : $gameSystem._menuCursorData.x;
this._xOffset = this.align() == 2 ? -15 : 15;
this._yOffset = 0; //$gameSystem._menuCursorData.y;
if (this.isAnimated()) {
this.refreshFrame();
} else {
this._spriteCursor.setFrame(0, 0, this._cw, this._ch);
}
};
//==============================
// * create Cursor
//==============================
SpriteMenuCursor.prototype.cursorName = function () {
return "Cursor_S"; //String($gameSystem._menuCursorData.fileName);
};
//==============================
// * move Speed
//==============================
SpriteMenuCursor.prototype.moveSpeed = function () {
return 100; //$gameSystem._menuCursorData.speed;
};
//==============================
// * is Animated
//==============================
SpriteMenuCursor.prototype.isAnimated = function () {
return false; //$gameSystem._menuCursorData.animated;
};
//==============================
// * is Slide
//==============================
SpriteMenuCursor.prototype.isSlide = function () {
return true; //$gameSystem._menuCursorData.slide;
};
//==============================
// * is Rotated
//==============================
SpriteMenuCursor.prototype.isRotated = function () {
return true; //$gameSystem._menuCursorData.rotated;
};
//==============================
// * Align
//==============================
SpriteMenuCursor.prototype.align = function () {
return 0; //$gameSystem._menuCursorData.align;
};
//==============================
// * create Cursor
//==============================
SpriteMenuCursor.prototype.createCursor = function () {
this._spriteCursor = new Sprite();
this.refreshCursorBitmap();
this._spriteCursor.z = 500;
this.addChild(this._spriteCursor);
};
//==============================
// * refresh Cursor Bitmap
//==============================
SpriteMenuCursor.prototype.refreshCursorBitmap = function () {
this._spriteCursor.bitmap = ImageManager.loadMenus(this.cursorName());
this._spriteCursor.anchor.x = 0.5;
this._spriteCursor.anchor.y = 0.5;
};
//==============================
// * move Menu Cursor
//==============================
SpriteMenuCursor.prototype.moveMenuCursor = function (value, real_value) {
if (value == real_value) {
return value;
}
var dnspeed =
((5 + Math.abs(value - real_value) / 10) * this.moveSpeed()) / 100;
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);
};
//==============================
// * needSlideCursor
//==============================
SpriteMenuCursor.prototype.needSlideCursor = function () {
if ($gameTemp._menuCursor.x > 0) {
return true;
}
if ($gameTemp._menuCursor.y > 0) {
return true;
}
return false;
};
//==============================
// * maxFrames
//==============================
SpriteMenuCursor.prototype.maxFrames = function () {
return this._anime.maxFrame;
};
//==============================
// * cwidth
//==============================
SpriteMenuCursor.prototype.cwidth = function () {
return this._spriteCursor.bitmap.width / this.maxFrames() / 4;
};
//==============================
// * cheight
//==============================
SpriteMenuCursor.prototype.cheight = function () {
return this._spriteCursor.bitmap.height / 4;
};
//==============================
// * pos X
//==============================
SpriteMenuCursor.prototype.posX = function () {
return (
$gameTemp._menuCursor.x +
this._xOffset +
this._screenX +
this._wave.x -
this.cwidth() +
this._ax
);
};
//==============================
// * pos Y
//==============================
SpriteMenuCursor.prototype.posY = function () {
return (
$gameTemp._menuCursor.y +
this._yOffset +
this._screenY +
this._wave.y +
this.cheight()
);
};
//==============================
// * update Position
//==============================
SpriteMenuCursor.prototype.updatePosition = function () {
if (this.isSlide()) {
this._spriteCursor.x = this.moveMenuCursor(
this._spriteCursor.x,
this.posX()
);
this._spriteCursor.y = this.moveMenuCursor(
this._spriteCursor.y,
this.posY()
);
} else {
this._spriteCursor.x = this.posX();
this._spriteCursor.y = this.posY();
}
};
//==============================
// * update wave
//==============================
SpriteMenuCursor.prototype.updateWave = function () {
this._wave.speed2 += this._wave.speed1;
if (this._wave.speed2 > this._wave.speed3) {
this._wave.speed2 = 0;
if (this._wave.phase == 0) {
this._wave.t++;
if (this._wave.t > this._wave.mx) {
this._wave.t = this._wave.mx;
this._wave.phase = 1;
}
} else {
this._wave.t--;
if (this._wave.t <= 0) {
this._wave.t = 0;
this._wave.phase = 0;
}
}
}
if (this._wave.horz) {
this._wave.x = this._wave.t - this._wave.mx;
}
if (this._wave.vert) {
this._wave.y = this._wave.t - this._wave.mx;
}
};
//==============================
// * update Position
//==============================
SpriteMenuCursor.prototype.spriteFade = function (value) {
this.opacity += value;
};
//==============================
// * refresh Cursor
//==============================
SpriteMenuCursor.prototype.refreshCursor = function () {
$gameTemp._menuCursor.needRefresh = false;
this._waitData = true;
this.setWaveData();
this.setAnimationData();
this.setRotationData();
this.refreshCursorBitmap();
this._spriteCursor.rotation = 0;
this.opacity = 0;
};
//==============================
// * need Refresh Cursor
//==============================
SpriteMenuCursor.prototype.needRefreshCursor = function () {
return $gameTemp._menuCursor.needRefresh;
};
//==============================
// * isVisible
//==============================
SpriteMenuCursor.prototype.isVisible = function () {
return $gameTemp._menuCursor.visible2;
};
//==============================
// * update Cursor
//==============================
SpriteMenuCursor.prototype.updateCursor = function () {
this.visible = this.isVisible();
if (this.needSlideCursor()) {
this.updateWave();
if (this.isAnimated()) {
this.updateAnimated();
}
if (this.isRotated()) {
this.updateRotation();
}
this.updatePosition();
this.spriteFade(25);
} else {
this.spriteFade(-55);
}
this.updateOther();
};
//==============================
// * update Other
//==============================
SpriteMenuCursor.prototype.updateOther = function () {
$gameTemp._menuCursor.x2 = this._spriteCursor.x;
$gameTemp._menuCursor.y2 = this._spriteCursor.y;
$gameTemp._menuCursor.w = this._cw;
$gameTemp._menuCursor.h = this._ch;
$gameTemp._menuCursor.visible = this.visible;
$gameTemp._menuCursor.opacity = this.opacity;
};
//==============================
// ♦♦ update
//==============================
SpriteMenuCursor.prototype.update = function () {
Sprite.prototype.update.call(this);
this.visible = false;
if (this.needRefreshCursor()) {
this.refreshCursor();
}
if (this._waitData) {
if (this._spriteCursor.bitmap.isReady()) {
this.getData();
}
return;
}
this.updateCursor();
};
})();