Untitled diff

Created Diff never expires
180 removals
200 lines
613 additions
638 lines
//=============================================================================
//=============================================================================
// sleekgauges.js
// PrettySleekGauges.js
//=============================================================================
//=============================================================================


/*:
/*:
* @plugindesc Sleek Gauges! Look at them go, so shiny, so cool.
* @plugindesc Sleek Gauges! Look at them go, so shiny, so cool. And they're even better when you can change what they look like and where they go!
* @author Vlue Au'Vier
* @author Vlue Au'Vier (sleek), Rocketmancer​ (pretty), mjshi (pretty sleek)
*
* @param Bar Shape
* @desc Use any combination of | / . < > ( ) \ Ex. // (> or /|
* @default //
*
*
* @param Gauge Height
* @param Gauge Height
* @desc Default height of the gauges
* @desc Default height of the gauges
* @type number
* @default 8
* @default 8
*
*
* @param Outline Color
* @desc Hex color.
* @default #FFFFFF
*
* @param Enemy Gauges
*
* @param Enemy HP Gauge
* @parent Enemy Gauges
*
* @param Enemy MP Gauge
* @parent Enemy Gauges
*
* @param Show Enemy HP Gauges
* @parent Enemy HP Gauge
* @type select
* @default show over
* @desc Shows the enemy hp bar over/under animations.
* (show under/show over/don't show)
* @option show over
* @option show under
* @option don't show
*
* @param Show Enemy HP Text
* @parent Enemy HP Gauge
* @desc Show the word "HP"?
* (true/false)
* @default false
* @type boolean
*
* @param Show Enemy HP Value
* @parent Enemy HP Gauge
* @desc Show how much HP the enemy has left?
* (true/false)
* @default true
* @type boolean
*
* @param Show Up Top
* @parent Enemy HP Gauge
* @desc Show the enemy hp gauges above the enemy?
* (true/false)
* @type boolean
* @default true
*
* @param Bar Width
* @parent Enemy HP Gauge
* @desc Width of the Enemy HP gauge
* @type number
* @default 120
*
* @param X Offset
* @parent Enemy HP Gauge
* @desc X offset of the enemy hp gauges
* @type number
* @min -100000000000000000000000
* @default 0
*
* @param Y Offset
* @parent Enemy HP Gauge
* @desc Y offset of the enemy hp gauges
* @type number
* @min -100000000000000000000000
* @default 0
*
* @param Image Height Multiplier
* @parent Enemy HP Gauge
* @desc How far up the image to place the HP bar, in a decimal percentage.
* @type number
* @decimals 2
* @default 0.9
*
* @param State Positioning
* @parent Enemy Gauges
* @desc Since our HP gauge covers parts of it.
*
* @param State X Offset
* @parent State Positioning
* @desc X offset of the enemy states
* @type number
* @min -100000000000000000000000
* @default 0
*
* @param State Y Offset
* @parent State Positioning
* @desc Y offset of the enemy states
* @type number
* @min -100000000000000000000000
* @default 30
*
* @param State Height Multiplier
* @parent State Positioning
* @desc How far up the image to place the state icons, in a decimal percentage.
* @type number
* @decimals 2
* @default 0.9
*
* @param Show Enemy MP
* @parent Enemy MP Gauge
* @type boolean
* @desc Show a tiny MP gauge?
* (true/false)
* @default true
*
* @param Show MP Bar When MMP is 0
* @parent Enemy MP Gauge
* @type boolean
* @desc Show the MP bar when the enemy's max mp is 0?
* (true/false)
* @default false
*
* @param Tiny Gauge Height
* @parent Enemy MP Gauge
* @type number
* @desc Height of the tiny gauge
* @default 2
*
* @param Tiny Gauge X Offset
* @parent Enemy MP Gauge
* @type number
* @min -100000000000000000000000
* @desc X Offset of the tiny gauge
* @default 0
*
* @param Tiny Gauge Y Offset
* @parent Enemy MP Gauge
* @type number
* @min -100000000000000000000000
* @desc Y Offset of the tiny gauge
* @default 0
*
* @param Tiny Gauge Width Adjust
* @parent Enemy MP Gauge
* @type number
* @min -100000000000000000000000
* @desc Adjust the width of the tiny gauge
* @default 0
*
* @param Animated Numbers
* @param Animated Numbers
* @desc Whether or not numbers count down/up
* @desc Whether or not numbers count down/up
* (true/false)
* @type boolean
* @default true
* @default true
*
*
* @param Animated Gauge
* @param Animated Gauge
* @desc Whether or not the gauge is animated
* @desc Whether or not the gauge is animated
* (true/false)
* @type boolean
* @default true
* @default true
*
*
* @param Gauge Style
* @help
* @desc Visual style of the gauge (Available: normal)
* ----------------------------------------------------------------------------
* @default normal
* Pretty Sleek Gauges v1.0
* ----------------------------------------------------------------------------
* Free to use in any project with credit to:
* Vlue (original plugin)
* Rocketmancer (Prettier Gauges)
* mjshi (merging, edits, and enemy HP bars)
* ----------------------------------------------------------------------------
* Extra Notetags:
* If there's just that ONE enemy (looking at you, Slime) that has its
* face covered up by the HP bar, you can use these notetags:
*
*
* @param Gauge Slide Style
* <HPBarXOffset:#>
* @desc Animation style of the gauge (Available: slide)
* <HPBarYOffset:#>
* @default slide
*
*
* to manually put it in its place.
* @help Sleek Gauges v0.1
* The # can be positive or negative. So in that slime example, with the
* Facebook: https://www.facebook.com/DaimoniousTailsGames/
* default settings, having a <HPBarYOffset:-20> there fixes the issue.
* Website: http://daimonioustails.weebly.com/
* ----------------------------------------------------------------------------
* Original Plugin By Vlue
*
*
* Gauge Styles:
* Facebook: https://www.facebook.com/DaimoniousTailsGames/
* normal - normal gauge
* Website: http://daimonioustails.weebly.com/
*
* ----------------------------------------------------------------------------
* Gauge Slide Styles:
* Merged with Prettier Gauges/Custom Gauges by Rocketmancer​
* slide - gauges gradually approach their values
* https://forums.rpgmakerweb.com/index.php?threads/prettier-gauges.47077/
* ----------------------------------------------------------------------------
* Changes from the forum version:
* - merged a couple functions
* - added support for \ style gauges
* - fixed issue with overfilling the gauge
* - added support for enemy HP gauges
* - added support for individual HP gauge offsets
* ----------------------------------------------------------------------------
* > Is something broken? Go to http://mjshi.weebly.com/contact.html and I'll
* try my best to help you!
*
*
*/
*/


