slave-princess-charlotte/data/Script/screen/screen-unitsummary.js
2025-10-12 13:17:46 -05:00

257 lines
6.2 KiB
JavaScript

var UnitSummaryScreen = defineObject(BaseScreen,
{
_summaryWindow: null,
_pageChanger: null,
_playerList: null,
_isMapCall: false,
setScreenData: function(screenParam) {
this._prepareScreenMemberData(screenParam);
this._completeScreenMemberData(screenParam);
},
moveScreenCycle: function() {
this._pageChanger.movePage();
if (this._pageChanger.checkPage()) {
this._changeUnitList();
}
return this._summaryWindow.moveWindow();
},
drawScreenCycle: function() {
var x = LayoutControl.getCenterX(-1, this._summaryWindow.getWindowWidth());
var y = LayoutControl.getCenterY(-1, this._summaryWindow.getWindowHeight());
this._summaryWindow.drawWindow(x, y);
this._pageChanger.drawPage(x, y);
},
getScreenInteropData: function() {
return root.queryScreen('UnitSummary');
},
isPlayerOnly: function() {
return !this._isMapCall;
},
_prepareScreenMemberData: function(screenParam) {
this._summaryWindow = createWindowObject(UnitSummaryWindow, this);
this._pageChanger = createObject(HorizontalPageChanger);
this._playerList = screenParam.isMapCall ? PlayerList.getSortieOnlyList() : PlayerList.getMainList();
this._isMapCall = screenParam.isMapCall;
},
_completeScreenMemberData: function(screenParam) {
this._summaryWindow.setSummaryWindowData();
this._summaryWindow.setSummaryPage(this._playerList);
this._pageChanger.setPageData(this._getPageCount(), this._summaryWindow.getWindowWidth(), this._summaryWindow.getWindowHeight());
},
_changeUnitList: function() {
var list;
var index = this._pageChanger.getPageIndex();
if (index === 0) {
list = this._playerList;
}
else if (index === 1) {
list = EnemyList.getMainList();
if (list.getCount() === 0) {
list = AllyList.getMainList();
}
}
else if (index === 2) {
list = AllyList.getMainList();
if (list.getCount() === 0) {
list = PlayerList.getMainList();
}
}
else {
return;
}
this._summaryWindow.setSummaryPage(list);
},
_getPageCount: function() {
var list;
var count = 1;
if (this._isMapCall) {
list = EnemyList.getMainList();
if (list.getCount() > 0) {
count++;
}
list = AllyList.getMainList();
if (list.getCount() > 0) {
count++;
}
}
return count;
}
}
);
var UnitSummaryWindow = defineObject(BaseWindow,
{
_scrollbar: null,
setSummaryWindowData: function() {
var count = LayoutControl.getObjectVisibleCount(50, 8);
this._scrollbar = createScrollbarObject(UnitSummaryScrollbar, this);
this._scrollbar.setScrollFormation(1, count);
this._scrollbar.setActive(true);
},
setSummaryPage: function(unitList) {
this._scrollbar.setDataList(unitList);
},
moveWindowContent: function() {
var input = this._scrollbar.moveInput();
var result = MoveResult.CONTINUE;
if (input === ScrollbarInput.CANCEL) {
result = MoveResult.END;
}
return result;
},
drawWindowContent: function(x, y) {
this._scrollbar.drawScrollbar(x, y);
},
getWindowWidth: function() {
return this._scrollbar.getScrollbarWidth() + (this.getWindowXPadding() * 2);
},
getWindowHeight: function() {
return this._scrollbar.getScrollbarHeight() + (this.getWindowYPadding() * 2);
}
}
);
var UnitSummaryScrollbar = defineObject(BaseScrollbar,
{
drawScrollContent: function(x, y, object, isSelect, index) {
this._drawLeft(x, y, object, isSelect, index);
this._drawRight(x, y, object, isSelect, index);
},
getObjectWidth: function() {
return 520;
},
getObjectHeight: function() {
return 50;
},
_drawLeft: function(x, y, unit, isSelect, index) {
var unitRenderParam = StructureBuilder.buildUnitRenderParam();
var textui = this.getParentTextUI();
var color = textui.getColor();
var font = textui.getFont();
unitRenderParam.alpha = this._getUnitAlpha(unit);
UnitRenderer.drawDefaultUnit(unit, x, y + 10, unitRenderParam);
TextRenderer.drawKeywordText(x + 50, y + 15, unit.getName(), -1, color, font);
NumberRenderer.drawRightNumberColor(x + 170, y + 15, unit.getId(), this._getColorIndexFromUnit(unit), 255);
},
_drawRight: function(x, y, unit, isSelect, index) {
var i, color;
var dx = 290;
var arr = [StringTable.UnitSummary_Alive, StringTable.UnitSummary_Death, StringTable.UnitSummary_Erase, StringTable.UnitSummary_Immortal];
var count = arr.length;
var textui = this.getParentTextUI();
var font = textui.getFont();
if (Miscellaneous.isInjuryAllowed(unit)) {
arr[1] = StringTable.UnitSummary_Injury;
}
dx = 290;
for (i = 0; i < count; i++) {
if (this._isStateEnabled(unit, i)) {
color = ColorValue.KEYWORD;
}
else {
color = ColorValue.DISABLE;
}
TextRenderer.drawKeywordText(x + dx, y + 15, arr[i], -1, color, font);
dx += this._getStateInterval();
}
},
_isStateEnabled: function(unit, index) {
var isEnabled = false;
if (index === 0) {
isEnabled = unit.getAliveState() === AliveType.ALIVE;
}
else if (index === 1) {
if (Miscellaneous.isInjuryAllowed(unit)) {
isEnabled = unit.getAliveState() === AliveType.INJURY;
}
else {
isEnabled = unit.getAliveState() === AliveType.DEATH;
}
}
else if (index === 2) {
isEnabled = unit.getAliveState() === AliveType.ERASE;
}
else if (index === 3) {
isEnabled = unit.isImmortal();
}
return isEnabled;
},
_getStateInterval: function() {
return 50;
},
_getColorIndexFromUnit: function(unit) {
var colorIndex = 1;
if (unit.getUnitType() === UnitType.ENEMY) {
colorIndex = 3;
}
else if (unit.getUnitType() === UnitType.ALLY) {
colorIndex = 2;
}
return colorIndex;
},
_getUnitAlpha: function(unit) {
var aliveType = unit.getAliveState();
var sortieType = unit.getSortieState();
var alpha = 255;
if (this.getParentInstance().getParentInstance().isPlayerOnly()) {
if (aliveType !== AliveType.ALIVE) {
alpha = 80;
}
}
else {
if (sortieType !== SortieType.SORTIE || aliveType !== AliveType.ALIVE) {
alpha = 80;
}
}
return alpha;
}
}
);