|
|
//=============================================================================
|
|
|
// Yanfly Engine Plugins - Battle Engine Extension - Visual HP Gauge
|
|
|
// YEP_X_VisualHpGauge.js
|
|
|
//=============================================================================
|
|
|
|
|
|
var Imported = Imported || {};
|
|
|
Imported.YEP_X_VisualHpGauge = true;
|
|
|
|
|
|
var Yanfly = Yanfly || {};
|
|
|
Yanfly.VHG = Yanfly.VHG || {};
|
|
|
|
|
|
//=============================================================================
|
|
|
/*:
|
|
|
* @plugindesc v1.06 血量槽外观☁️
|
|
|
* @author Yanfly Engine Plugins
|
|
|
*
|
|
|
* @param ---全局---
|
|
|
* @default
|
|
|
*
|
|
|
* @param Display Actor
|
|
|
* @text 角色HP条
|
|
|
* @desc Do you wish to display the HP Gauge for actors?
|
|
|
* NO - false YES - true
|
|
|
* @default true
|
|
|
*
|
|
|
* @param Defeat First
|
|
|
* @text 敌人需击败显示血条
|
|
|
* @desc Enemies must be defeated first before showing the HP Gauge.
|
|
|
* NO - false YES - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @param Always Visible
|
|
|
* @text 始终可见
|
|
|
* @desc HP Gauge is always visible and doesn't fade away.
|
|
|
* NO - false YES - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @param ---外观---
|
|
|
* @default
|
|
|
*
|
|
|
* @param Minimum Gauge Width
|
|
|
* @desc This is the minimum width in pixels for HP Gauges.
|
|
|
* @default 144
|
|
|
*
|
|
|
* @param Gauge Height
|
|
|
* @desc This is the height in pixels for HP Gauges.
|
|
|
* @default 18
|
|
|
*
|
|
|
* @param Back Color
|
|
|
* @desc This is the text color used for the back of HP Gauges.
|
|
|
* @default 19
|
|
|
*
|
|
|
* @param HP Color 1
|
|
|
* @desc This is the text color used for the 1st part of HP Gauges.
|
|
|
* @default 20
|
|
|
*
|
|
|
* @param HP Color 2
|
|
|
* @desc This is the text color used for the 2nd part of HP Gauges.
|
|
|
* @default 21
|
|
|
*
|
|
|
* @param Gauge Duration
|
|
|
* @text
|
|
|
* @desc This is the frames the HP gauge will continue to show after
|
|
|
* it finishes draining or filling.
|
|
|
* @default 30
|
|
|
*
|
|
|
* @param Gauge Position
|
|
|
* @text 条位置
|
|
|
* @desc Where do you wish to show the HP gauge?
|
|
|
* BELOW - false ABOVE - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @param Y Buffer
|
|
|
* @desc How much do you wish to shift the gauge Y position?
|
|
|
* @default -16
|
|
|
*
|
|
|
* @param Use Thick Gauges
|
|
|
* @text 使用厚量规
|
|
|
* @desc Use the thick gauges provided by this plugin?
|
|
|
* Default - false Thick - true
|
|
|
* @default true
|
|
|
*
|
|
|
* @param ---文本显示---
|
|
|
* @default
|
|
|
*
|
|
|
* @param Show HP
|
|
|
* @desc Show the actual 'HP' text.
|
|
|
* NO - false YES - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @param Show Value
|
|
|
* @desc Show the HP value.
|
|
|
* NO - false YES - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @param Show Max
|
|
|
* @desc Show the MaxHP value if value is shown?
|
|
|
* NO - false YES - true
|
|
|
* @default false
|
|
|
*
|
|
|
* @help
|
|
|
* ============================================================================
|
|
|
* Introduction
|
|
|
* ============================================================================
|
|
|
*
|
|
|
* 这个插件需要YEP_BattleEngineCore战斗引擎核心,确保放在这个插件下面
|
|
|
*
|
|
|
*
|
|
|
* 这个插件可以在敌方被击中或者选择时显示血量,你也可以设置队员的
|
|
|
* 血量显示。你可以调整血量显示的参数。
|
|
|
*
|
|
|
* 敌方默认不需要先击倒在显示血量。这个可以通过参数设定。但是,在编
|
|
|
* 辑器战斗测试时,血量会一直显示,除非敌方隐藏。
|
|
|
*
|
|
|
* ============================================================================
|
|
|
* Notetags
|
|
|
* ============================================================================
|
|
|
*
|
|
|
* Class and Enemy Notetags:
|
|
|
* <Hide HP Gauge>
|
|
|
* 隐藏血量
|
|
|
* This HP gauge will always be hidden if this notetag is present.
|
|
|
*
|
|
|
* <Show HP Gauge>
|
|
|
* 显示血量
|
|
|
* This HP gauge will always be shown if this notetag is present while the
|
|
|
* target is selected or taking damage.
|
|
|
*
|
|
|
* <HP Gauge Width: x>
|
|
|
* 血量槽宽度,如果宽度小于最小宽度,将会取最小宽度
|
|
|
* This will set the battler's HP Gauge width to x pixels. However, if this
|
|
|
* width is less than the minimum width, minimum width will take priority.
|
|
|
*
|
|
|
* <HP Gauge Height: x>
|
|
|
* 血量槽高度
|
|
|
* This set's the HP Gauge height to x pixels.
|
|
|
*
|
|
|
* <HP Gauge Back Color: x>
|
|
|
* 血量槽背景颜色
|
|
|
* This changes the HP Gauge's back color to x text color.
|
|
|
*
|
|
|
* <HP Gauge Color 1: x>
|
|
|
* 血量槽颜色1
|
|
|
* This changes the HP Gauge's color 1 to x text color.
|
|
|
*
|
|
|
* <HP Gauge Color 2: x>
|
|
|
* 血量槽颜色2
|
|
|
* This changes the HP Gauge's color 2 to x text color.
|
|
|
*
|
|
|
* ============================================================================
|
|
|
* Changelog
|
|
|
* ============================================================================
|
|
|
*
|
|
|
* Version 1.06:
|
|
|
* - Compatibility update with State Categories.
|
|
|
*
|
|
|
* Version 1.05:
|
|
|
* - Updated for RPG Maker MV version 1.1.0.
|
|
|
*
|
|
|
* Version 1.04:
|
|
|
* - Optimization update.
|
|
|
*
|
|
|
* Version 1.03:
|
|
|
* - Fixed a bug when Escape skill-effects are used on battlers.
|
|
|
*
|
|
|
* Version 1.02:
|
|
|
* - Fixed a bug with gauge height not adjusting.
|
|
|
*
|
|
|
* Version 1.01b:
|
|
|
* - Fixed a bug regarding dependancy checks.
|
|
|
* - Fixed many bugs regarding stacking errors.
|
|
|
*
|
|
|
* Version 1.01:
|
|
|
* - Rewrote the good majority of plugin to accomodate the following features:
|
|
|
* ---'Always Visible' parameter.
|
|
|
* ---'Gauge Position' parameter.
|
|
|
* ---'Y Buffer' parameter.
|
|
|
* ---'Use Thick Gauges' parameter.
|
|
|
* ---'Show HP' parameter.
|
|
|
* ---'Show Value' parameter.
|
|
|
* ---'Show Max' parameter.
|
|
|
*
|
|
|
* Version 1.00:
|
|
|
* - Finished Plugin!
|
|
|
*/
|
|
|
//=============================================================================
|
|
|
|
|
|
if (Imported.YEP_BattleEngineCore) {
|
|
|
|
|
|
//=============================================================================
|
|
|
// Parameter Variables
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.Parameters = PluginManager.parameters('YEP_X_VisualHpGauge');
|
|
|
Yanfly.Param = Yanfly.Param || {};
|
|
|
|
|
|
Yanfly.Param.VHGDisplayActor = String(Yanfly.Parameters['Display Actor']);
|
|
|
Yanfly.Param.VHGDefeatFirst = String(Yanfly.Parameters['Defeat First']);
|
|
|
Yanfly.Param.VHGAlwaysShow = eval(String(Yanfly.Parameters['Always Visible']));
|
|
|
|
|
|
Yanfly.Param.VHGMinHpWidth = Number(Yanfly.Parameters['Minimum Gauge Width']);
|
|
|
Yanfly.Param.VHGGaugeHeight = Number(Yanfly.Parameters['Gauge Height']);
|
|
|
Yanfly.Param.VHGBackColor = Number(Yanfly.Parameters['Back Color']);
|
|
|
Yanfly.Param.VHGHpColor1 = Number(Yanfly.Parameters['HP Color 1']);
|
|
|
Yanfly.Param.VHGHpColor2 = Number(Yanfly.Parameters['HP Color 2']);
|
|
|
Yanfly.Param.VHGGaugeDuration = Number(Yanfly.Parameters['Gauge Duration']);
|
|
|
Yanfly.Param.VHGGaugePos = eval(String(Yanfly.Parameters['Gauge Position']));
|
|
|
Yanfly.Param.VHGBufferY = Number(Yanfly.Parameters['Y Buffer']);
|
|
|
Yanfly.Param.VHGThick = eval(String(Yanfly.Parameters['Use Thick Gauges']));
|
|
|
|
|
|
Yanfly.Param.VHGShowHP = eval(String(Yanfly.Parameters['Show HP']));
|
|
|
Yanfly.Param.VHGShowValue = eval(String(Yanfly.Parameters['Show Value']));
|
|
|
Yanfly.Param.VHGShowMax = eval(String(Yanfly.Parameters['Show Max']));
|
|
|
|
|
|
//=============================================================================
|
|
|
// DataManager
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.VHG.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
|
|
|
DataManager.isDatabaseLoaded = function() {
|
|
|
if (!Yanfly.VHG.DataManager_isDatabaseLoaded.call(this)) return false;
|
|
|
if (!Yanfly._loaded_YEP_X_VisualHpGauge) {
|
|
|
this.processVHGNotetags($dataClasses);
|
|
|
this.processVHGNotetags($dataEnemies);
|
|
|
Yanfly._loaded_YEP_X_VisualHpGauge = true;
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
DataManager.processVHGNotetags = function(group) {
|
|
|
for (var n = 1; n < group.length; n++) {
|
|
|
var obj = group[n];
|
|
|
var notedata = obj.note.split(/[\r\n]+/);
|
|
|
|
|
|
obj.hideHpGauge = false;
|
|
|
obj.showHpGauge = false;
|
|
|
obj.hpGaugeWidth = 0;
|
|
|
obj.hpGaugeHeight = Yanfly.Param.VHGGaugeHeight;
|
|
|
obj.hpGaugeBackColor = Yanfly.Param.VHGBackColor;
|
|
|
obj.hpGaugeColor1 = Yanfly.Param.VHGHpColor1;
|
|
|
obj.hpGaugeColor2 = Yanfly.Param.VHGHpColor2;
|
|
|
|
|
|
for (var i = 0; i < notedata.length; i++) {
|
|
|
var line = notedata[i];
|
|
|
if (line.match(/<(?:HIDE HP GAUGE)>/i)) {
|
|
|
obj.hideHpGauge = true;
|
|
|
} else if (line.match(/<(?:SHOW HP GAUGE)>/i)) {
|
|
|
obj.showHpGauge = true;
|
|
|
} else if (line.match(/<(?:HP GAUGE WIDTH):[ ](\d+)>/i)) {
|
|
|
obj.hpGaugeWidth = parseInt(RegExp.$1);
|
|
|
} else if (line.match(/<(?:HP GAUGE HEIGHT):[ ](\d+)>/i)) {
|
|
|
obj.hpGaugeHeight = parseInt(RegExp.$1);
|
|
|
} else if (line.match(/<(?:HP GAUGE BACK COLOR):[ ](\d+)>/i)) {
|
|
|
obj.hpGaugeBackColor = parseInt(RegExp.$1);
|
|
|
} else if (line.match(/<(?:HP GAUGE COLOR 1):[ ](\d+)>/i)) {
|
|
|
obj.hpGaugeColor1 = parseInt(RegExp.$1);
|
|
|
} else if (line.match(/<(?:HP GAUGE COLOR 2):[ ](\d+)>/i)) {
|
|
|
obj.hpGaugeColor2 = parseInt(RegExp.$1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Game_System
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.VHG.Game_System_initialize = Game_System.prototype.initialize;
|
|
|
Game_System.prototype.initialize = function() {
|
|
|
Yanfly.VHG.Game_System_initialize.call(this);
|
|
|
this.initShownHpGauge();
|
|
|
};
|
|
|
|
|
|
Game_System.prototype.initShownHpGauge = function() {
|
|
|
this._shownHpGauge = [];
|
|
|
};
|
|
|
|
|
|
Game_System.prototype.showHpGaugeEnemy = function(id) {
|
|
|
if (this._shownHpGauge === undefined) this.initShownHpGauge();
|
|
|
if (!eval(Yanfly.Param.VHGDefeatFirst)) return true;
|
|
|
return this._shownHpGauge.contains(id);
|
|
|
};
|
|
|
|
|
|
Game_System.prototype.addHpGaugeEnemy = function(id) {
|
|
|
if (this._shownHpGauge === undefined) this.initShownHpGauge();
|
|
|
if (this._shownHpGauge.contains(id)) return;
|
|
|
this._shownHpGauge.push(id);
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Game_BattlerBase
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.VHG.Game_BattlerBase_die = Game_BattlerBase.prototype.die;
|
|
|
Game_BattlerBase.prototype.die = function() {
|
|
|
Yanfly.VHG.Game_BattlerBase_die.call(this);
|
|
|
if (!this.isEnemy()) return;
|
|
|
if (eval(Yanfly.Param.VHGDefeatFirst)) {
|
|
|
if (!$gameSystem.showHpGaugeEnemy(this._enemyId)) this._noHpGauge = true;
|
|
|
}
|
|
|
$gameSystem.addHpGaugeEnemy(this._enemyId);
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Game_Battler
|
|
|
//=============================================================================
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeVisible = function() {
|
|
|
if (this._noHpGauge) return false;
|
|
|
if (this.isHidden()) return false;
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeWidth = function() {
|
|
|
var width = Math.max(this.spriteWidth(), Yanfly.Param.VHGMinHpWidth);
|
|
|
return (width & 1) ? width + 1 : width;
|
|
|
};
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeHeight = function() {
|
|
|
return Yanfly.Param.VHGGaugeHeight;
|
|
|
};
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeBackColor = function() {
|
|
|
return Yanfly.Param.VHGBackColor;
|
|
|
};
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeColor1 = function() {
|
|
|
return Yanfly.Param.VHGHpColor1;
|
|
|
};
|
|
|
|
|
|
Game_Battler.prototype.hpGaugeColor2 = function() {
|
|
|
return Yanfly.Param.VHGHpColor2;
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Game_Actor
|
|
|
//=============================================================================
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeVisible = function() {
|
|
|
if (this.isHidden()) return false;
|
|
|
if (this.currentClass().showHpGauge) return true;
|
|
|
if (!eval(Yanfly.Param.VHGDisplayActor)) return false;
|
|
|
if (this.currentClass().hideHpGauge) return false;
|
|
|
return Game_Battler.prototype.hpGaugeVisible.call(this);
|
|
|
};
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeWidth = function() {
|
|
|
if (this.currentClass().hpGaugeWidth > 0) {
|
|
|
var width = this.currentClass().hpGaugeWidth;
|
|
|
} else {
|
|
|
var width = this.spriteWidth();
|
|
|
}
|
|
|
width = Math.max(width, Yanfly.Param.VHGMinHpWidth);
|
|
|
return (width & 1) ? width + 1 : width;
|
|
|
};
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeHeight = function() {
|
|
|
return this.currentClass().hpGaugeHeight;
|
|
|
};
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeBackColor = function() {
|
|
|
return this.currentClass().hpGaugeBackColor;
|
|
|
};
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeColor1 = function() {
|
|
|
return this.currentClass().hpGaugeColor1;
|
|
|
};
|
|
|
|
|
|
Game_Actor.prototype.hpGaugeColor2 = function() {
|
|
|
return this.currentClass().hpGaugeColor2;
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Game_Enemy
|
|
|
//=============================================================================
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeVisible = function() {
|
|
|
if (this.isHidden()) return false;
|
|
|
if (this.enemy().hideHpGauge) return false;
|
|
|
if (BattleManager.isBattleTest()) return true;
|
|
|
if (this.enemy().showHpGauge) return true;
|
|
|
if (!$gameSystem.showHpGaugeEnemy(this._enemyId)) return false;
|
|
|
return Game_Battler.prototype.hpGaugeVisible.call(this);
|
|
|
};
|
|
|
|
|
|
Yanfly.VHG.Game_Enemy_revive = Game_Enemy.prototype.revive;
|
|
|
Game_Enemy.prototype.revive = function() {
|
|
|
if (this._hp === 0) this._noHpGauge = false;
|
|
|
Yanfly.VHG.Game_Enemy_revive.call(this);
|
|
|
};
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeWidth = function() {
|
|
|
if (this.enemy().hpGaugeWidth > 0) {
|
|
|
var width = this.enemy().hpGaugeWidth;
|
|
|
} else {
|
|
|
var width = this.spriteWidth();
|
|
|
}
|
|
|
width = Math.max(width, Yanfly.Param.VHGMinHpWidth);
|
|
|
return (width & 1) ? width + 1 : width;
|
|
|
};
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeHeight = function() {
|
|
|
return this.enemy().hpGaugeHeight;
|
|
|
};
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeBackColor = function() {
|
|
|
return this.enemy().hpGaugeBackColor;
|
|
|
};
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeColor1 = function() {
|
|
|
return this.enemy().hpGaugeColor1;
|
|
|
};
|
|
|
|
|
|
Game_Enemy.prototype.hpGaugeColor2 = function() {
|
|
|
return this.enemy().hpGaugeColor2;
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Sprite_Battler
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.VHG.Sprite_Battler_update = Sprite_Battler.prototype.update;
|
|
|
Sprite_Battler.prototype.update = function() {
|
|
|
Yanfly.VHG.Sprite_Battler_update.call(this);
|
|
|
this.createVisualHpGaugeWindow();
|
|
|
};
|
|
|
|
|
|
Sprite_Battler.prototype.createVisualHpGaugeWindow = function() {
|
|
|
if (this._createdVisualHpGaugeWindow) return;
|
|
|
if (!this._battler) return;
|
|
|
if (this.checkVisualATBGauge()) {
|
|
|
if (!this._visualATBWindow) return;
|
|
|
if (!this.parent.parent.children.contains(this._visualATBWindow)) return;
|
|
|
}
|
|
|
this._createdVisualHpGaugeWindow = true;
|
|
|
this._visualHpGauge = new Window_VisualHPGauge();
|
|
|
this._visualHpGauge.setBattler(this._battler);
|
|
|
this.parent.parent.addChild(this._visualHpGauge);
|
|
|
};
|
|
|
|
|
|
Sprite_Battler.prototype.checkVisualATBGauge = function() {
|
|
|
if (!Imported.YEP_X_BattleSysATB) return false;
|
|
|
if (!BattleManager.isATB()) return false;
|
|
|
if (!Imported.YEP_X_VisualATBGauge) return false;
|
|
|
return this._battler.isEnemy();
|
|
|
};
|
|
|
|
|
|
Yanfly.VHG.Sprite_Battler_setBattler = Sprite_Battler.prototype.setBattler;
|
|
|
Sprite_Battler.prototype.setBattler = function(battler) {
|
|
|
Yanfly.VHG.Sprite_Battler_setBattler.call(this, battler);
|
|
|
if (this._visualHpGauge) this._visualHpGauge.setBattler(battler);
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// Window_VisualHPGauge
|
|
|
//=============================================================================
|
|
|
|
|
|
function Window_VisualHPGauge() {
|
|
|
this.initialize.apply(this, arguments);
|
|
|
}
|
|
|
|
|
|
Window_VisualHPGauge.prototype = Object.create(Window_Base.prototype);
|
|
|
Window_VisualHPGauge.prototype.constructor = Window_VisualHPGauge;
|
|
|
|
|
|
Window_VisualHPGauge.prototype.initialize = function() {
|
|
|
this._opacitySpeed = 255 / Yanfly.Param.VHGGaugeDuration;
|
|
|
this._dropSpeed = 0;
|
|
|
this._visibleCounter = 0;
|
|
|
Window_Base.prototype.initialize.call(this, 0, 0, 1, 1);
|
|
|
this._battler = null;
|
|
|
this._requestRefresh = false;
|
|
|
this._currentHpValue = 0;
|
|
|
this._displayedValue = 0;
|
|
|
this.contentsOpacity = 0;
|
|
|
this.opacity = 0;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.setBattler = function(battler) {
|
|
|
if (this._battler === battler) return;
|
|
|
this._battler = battler;
|
|
|
this._currentHpValue = this._battler ? this._battler.hp : 0;
|
|
|
this._displayedValue = this._battler ? this._battler.hp : 0;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.update = function() {
|
|
|
Window_Base.prototype.update.call(this);
|
|
|
if (!this._battler) return;
|
|
|
this.updateWindowAspects();
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateWindowAspects = function() {
|
|
|
this.updateWindowSize();
|
|
|
this.updateWindowPosition();
|
|
|
this.updateOpacity();
|
|
|
this.updateHpPosition();
|
|
|
this.updateRefresh();
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateWindowSize = function() {
|
|
|
var spriteWidth = this._battler.hpGaugeWidth();
|
|
|
var width = spriteWidth + this.standardPadding() * 2;
|
|
|
width = Math.min(width, Graphics.boxWidth + this.standardPadding() * 2);
|
|
|
var height = Math.max(this.lineHeight(), this.gaugeHeight() + 4);
|
|
|
height += this.standardPadding() * 2;
|
|
|
if (width === this.width && height === this.height) return;
|
|
|
this.width = width;
|
|
|
this.height = height;
|
|
|
this.createContents();
|
|
|
this._requestRefresh = true;
|
|
|
this.makeWindowBoundaries();
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.makeWindowBoundaries = function() {
|
|
|
if (!this._requestRefresh) return;
|
|
|
this._minX = -1 * this.standardPadding();
|
|
|
this._maxX = Graphics.boxWidth - this.width + this.standardPadding();
|
|
|
this._minY = -1 * this.standardPadding();
|
|
|
this._maxY = Graphics.boxHeight - this.height + this.standardPadding();
|
|
|
this._maxY -= SceneManager._scene._statusWindow.height;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateWindowPosition = function() {
|
|
|
if (!this._battler) return;
|
|
|
var battler = this._battler;
|
|
|
this.x = battler.spritePosX();
|
|
|
this.x -= Math.ceil(this.width / 2);
|
|
|
this.x = this.x.clamp(this._minX, this._maxX);
|
|
|
this.y = battler.spritePosY();
|
|
|
if (Yanfly.Param.VHGGaugePos) {
|
|
|
this.y -= battler.spriteHeight();
|
|
|
} else {
|
|
|
this.y -= this.standardPadding();
|
|
|
}
|
|
|
this.y = this.y.clamp(this._minY, this._maxY);
|
|
|
this.y += Yanfly.Param.VHGBufferY;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateOpacity = function() {
|
|
|
if (this.isShowWindow()) {
|
|
|
this.contentsOpacity += 32;
|
|
|
} else {
|
|
|
this.contentsOpacity -= 32;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.isShowWindow = function() {
|
|
|
if (!this._battler.isAppeared()) return false;
|
|
|
if (!this._battler.hpGaugeVisible()) return false;
|
|
|
if (Yanfly.Param.VHGAlwaysShow && !this._battler.isDead()) return true;
|
|
|
if (this._currentHpValue !== this._displayedValue) return true;
|
|
|
if (this._battler.isSelected()) return true;
|
|
|
--this._visibleCounter;
|
|
|
return this._visibleCounter > 0;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateHpPosition = function() {
|
|
|
if (!this._battler) return;
|
|
|
if (this._currentHpValue !== this._battler.hp) {
|
|
|
this._visibleCounter = Yanfly.Param.VHGGaugeDuration;
|
|
|
this._currentHpValue = this._battler.hp;
|
|
|
var difference = Math.abs(this._displayedValue - this._battler.hp);
|
|
|
this._dropSpeed = Math.ceil(difference / Yanfly.Param.VHGGaugeDuration);
|
|
|
}
|
|
|
this.updateDisplayCounter();
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateDisplayCounter = function() {
|
|
|
if (this._battler._barrierAltered) {
|
|
|
this._battler._barrierAltered = false;
|
|
|
} else if (this._currentHpValue === this._displayedValue) {
|
|
|
return;
|
|
|
}
|
|
|
var d = this._dropSpeed;
|
|
|
var c = this._currentHpValue;
|
|
|
if (this._displayedValue > this._currentHpValue) {
|
|
|
this._displayedValue = Math.max(this._displayedValue - d, c);
|
|
|
} else if (this._displayedValue < this._currentHpValue) {
|
|
|
this._displayedValue = Math.min(this._displayedValue + d, c);
|
|
|
}
|
|
|
this._requestRefresh = true;
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.updateRefresh = function() {
|
|
|
if (this._requestRefresh) this.refresh();
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.refresh = function() {
|
|
|
this.contents.clear();
|
|
|
if (!this._battler) return;
|
|
|
this._requestRefresh = false;
|
|
|
var wy = this.contents.height - this.lineHeight();
|
|
|
var ww = this.contents.width;
|
|
|
this.drawActorHp(this._battler, 0, wy, ww);
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.gaugeBackColor = function() {
|
|
|
return this.textColor(this._battler.hpGaugeBackColor());
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.hpGaugeColor1 = function() {
|
|
|
return this.textColor(this._battler.hpGaugeColor1());
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.hpGaugeColor2 = function() {
|
|
|
return this.textColor(this._battler.hpGaugeColor2());
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.drawActorHp = function(actor, x, y, width) {
|
|
|
width = width || 186;
|
|
|
var color1 = this.hpGaugeColor1();
|
|
|
var color2 = this.hpGaugeColor2();
|
|
|
var rate = this._displayedValue / actor.mhp;
|
|
|
if (Imported.YEP_AbsorptionBarrier && actor.barrierPoints() > 0) {
|
|
|
ww = this.drawBarrierGauge(actor, x, y, width);
|
|
|
} else {
|
|
|
this.drawGauge(x, y, width, rate, color1, color2);
|
|
|
}
|
|
|
if (Yanfly.Param.VHGShowHP) {
|
|
|
this.changeTextColor(this.systemColor());
|
|
|
this.drawText(TextManager.hpA, x, y, 44);
|
|
|
}
|
|
|
if (Yanfly.Param.VHGShowValue) {
|
|
|
var val = this._displayedValue
|
|
|
var max = actor.mhp;
|
|
|
var w = width;
|
|
|
var color = this.hpColor(actor);
|
|
|
this.drawCurrentAndMax(val, max, x, y, w, color, this.normalColor());
|
|
|
}
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.drawCurrentAndMax = function(current, max, x, y,
|
|
|
width, color1, color2) {
|
|
|
if (Yanfly.Param.VHGShowMax) {
|
|
|
Window_Base.prototype.drawCurrentAndMax.call(this, current, max,
|
|
|
x, y, width, color1, color2);
|
|
|
} else {
|
|
|
var align = Yanfly.Param.VHGShowHP ? 'right' : 'center';
|
|
|
var text = Yanfly.Util.toGroup(current);
|
|
|
this.changeTextColor(color1);
|
|
|
this.drawText(text, x, y, width, align);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
Window_VisualHPGauge.prototype.gaugeHeight = function() {
|
|
|
if (!this._battler) return Window_Base.prototype.gaugeHeight.call(this);
|
|
|
return this._battler.hpGaugeHeight();
|
|
|
};
|
|
|
|
|
|
if (Imported.YEP_CoreEngine && Yanfly.Param.VHGThick) {
|
|
|
|
|
|
Window_VisualHPGauge.prototype.drawGauge =
|
|
|
function(dx, dy, dw, rate, color1, color2) {
|
|
|
var color3 = this.gaugeBackColor();
|
|
|
var fillW = Math.floor(dw * rate).clamp(0, dw);
|
|
|
var gaugeH = this.gaugeHeight();
|
|
|
var gaugeY = dy + this.lineHeight() - gaugeH - 2;
|
|
|
if (eval(Yanfly.Param.GaugeOutline)) {
|
|
|
color3.paintOpacity = this.translucentOpacity();
|
|
|
this.contents.fillRect(dx, gaugeY, dw, gaugeH, color3);
|
|
|
dx += 2;
|
|
|
gaugeY += 2;
|
|
|
fillW = Math.max(0, fillW - 4);
|
|
|
gaugeH -= 4;
|
|
|
} else {
|
|
|
var fillW = Math.floor(dw * rate);
|
|
|
var gaugeY = dy + this.lineHeight() - gaugeH - 2;
|
|
|
this.contents.fillRect(dx, gaugeY, dw, gaugeH, color3);
|
|
|
}
|
|
|
this.contents.gradientFillRect(dx, gaugeY, fillW, gaugeH, color1, color2);
|
|
|
};
|
|
|
|
|
|
} // Imported.YEP_CoreEngine
|
|
|
|
|
|
//=============================================================================
|
|
|
// Utilities
|
|
|
//=============================================================================
|
|
|
|
|
|
Yanfly.Util = Yanfly.Util || {};
|
|
|
|
|
|
if (!Yanfly.Util.toGroup) {
|
|
|
Yanfly.Util.toGroup = function(inVal) {
|
|
|
return inVal;
|
|
|
}
|
|
|
};
|
|
|
|
|
|
//=============================================================================
|
|
|
// End of File
|
|
|
//=============================================================================
|
|
|
};
|