You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ycrpg/js/plugins/MOG_ATB_Gauge.js

491 lines
15 KiB
JavaScript

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

//=============================================================================
// MOG_ATB_Gauge.js
//=============================================================================
/*:
* @plugindesc (v1.0) Apresenta a Hud de ATB para MOG_ATB.
* @author Moghunter
*
* @param Hud Angle
* @desc Definição do ângulo da hud.
* @default 0
*
* @param Hud X-Axis
* @desc Definição X-Axis da hud.
* @default 740
*
* @param Hud Y-Axis
* @desc Definição Y-Axis da hud.
* @default 45
*
* @param Enemy X-Axis Offset
* @desc Definição X-Axis offset do ícone dos inimigos.
* @default 16
*
* @param Actor X-Axis Offset
* @desc Definição X-Axis offset do ícone dos aliados.
* @default -16
*
* @param Active X-Axis
* @desc Definição X-Axis quando o battler está em turno.
* @default -3
*
* @param Active Y-Axis
* @desc Definição Y-Axis quando o battler está em turno.
* @default 30
*
* @param Gauge Size
* @desc Definição do tamanho do medidor.
* @default 160
*
* @param Skill Visible
* @desc Apresentar o Ícone de habilidade.
* @default true
*
* @param Skill Zoom
* @desc Definição do zoom do ícone de habilidade.
* @default 0.6
*
* @param Skill X-Axis
* @desc Definição X-Axis do ícone de habilidade.
* @default 0
*
* @param Skill Y-Axis
* @desc Definição Y-Axis do ícone de habilidade.
* @default 0
*
* @help
* =============================================================================
* +++ MOG - ATB Gauge (v1.0) +++
* By Moghunter
* https://mogplugins.wordpress.com
* =============================================================================
* Apresenta a Hud de ATB para MOG_ATB.
*
* =============================================================================
* IMAGES
* =============================================================================
* As imagens deverão ser gravadas na pasta (img/atb/)
* Para nomear o ícones dos battlers, nomeie da seguinte forma.
*
* Actor_ + ACTOR_ID.png
* Enemy_ + ACTOR_ID.png
*
* Ex
*
* Actor_1.png
* Actor_2.png
* ...
* Enemy_1.png
* Enemy_2.png
* ...
*/
//=============================================================================
// ** PLUGIN PARAMETERS
//=============================================================================
  var Imported = Imported || {};
  Imported.MOG_ATB_Gauge = true;
  var Moghunter = Moghunter || {};