(function() {
(function() {
var parameters = PluginManager.parameters('sleekgauges');

var defaultHeight = Number(parameters['Gauge Height'] || 8);
var parameters = PluginManager.parameters('PrettySleekGauges');
var animatedNumbers = (parameters['Animated Numbers'] || "true").toLowerCase() == "true";
var defaultHeight = Number(parameters['Gauge Height'] || 8);
var animatedGauges = (parameters['Animated Gauges'] || "true").toLowerCase() == "true";
var defaultTinyHeight = Number(parameters['Tiny Gauge Height'] || 2);
var gaugeStyle = parameters['Gauge Style'] || "normal";
var animatedNumbers = (parameters['Animated Numbers'] || "true") === "true";
var gaugeSlideStyle = parameters['Gauge Slide Style'] || "slide";
var animatedGauges = (parameters['Animated Gauges'] || "true") === "true";
var gaugeOutColor = parameters['Outline Color'] || "#FFFFFF";
Window_Base.prototype.drawGauge = function(x, y, width, rate, c1, c2) {
var barTypeLeft = String(parameters['Bar Shape']).substring(0,1);
var barTypeRight = String(parameters['Bar Shape']).substring(1,2);

var showEnemyHP = (parameters['Show Enemy HP Gauges']).startsWith("show");
var showOver = (parameters['Show Enemy HP Gauges']).endsWith("over");
var showUpTop = (parameters['Show Up Top'] || "true") === "true";
var EHPXOffset = parseInt(parameters['X Offset']) || 0;
var EHPYOffset = parseInt(parameters['Y Offset']) || 0;
var EHPbarWidth = parseInt(parameters['Bar Width']) || 120;
var showEHPHP = (parameters['Show Enemy HP Text'] || "false") === "true";
var showEHPText = (parameters['Show Enemy HP Value'] || "true") === "true";
var EHPYMultiplier = parseInt(parameters['Image Height Multiplier']) || 0.9;
var EHPStateXOffset = parseInt(parameters['State X Offset']) || 0;
var EHPStateYOffset = parseInt(parameters['State Y Offset']) || 30;
var shouldDrawEnemyMP = (parameters['Show Enemy MP'] || "true") === "true";
var drawEnemyMPWhenNoMP = (parameters['Show MP Bar When MMP is 0'] || "true") === "true";
var defaultTinyHeight = parseInt(parameters['Tiny Gauge Height']) || 2;
var tinyWidthAdjust = parseInt(parameters['Tiny Gauge Width Adjust']) || 0;
var tinyGaugeXOffset = parseInt(parameters['Tiny Gauge X Offset']) || 0;
var tinyGaugeYOffset = parseInt(parameters['Tiny Gauge Y Offset']) || 0;
// var shouldDrawEnemyTP = (parameters['Show Enemy TP'] || "true") === "true";

//=============================================================================
// Sleek Gauges
//=============================================================================
Window_Base.prototype.drawGauge = function(x, y, width, rate, c1, c2) {
if(this._gauges == null) { this._gauges = {} };
if(this._gauges == null) { this._gauges = {} };
var gkey = this.makeGaugeKey(x, y)
var gkey = this.makeGaugeKey(x, y)
if(this._gauges[gkey]) {
if(this._gauges[gkey]) {
this._gauges[gkey].setRate(rate);
this._gauges[gkey].setRate(rate);
} else {
} else {
this._gauges[gkey] = new Special_Gauge(x, y, width, rate, c1, c2, this, defaultHeight)
this._gauges[gkey] = new Special_Gauge(x, y, width, rate, c1, c2, this, defaultHeight);
}
}
}
}
var windowBaseUpdate = Window_Base.prototype.update;

Window_Base.prototype.update = function() {
var windowBaseUpdate = Window_Base.prototype.update;
windowBaseUpdate.call(this);
Window_Base.prototype.update = function() {
if(this._gauges) {
windowBaseUpdate.call(this);
for(var bar in this._gauges) {
if (this._gauges) {
this._gauges[bar].update();
for(var bar in this._gauges) {
}
this._gauges[bar].update();
}
}
}
}
Window_Base.prototype.makeGaugeKey = function(x, y) {
}
return "k" + x + "-" + y;

}
Window_Base.prototype.makeGaugeKey = function(x, y) {
Window_Base.prototype.drawActorHp = function(actor, x, y, width) {
return "k" + x + "-" + y;
width = width || 186;
}
this.drawGauge(x, y, width, actor.hpRate(), this.hpGaugeColor1(), this.hpGaugeColor2());

this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.hpA, actor.hp, actor.mhp);
Window_Base.prototype.drawActorHp = function(actor, x, y, width) {
}
width = width || 186;
Window_Base.prototype.drawActorMp = function(actor, x, y, width) {
this.drawGauge(x, y, width, actor.hpRate(), this.hpGaugeColor1(), this.hpGaugeColor2());
width = width || 186;
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.hpA, actor.hp, actor.mhp);
this.drawGauge(x, y, width, actor.mpRate(), this.mpGaugeColor1(), this.mpGaugeColor2());
}
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.mpA, actor.mp, actor.mmp);

}
Window_Base.prototype.drawActorMp = function(actor, x, y, width) {
Window_Base.prototype.drawActorTp = function(actor, x, y, width) {
width = width || 186;
width = width || 186;
this.drawGauge(x, y, width, actor.mpRate(), this.mpGaugeColor1(), this.mpGaugeColor2());
this.drawGauge(x, y, width, actor.tpRate(), this.tpGaugeColor1(), this.tpGaugeColor2());
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.mpA, actor.mp, actor.mmp);
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.tpA, actor.tp, 100);
}
}

