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(); };