slave-princess-charlotte/data/Plugin/mapHp.js
2025-10-12 13:17:46 -05:00

102 lines
2.7 KiB
JavaScript

var HpPanel = defineObject(BaseObject,
{
drawHpPanel: function() {
if (root.isEventSceneActived()) {
return;
}
var list = PlayerList.getAliveList();
for (var i = 0; i < list.getCount(); i++) {
var unit = list.getData(i);
this.drawUnit(unit, false);
}
list = EnemyList.getAliveList();
for (var i = 0; i < list.getCount(); i++) {
var unit = list.getData(i);
this.drawUnit(unit, true);
}
},
drawUnit: function(unit, isEnemy) {
if (unit.isInvisible()) {
return;
}
if (unit.getSortieState() == SortieType.UNSORTIE) {
return;
}
if (unit.getMapX() == 0 && unit.getMapY() == 0) {
return;
}
if (root.getMetaSession().getGlobalSwitchTable().isSwitchOn(9)) {
return;
}
var xPixel = LayoutControl.getPixelX(unit.getMapX());
var yPixel = LayoutControl.getPixelY(unit.getMapY());
var hp = unit.getHp();
var mhp = ParamBonus.getMhp(unit);
var pic = root.queryUI('unit_gauge');
if (unit.isWait()) {
//pic.drawParts(xPixel + 19, yPixel + 13, 36, 66, 12, 12);
}
this.drawGauge(xPixel, yPixel, hp, mhp, 2, 30, pic, isEnemy);
},
drawGauge: function(x, y, curValue, maxValue, colorIndex, totalWidth, pic, isEnemy) {
var i, n, per, full;
var width = UIFormat.GAUGE_WIDTH / 3;
var height = UIFormat.GAUGE_HEIGHT / 4;
var max = totalWidth / 10;
if (pic === null) {
return;
}
per = ((curValue / maxValue) * 100);
if (per > 0 && per < 1) {
per = 0;
}
else {
// perは1より大きい。
// ゼロベースにするため、1減算する。
per -= 1;
}
pic.drawParts(x + 1, y + 25, 0, 21 + 6, 30, 5);
var offset = 10;
if (per >= 99) {
//offset -= 5;
}
if (per >= 99) {
offset += 16;
if (isEnemy) {
offset += 6;
}
} else {
if (isEnemy) {
offset += 10;
}
}
pic.drawParts(x + 2, y + 25 + 1, 1, 21 + 6 + offset, 28 * per / 100, 3);
}
}
);
var _MapLayer_prepareMapLayer = MapLayer.prepareMapLayer;
MapLayer.prepareMapLayer = function() {
_MapLayer_prepareMapLayer.call(this);
this._hpPanel = createObject(HpPanel);
};
var _MapLayer_drawUnitLayer = MapLayer.drawUnitLayer;
MapLayer.drawUnitLayer = function() {
_MapLayer_drawUnitLayer.call(this);
this._hpPanel.drawHpPanel();
};