Window_Base.prototype.drawActorTp = function(actor, x, y, width) {
width = width || 186;
function Special_Gauge() {
this.drawGauge(x, y, width, actor.tpRate(), this.tpGaugeColor1(), this.tpGaugeColor2());
this.initialize.apply(this, arguments);
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.tpA, actor.tp, 100);
}
}
Special_Gauge.prototype.constructor = Special_Gauge;

Special_Gauge.prototype.initialize = function(x, y, w, r, c1, c2, basewindow, h) {
function Special_Gauge() {
this._x = x;
this.initialize.apply(this, arguments);
this._y = y;
}
this._width = w;

this._curRate = this._maxRate = r;
Special_Gauge.prototype.constructor = Special_Gauge;
this._vocab = false;
Special_Gauge.prototype.initialize = function(x, y, w, r, c1, c2, basewindow, h) {
this._color = [c1, c2];
this._x = x;
this._window = basewindow
this._y = y;
this._speed = 0;
this._width = w;
this._speedRate = 0;
this._curRate = this._maxRate = r;
this._height = h;
this._vocab = false;
this._fallSprites = [];
this._color = [c1, c2];
this.refresh();
this._window = basewindow
}
this._speed = 0;
Special_Gauge.prototype.update = function() {
this._speedRate = 0;
this.updateFallSprites();
this._height = h;
this._fallSprites = [];
if(this._curRate != this._maxRate) {
this._showEHPHP = true;
if(this._curRate > this._maxRate) {
this._showEHPText = true;
this._curRate -= this._speedRate;
this.refresh();
this._curVal -= this._speed;
}
} else {

this._curRate += this._speedRate;
Special_Gauge.prototype.setTextVisibility = function(hpText, hpNum) {
this._curVal += this._speed;
this._showEHPHP = hpText;
}
this._showEHPText = hpNum;
if(Math.abs(this._curRate - this._maxRate) < this._speedRate) {
}
this._curRate = this._maxRate;

this._curVal = this._setVal;
Special_Gauge.prototype.update = function() {
}
this.updateFallSprites();
if(!animatedNumbers) {
this._curVal = this._setVal;
if (this._curRate != this._maxRate) {
}
if (this._curRate > this._maxRate) {
if(!animatedGauges) {
this._curRate -= this._speedRate;
this._curRate = this._maxRate;
this._curVal -= this._speed;
}
} else {
}
this._curRate += this._speedRate;
this._curVal += this._speed;
this.refresh();
}
if (Math.abs(this._curRate - this._maxRate) < this._speedRate) {
}
this._curRate = this._maxRate;
Special_Gauge.prototype.updateFallSprites = function() {
this._curVal = this._setVal;
//TODO: Add in this part!
}
}
if (!animatedNumbers) {
Special_Gauge.prototype.refresh = function() {
this._curVal = this._setVal;
if(this._vocab) {
}
this._window.contents.clearRect(this._x, this._y, this._width+2, this._window.lineHeight());
if (!animatedGauges) {
} else {
this._curRate = this._maxRate;
var gy = this._y + this._window.lineHeight() - this._height - 1;
}
this._window.contents.clearRect(this._x, gy, this._width, this._height);
}
}
this.drawGauge();
this.refresh();
this.drawText();
}
}
Special_Gauge.prototype.setRate = function(rate) {

if(rate != this._maxRate) {
Special_Gauge.prototype.updateFallSprites = function() {
this._maxRate = rate;
//TODO: Add in this part!
this._speedRate = Math.abs(this._curRate - this._maxRate) / 60;
}
//TODO: More Falling Sprite Stuff

}
Special_Gauge.prototype.refresh = function() {
}
if (this._vocab) {
Special_Gauge.prototype.setExtra = function(text, val, max) {
this._window.contents.clearRect(this._x, this._y, this._width+2, this._window.lineHeight());
this._vocab = true;
} else {
this._text = text;
var gy = this._y + this._window.lineHeight() - this._height - 1;
this._maxVal = max;
this._window.contents.clearRect(this._x, gy, this._width, this._height);
if(val != this._setVal) {
}
this._speed = Math.max(0, Math.abs(this._curVal - val) / 60);
this.drawGauge();
}
this.drawText();
this._setVal = val;
}
if(this._curVal == null) {

this._curVal = val;
Special_Gauge.prototype.setRate = function(rate) {
}
if (rate != this._maxRate) {
}
this._maxRate = rate;
Special_Gauge.prototype.drawGauge = function() {
this._speedRate = Math.abs(this._curRate - this._maxRate) / 60;
var fill_w = Math.round((this._width - 2) * this._curRate);
//TODO: More Falling Sprite Stuff
var fill_ww = Math.round((this._width - 2) * this._maxRate);
}
var gy = this._y + this._window.lineHeight() - this._height - 1;
}
this._window.contents.fillRect(this._x, gy, this._width, this._height, this._window.gaugeBackColor());

if(gaugeSlideStyle == "fancy") {
Special_Gauge.prototype.setExtra = function(text, val, max) {
//TODO: Add me
this._vocab = true;
} else if(gaugeSlideStyle == "fall") {
this._text = text;
//TODO: Add me
this._maxVal = max;
} else {
if (val != this._setVal) {
this._window.contents.gradientFillRect(this._x + 1, Math.round(gy + 1), fill_w, this._height - 2, this._color[0], this._color[1]);
this._speed = Math.max(0, Math.abs(this._curVal - val) / 60);
}
}
//TODO: Add Special Gauge Styles
this._setVal = val;
}
if (this._curVal == null) {
Special_Gauge.prototype.drawText = function() {
this._curVal = val;
if(this._vocab) {
}
this._window.changeTextColor(this._window.systemColor());
}
this._window.drawText(this._text, this._x + 1, this._y, 30);

if(this._curVal < this._maxVal / 10) {
Special_Gauge.prototype.drawGauge = function() {
this._window.changeTextColor(this._window.deathColor());
var fill_w = Math.round((this._width - 2) * this._curRate);
} else if(this._curVal < this._maxVal / 4) {
var fill_ww = Math.round((this._width - 2) * this._maxRate);
this._window.changeTextColor(this._window.crisisColor());
var gy = this._y + this._window.lineHeight() - this._height - 1;
} else {

this._window.changeTextColor(this._window.normalColor());
this._window.contents.drawTrap(this._x, gy, this._width - 2, this._height, this._window.gaugeBackColor(), true);
}
this._window.contents.drawTrap(this._x, gy, fill_w, this._height, this._color[0], this._color[1], "atop");
var xr = this._x + this._width;
this._window.contents.drawTrap(this._x, gy, this._width - 2, this._height, gaugeOutColor);
if(this._width < 186) {
}
this._window.drawText(Math.round(this._curVal), xr - 40, this._y, 40, "right");

} else {
Special_Gauge.prototype.drawText = function() {
this._window.drawText(Math.round(this._curVal), xr - 92, this._y, 42, "right");
if (this._vocab) {
this._window.changeTextColor(this._window.normalColor());
if (this._showEHPHP) {
this._window.drawText("/", xr - 52, this._y, 12, "right");
this._window.changeTextColor(this._window.systemColor());
this._window.drawText(this._maxVal, xr - 42, this._y, 40, "right");
this._window.drawText(this._text, this._x + 1, this._y, 30);
}
}
}

}
if (this._showEHPText) {
if (this._curVal < this._maxVal / 10) {
})();
this._window.changeTextColor(this._window.deathColor());
} else if (this._curVal < this._maxVal / 4) {
this._window.changeTextColor(this._window.crisisColor());
} else {
this._window.changeTextColor(this._window.normalColor());
}
var xr = this._x + this._width;
if (this._width < 186) {
this._window.drawText(Math.round(this._curVal), xr - 40, this._y, 40, "right");
} else {
this._window.drawText(Math.round(this._curVal), xr - 92, this._y, 42, "right");
this._window.changeTextColor(this._window.normalColor());
this._window.drawText("/", xr - 52, this._y, 12, "right");
this._window.drawText(this._maxVal, xr - 42, this._y, 40, "right");
}
}
}
}