Moghunter.parameters = PluginManager.parameters('MOG_ATB_Gauge');
Moghunter.atbIconAngle = Number(Moghunter.parameters['Hud Angle'] || 0);
Moghunter.atbIcon_GaugeX = Number(Moghunter.parameters['Hud X-Axis'] || 740);
Moghunter.atbIcon_GaugeY = Number(Moghunter.parameters['Hud Y-Axis'] || 45);
Moghunter.atbIcon_enemyX = Number(Moghunter.parameters['Enemy X-Axis Offset'] || 16);
Moghunter.atbIcon_actorX = Number(Moghunter.parameters['Actor X-Axis Offset'] || -16);
Moghunter.atbIcon_inTurnX = Number(Moghunter.parameters['Active X-Axis'] || -3);
Moghunter.atbIcon_inTurnY = Number(Moghunter.parameters['Active Y-Axis'] || 30);
Moghunter.atbIcon_GaugeSize = Number(Moghunter.parameters['Gauge Size'] || 160);
Moghunter.atbIcon_SkillVisible = String(Moghunter.parameters['Skill Visible'] || 'true');
Moghunter.atbIcon_SkillScale = Number(Moghunter.parameters['Skill Zoom'] || 0.6);
Moghunter.atbIcon_SkillX = Number(Moghunter.parameters['Skill X-Axis'] || 0);
Moghunter.atbIcon_SkillY = Number(Moghunter.parameters['Skill Y-Axis'] || 0);
//==============================
// * load ATB Icon
//==============================
ImageManager.loadATBIcon = function(filename) {
return this.loadBitmap('img/atb/', filename, 0, true);
};
//=============================================================================
// ** Game Temp
//=============================================================================
//==============================
// * Initialize
//==============================
var _mog_atb_gTemp_initialize = Game_Temp.prototype.initialize
Game_Temp.prototype.initialize = function() {
_mog_atb_gTemp_initialize.call(this);
this._refreshATBGauge = false;;
};
//=============================================================================
// ** Scene Base
//=============================================================================
//==============================
// ** create Hud Field
//==============================
Scene_Base.prototype.createHudField = function() {
this._hudField = new Sprite();
this._hudField.z = 10;
this.addChild(this._hudField);
};
//==============================
// ** sort MZ
//==============================
Scene_Base.prototype.sortMz = function() {
this._hudField.children.sort(function(a, b){return a.mz-b.mz});
};
//=============================================================================
// ** Scene Battle
//=============================================================================
//==============================
// ** create Spriteset
//==============================
var _mog_atbGauge_sbattle_createSpriteset = Scene_Battle.prototype.createSpriteset;
Scene_Battle.prototype.createSpriteset = function() {
_mog_atbGauge_sbattle_createSpriteset.call(this);
if (!this._hudField) {this.createHudField()};
this.createATBGauge();
this.sortMz();
};
//==============================
// ** create ATB Gauge
//==============================
Scene_Battle.prototype.createATBGauge = function() {
this._atbGauge = new ATB_Gauge()
this._atbGauge.mz = 125;
this._hudField.addChild(this._atbGauge);
};
//==============================
// ** remove ATB Gauge
//==============================
Scene_Battle.prototype.removeATBGauge = function() {
if (!this._atbGauge) {return};
this._hudField.removeChild(this._atbGauge);
};
//==============================
// ** refresh ATB Gauge
//==============================
Scene_Battle.prototype.refreshATBGauge = function() {
$gameTemp._refreshATBGauge = false;
this.removeATBGauge();
this.createATBGauge();
};
//==============================
// ** Update
//==============================
var _mog_atbGauge_Sbat_update = Scene_Battle.prototype.update;
Scene_Battle.prototype.update = function() {
_mog_atbGauge_Sbat_update.call(this);
if ($gameTemp._refreshATBGauge) {this.refreshATBGauge()};
};
//=============================================================================
// ** Spriteset Map
//=============================================================================
//=============================================================================
// ** ATB Icon Gauge
//=============================================================================
function ATB_Gauge() {
this.initialize.apply(this, arguments);
};
ATB_Gauge.prototype = Object.create(Sprite.prototype);
ATB_Gauge.prototype.constructor = ATB_Gauge;
//==============================
// * Initialize
//==============================
ATB_Gauge.prototype.initialize = function() {
Sprite.prototype.initialize.call(this);
this._angle = Moghunter.atbIconAngle * Math.PI / 180;
this.rotation = this._angle;
this._iconImg = ImageManager.loadSystem("IconSet");
this._skillIcon = String(Moghunter.atbIcon_SkillVisible) == "true" ? true : false;
this.refreshBattlers();
this.createLayout();
this.createIcons();
};
//==============================
// * refresh Battlers
//==============================
ATB_Gauge.prototype.refreshBattlers = function() {
this._battlers = [];
for (var i = 0; i < $gameParty.battleMembers().length; i++) {
var battler = $gameParty.battleMembers()[i];
this._battlers.push(battler);
};
for (var i = 0; i < $gameTroop.members().length; i++) {
var battler = $gameTroop.members()[i];
this._battlers.push(battler);
};
};
//==============================
// * battlers
//==============================
ATB_Gauge.prototype.battlers = function() {
if (this._battlers) {return this._battlers};
return [];
};
//==============================
// * At
//==============================
ATB_Gauge.prototype.atb = function(battler) {
if (Imported.MOG_ATB) {return battler.atb()};
return -1;
}
//==============================
// * Maxatb
//==============================
ATB_Gauge.prototype.maxatb = function(battler) {
if (Imported.MOG_ATB) {return battler.maxAtb()};
return 1;
};
//==============================
// * Cast AT
//==============================
ATB_Gauge.prototype.cast_at = function(battler) {
if (Imported.MOG_ATB) {return battler._cast_atb[1]};
return 0;
};
//==============================
// * Cast Max AT
//==============================
ATB_Gauge.prototype.cast_max_at = function(battler) {
if (Imported.MOG_ATB) {return battler._cast_atb[2]};
return 1;
};
//==============================
// * Is Casting
//==============================
ATB_Gauge.prototype.is_casting = function(battler) {
if (!battler) {return false};
if (Imported.MOG_ATB) {return battler.isCasting()};
return false;
};
//==============================
// * Is Max Atb
//==============================
ATB_Gauge.prototype.inTurn = function(battler) {
if (!battler.isMaxAtb()) {return false};
if (!battler._intTurn) {return false}
return true;
};
//==============================
// * Is Max Atb
//==============================
ATB_Gauge.prototype.is_max_at = function(battler) {
return this.atb(battler) >= this.maxatb(battler);
};
//==============================
// * Is Max Cast
//==============================
ATB_Gauge.prototype.is_max_cast = function(battler) {
return this.cast_at(battler) >= this.cast_max_at(battler);
};
//==============================
// * Item
//==============================
ATB_Gauge.prototype.item = function(battler) {
if (!battler) {return null};
return battler._cast_atb[0];
return null
};
//==============================
// * Create Layout
//==============================
ATB_Gauge.prototype.createLayout = function() {
this.x = Moghunter.atbIcon_GaugeX;
this.y = Moghunter.atbIcon_GaugeY;
this._layout = new Sprite(ImageManager.loadATBIcon("ATB_Gauge"));
this._layout.anchor.x = 0.5;
this.addChild(this._layout);
};
//==============================
// * Create Icons
//==============================
ATB_Gauge.prototype.createIcons = function() {
this._iconField = new Sprite();
this.addChild(this._iconField);
this._icons = [];
this._skillIcons = [];
for (var i = 0; i < this.battlers().length; i++) {
var battler = this.battlers()[i];
if (battler.isActor()) {
var name = "Actor_" + String(battler._actorId);
} else {
var name = "Enemy_" + String(battler._enemyId);
};
this._icons[i] = new Sprite(ImageManager.loadATBIcon(name));
this._icons[i].battler = battler;
this._icons[i].anchor.x = 0.5;
this._icons[i].anchor.y = 0.5;
this._icons[i].opacity = 0
this._icons[i].nx = 0;
this._icons[i].ny = 0;
this._icons[i].rotation = -this._angle
this._iconField.addChild(this._icons[i]);
if (this._skillIcon) {this.createSkillIcon(i,this._icons[i])};
};
};
//==============================
// * Index
//==============================
ATB_Gauge.prototype.createSkillIcon = function(i,sprite) {
this._skillIcons[i] = new Sprite();
this._skillIcons[i].item = null;
this._skillIcons[i].org = [Moghunter.atbIcon_SkillX,Moghunter.atbIcon_SkillY];
this._skillIcons[i].scale.x = Moghunter.atbIcon_SkillScale;
this._skillIcons[i].scale.y = Moghunter.atbIcon_SkillScale;
this._skillIcons[i].rotation = this._icons[i].rotation;
sprite.addChild(this._skillIcons[i]);
};
//==============================
// * Height EX
//==============================
ATB_Gauge.prototype.heightEX = function(battler,type) {
return 1;
};
//==============================
// * update Icon
//==============================
ATB_Gauge.prototype.updateIcon = function(sprite,index) {
var battler = sprite.battler;
if (battler.isDead()) {
sprite.opacity -= 15;
} else {
sprite.opacity += 15;
if (this.is_casting(battler)) {
var h = Moghunter.atbIcon_GaugeSize * this.cast_at(battler) / this.cast_max_at(battler);
var h2 = this.heightEX(battler,1);
} else {
var h = Moghunter.atbIcon_GaugeSize * this.atb(battler) / this.maxatb(battler);
var h2 = this.heightEX(battler,0);
};
if (this.inTurn(battler)) {
sprite.nx = Moghunter.atbIcon_inTurnX;
sprite.ny = Moghunter.atbIcon_inTurnY;
} else {
sprite.nx = battler.isActor() ? Moghunter.atbIcon_actorX : Moghunter.atbIcon_enemyX;
sprite.ny = this._layout.height - h + h2;
};
};
sprite.x = this.mvto(sprite.x,sprite.nx);
sprite.y = this.mvto(sprite.y,sprite.ny);
if (this._skillIcon) {this.updateSkillIcon(this._skillIcons[index],sprite,battler)};
};
//==============================
// * updateSkillIcon
//==============================
ATB_Gauge.prototype.updateSkillIcon = function(spriteskill,spriteicon,battler) {
spriteskill.x = spriteskill.org[0];
spriteskill.y = spriteskill.org[1];
spriteskill.opacity = spriteicon.opacity;
spriteskill.visible = spriteicon.visible;
if (spriteskill.item != this.item(battler)) {this.refreshIconSkill(spriteskill,battler)};
};
//==============================
// * refresh Icon Skill
//==============================
ATB_Gauge.prototype.refreshIconSkill = function(spriteskill,battler) {
spriteskill.item = this.item(battler);
if (spriteskill.item) {
var iconIndex = spriteskill.item.iconIndex;
var pw = Window_Base._iconWidth;
var ph = Window_Base._iconHeight;
var sx = iconIndex % 16 * pw;
var sy = Math.floor(iconIndex / 16) * ph;
spriteskill.bitmap = this._iconImg;
spriteskill.setFrame(sx, sy, pw, ph);
} else {
spriteskill.bitmap = null;
};
spriteskill.visible = spriteskill.item != null ? true : false;
};
//==============================
// * mv to
//==============================
ATB_Gauge.prototype.mvto = function(value,real_value) {
if (value == real_value) {return value};
var dnspeed = 5 + (Math.abs(value - real_value) / 10);
if (value > real_value) {value -= dnspeed;
if (value < real_value) {value = real_value};}
else if (value < real_value) {value += dnspeed;
if (value > real_value) {value = real_value};
};
return Math.floor(value);
};
//==============================
// * need Fade
//==============================
ATB_Gauge.prototype.needFade = function() {
if ($gameMessage.isBusy()) {return true};
if ($gameTemp._battleEnd) {return true};
if ($gameTemp._atbBattleEnd) {return true};
return false;
};
//==============================
// * Update Visible
//==============================
ATB_Gauge.prototype.updateVisible = function() {
if (this.needFade()) {
this.opacity -= 10;
} else {
this.opacity += 10;
};
};
//==============================
// * update Sort Y
//==============================
ATB_Gauge.prototype.updateSortY = function() {
this._iconField.children.sort(function(b, a){return a.y-b.y})
};
//==============================
// * update
//==============================
ATB_Gauge.prototype.update = function() {
Sprite.prototype.update.call(this);
this.updateVisible();
this.updateSortY();
for (var i = 0; i < this._icons.length; i++) {
this.updateIcon(this._icons[i],i);
};
};