//=============================================================================
// Pretty Gauges
//=============================================================================
Bitmap.prototype.drawTrap = function(x, y, width, height, color1, color2, shouldFill) {
var context = this._context;
var grad = context.createLinearGradient(x, y, x + width, y);
var startCoords = [];

if (typeof color2 === 'boolean') {
shouldFill = color2;
color2 = undefined;
}

if (color2 === undefined) color2 = color1;
if (shouldFill === undefined) shouldFill = false;

if (shouldFill === "atop") {
context.globalCompositeOperation = 'source-atop';
} else {
context.globalCompositeOperation = 'source-over';
}

grad.addColorStop(0, color1);
grad.addColorStop(1, color2);

context.save();
context.beginPath();

switch (barTypeLeft) {
case "|":
startCoords = [x, y + height]
context.moveTo(x, y + height)
context.lineTo(x, y)
break;
case "/":
startCoords = [x, y + height]
context.moveTo(x, y + height)
context.lineTo(x + height, y)
break;
case "<":
startCoords = [x + height/2, y + height]
context.moveTo(x + height/2, y + height)
context.lineTo(x, y + height/2)
context.lineTo(x + height/2, y)
break;
case "(":
startCoords = [x + height, y + height]
context.moveTo(x + height, y + height);
context.bezierCurveTo(x, y + height, x, y, x + height, y);
break;
case ".":
startCoords = [x, y + height]
context.moveTo(x, y + height)
break;
case "\\":
startCoords = [x + height, y + height]
context.moveTo(x + height, y + height)
context.lineTo(x, y)
break;
}
switch (barTypeRight) {
case "|":
context.lineTo(x + width, y)
context.lineTo(x + width, y + height)
break;
case "/":
context.lineTo(x + width, y)
context.lineTo(x + width - height, y + height)
break;
case ">":
context.lineTo(x + width - height/2, y)
context.lineTo(x + width, y + height/2)
context.lineTo(x + width - height/2, y + height)
break;
case ")":
context.lineTo(x + width - height, y);
context.bezierCurveTo(x + width, y, x + width, y + height, x + width - height, y + height);
break;
case ".":
context.lineTo(x + width, y + height)
break;
case "\\":
context.lineTo(x + width - height, y)
context.lineTo(x + width, y + height)
break;
}

context.lineTo(startCoords[0], startCoords[1])

if (shouldFill) {
context.fillStyle = grad;
context.fill();
} else {
context.strokeStyle = grad;
context.stroke();
}
context.restore();
this._setDirty();
}

//=============================================================================
// EnemyGauges
//=============================================================================
if (showEnemyHP) {

function Window_EnemyHPBars() {
this.initialize.apply(this, arguments);
};

Window_EnemyHPBars.prototype = Object.create(Window_Base.prototype);
Window_EnemyHPBars.prototype.constructor = Window_EnemyHPBars;

Window_EnemyHPBars.prototype.initialize = function(sprites) {
Window_Base.prototype.initialize.call(this, 0, 0, Graphics.boxWidth, Graphics.boxHeight);
this.opacity = 0;
this._enemySprites = sprites.slice().reverse();
};

Window_EnemyHPBars.prototype.standardPadding = function() {
return 0;
};

Window_EnemyHPBars.prototype.drawActorHp = function(actor, x, y, width) {
width = width || 186;
if (this._gauges && this._gauges[this.makeGaugeKey(x, y)] && this._gauges[this.makeGaugeKey(x, y)]._curVal === 0) {
this.contents.clearRect(x - defaultHeight, y, width + defaultHeight, this.lineHeight() + defaultHeight);
return;
}
this.drawGauge(x, y, width, actor.hpRate(), this.hpGaugeColor1(), this.hpGaugeColor2());
this._gauges[this.makeGaugeKey(x, y)].setExtra(TextManager.hpA, actor.hp, actor.mhp);
this._gauges[this.makeGaugeKey(x, y)].setTextVisibility(showEHPHP, showEHPText);

if (shouldDrawEnemyMP && (drawEnemyMPWhenNoMP || actor.mmp > 0)) {
this.drawTinyGauge(x + tinyGaugeXOffset, y + 1 + tinyGaugeYOffset, width + tinyWidthAdjust, actor.mpRate(), this.mpGaugeColor1(), this.mpGaugeColor2());
this._gauges[this.makeTGaugeKey(x + tinyGaugeXOffset, y + 1 + tinyGaugeYOffset)].setExtra(TextManager.mpA, actor.mp, actor.mmp);
// y += defaultTinyHeight;
}

// Maybe this'll be useful someday

// if (shouldDrawEnemyTP && actor.mtp > 0) {
// this.drawTinyGauge(x + tinyGaugeXOffset, y + 1 + defaultTinyHeight, width, actor.tpRate(), this.tpGaugeColor1(), this.tpGaugeColor2());
// this._gauges[this.makeTGaugeKey(x + tinyGaugeXOffset, y + 1 + defaultTinyHeight)].setExtra(TextManager.tpA, actor.tp, actor.mtp);
// }
}

Window_EnemyHPBars.prototype.makeTGaugeKey = function(x, y) {
return "tk" + x + "-" + y;
}

Window_EnemyHPBars.prototype.drawTinyGauge = function(x, y, width, rate, c1, c2) {
if(this._gauges == null) { this._gauges = {} };
var gkey = this.makeTGaugeKey(x, y)
if(this._gauges[gkey]) {
this._gauges[gkey].setRate(rate);
} else {
this._gauges[gkey] = new Line_Gauge(x, y, width, rate, c1, c2, this, defaultTinyHeight);
}
}

Window_EnemyHPBars.prototype.update = function() {
Window_Base.prototype.update.call(this);
var width = EHPbarWidth, x, y;
for (var i = 0; i < $gameTroop._enemies.length; i++) {
if (!this._enemySprites[i].height || !this._enemySprites[i].width) continue;

x = $gameTroop._enemies[i].screenX() - (width + this.textPadding())/2 + EHPXOffset + (parseInt($dataEnemies[$gameTroop._enemies[i]._enemyId].meta.HPBarXOffset) || 0);
y = $gameTroop._enemies[i].screenY() - this.lineHeight() + EHPYOffset + (parseInt($dataEnemies[$gameTroop._enemies[i]._enemyId].meta.HPBarYOffset) || 0);
if (showUpTop) y -= this._enemySprites[i].height * EHPYMultiplier;

this.drawActorHp($gameTroop._enemies[i], x, y, width);
}
}

function Line_Gauge() {
this.initialize.apply(this, arguments);
}
Line_Gauge.prototype = Object.create(Special_Gauge.prototype);
Line_Gauge.prototype.constructor = Line_Gauge;

Line_Gauge.prototype.refresh = function() {
this._window.contents.clearRect(this._x, this.y, this._width, this._height);
this.drawGauge();
}

Line_Gauge.prototype.drawGauge = function() {
var fill_w = Math.round((this._width - 2 - defaultHeight) * this._curRate);
var fill_ww = Math.round((this._width - 2) * this._maxRate);
var gy = this._y + this._window.lineHeight() - this._height;

this._window.contents.fillRect(this._x - 1, gy, this._width - defaultHeight, this._height + 2, gaugeOutColor);
this._window.contents.fillRect(this._x, gy + 1, this._width - 2 - defaultHeight, this._height, this._window.gaugeBackColor());
this._window.contents.gradientFillRect(this._x, gy + 1, fill_w, this._height, this._color[0], this._color[1]);
}

Line_Gauge.prototype.drawText = function() {};

if (showOver) {
var alias_Scene_Battle_createSpriteset = Scene_Battle.prototype.createSpriteset;
Scene_Battle.prototype.createSpriteset = function() {
alias_Scene_Battle_createSpriteset.call(this);

this._enemyHPBarWindow = new Window_EnemyHPBars(this._spriteset._enemySprites);
this.addChild(this._enemyHPBarWindow);
};

} else {
var alias_Spriteset_Battle_createEnemies = Spriteset_Battle.prototype.createEnemies;
Spriteset_Battle.prototype.createEnemies = function() {
alias_Spriteset_Battle_createEnemies.call(this);

this._enemyHPBarWindow = new Window_EnemyHPBars(this._enemySprites);
this._enemyHPBarWindow.z = 2;
this._battleField.addChild(this._enemyHPBarWindow);
};
}

Sprite_Enemy.prototype.updateStateSprite = function() {
this._stateIconSprite.y = -Math.round((this.bitmap.height + EHPStateYOffset) * 0.9);
if (this._stateIconSprite.y < 20 - this.y) {
this._stateIconSprite.y = 20 - this.y;
}
this._stateIconSprite.y += (parseInt($dataEnemies[this._enemy._enemyId].meta.HPBarYOffset) || 0);
this._stateIconSprite.x = EHPStateXOffset + (parseInt($dataEnemies[this._enemy._enemyId].meta.HPBarXOffset) || 0);
};

} // End Enemy HP bars

})();