415 lines
10 KiB
JavaScript
415 lines
10 KiB
JavaScript
|
|
var UnitSentenceWindow = defineObject(BaseWindow,
|
|
{
|
|
_unit: null,
|
|
_totalStatus: null,
|
|
_groupArray: null,
|
|
|
|
setUnitData: function(unit) {
|
|
var i, count;
|
|
|
|
this._unit = unit;
|
|
this._totalStatus = SupportCalculator.createTotalStatus(unit);
|
|
|
|
this._groupArray = [];
|
|
this._configureSentence(this._groupArray);
|
|
|
|
count = this._groupArray.length;
|
|
for (i = 0; i < count; i++) {
|
|
this._groupArray[i].setParentWindow(this);
|
|
this._groupArray[i].setCalculatorValue(unit, ItemControl.getEquippedWeapon(unit), this._totalStatus);
|
|
}
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
var i, count;
|
|
|
|
count = this._groupArray.length;
|
|
for (i = 0; i < count; i++) {
|
|
this._groupArray[i].moveUnitSentence();
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawWindowContent: function(x, y) {
|
|
var i;
|
|
var count = this._groupArray.length;
|
|
var weapon = ItemControl.getEquippedWeapon(this._unit);
|
|
|
|
for (i = 0; i < count; i++) {
|
|
this._groupArray[i].drawUnitSentence(x, y, this._unit, weapon, this._totalStatus);
|
|
y += this._groupArray[i].getUnitSentenceCount(this._unit) * this.getUnitSentenceSpaceY();
|
|
}
|
|
},
|
|
|
|
getWindowWidth: function() {
|
|
return 130;
|
|
},
|
|
|
|
getWindowHeight: function() {
|
|
return DefineControl.getFaceWindowHeight() + DefineControl.getUnitMenuBottomWindowHeight();
|
|
},
|
|
|
|
getUnitSentenceSpaceY: function() {
|
|
return 25;
|
|
},
|
|
|
|
_configureSentence: function(groupArray) {
|
|
groupArray.appendObject(UnitSentence.Power);
|
|
groupArray.appendObject(UnitSentence.Hit);
|
|
groupArray.appendObject(UnitSentence.Critical);
|
|
groupArray.appendObject(UnitSentence.Avoid);
|
|
groupArray.appendObject(UnitSentence.Range);
|
|
if (DataConfig.isItemWeightDisplayable()) {
|
|
groupArray.appendObject(UnitSentence.Agility);
|
|
}
|
|
groupArray.appendObject(UnitSentence.Fusion);
|
|
groupArray.appendObject(UnitSentence.State);
|
|
groupArray.appendObject(UnitSentence.Support);
|
|
}
|
|
}
|
|
);
|
|
|
|
var BaseUnitSentence = defineObject(BaseObject,
|
|
{
|
|
_unitSentenceWindow: null,
|
|
|
|
setParentWindow: function(unitSentenceWindow) {
|
|
this._unitSentenceWindow = unitSentenceWindow;
|
|
},
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
},
|
|
|
|
moveUnitSentence: function() {
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon) {
|
|
},
|
|
|
|
drawAbilityText: function(x, y, text, value, isValid) {
|
|
var textui = this.getUnitSentenceTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var colorIndex = 1;
|
|
var length = -1;
|
|
|
|
TextRenderer.drawKeywordText(x, y, text, length, color, font);
|
|
|
|
x += 78;
|
|
|
|
if (isValid) {
|
|
if (value < 0) {
|
|
TextRenderer.drawSignText(x - 37, y, ' - ');
|
|
value *= -1;
|
|
}
|
|
NumberRenderer.drawNumberColor(x, y, value, colorIndex, 255);
|
|
}
|
|
else {
|
|
TextRenderer.drawSignText(x - 5, y, StringTable.SignWord_Limitless);
|
|
}
|
|
},
|
|
|
|
getUnitSentenceCount: function(unit) {
|
|
return 1;
|
|
},
|
|
|
|
getUnitSentenceTextUI: function() {
|
|
return root.queryTextUI('default_window');
|
|
}
|
|
}
|
|
);
|
|
|
|
var UnitSentence = {};
|
|
|
|
UnitSentence.Power = defineObject(BaseUnitSentence,
|
|
{
|
|
_value: 0,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
if (weapon !== null) {
|
|
// drawUnitSentenceで毎回呼び出さないように保存
|
|
this._value = AbilityCalculator.getPower(unit, weapon) + totalStatus.powerTotal;
|
|
}
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var value = 0;
|
|
var isValid = false;
|
|
|
|
if (weapon !== null) {
|
|
value = this._value;
|
|
if (value < 0) {
|
|
value = 0;
|
|
}
|
|
|
|
isValid = true;
|
|
}
|
|
|
|
this.drawAbilityText(x, y, root.queryCommand('attack_capacity'), value, isValid);
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Hit = defineObject(BaseUnitSentence,
|
|
{
|
|
_value: 0,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
if (weapon !== null) {
|
|
this._value = AbilityCalculator.getHit(unit, weapon) + totalStatus.hitTotal;
|
|
}
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var value = 0;
|
|
var isValid = false;
|
|
|
|
if (weapon !== null) {
|
|
value = this._value;
|
|
if (value < 0) {
|
|
value = 0;
|
|
}
|
|
|
|
isValid = true;
|
|
}
|
|
|
|
this.drawAbilityText(x, y, root.queryCommand('hit_capacity'), value, isValid);
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Critical = defineObject(BaseUnitSentence,
|
|
{
|
|
_value: 0,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
if (weapon !== null) {
|
|
this._value = AbilityCalculator.getCritical(unit, weapon) + totalStatus.criticalTotal;
|
|
}
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var value = 0;
|
|
var isValid = false;
|
|
|
|
if (weapon !== null) {
|
|
if (Miscellaneous.isCriticalAllowed(unit, null)) {
|
|
value = this._value;
|
|
if (value < 0) {
|
|
value = 0;
|
|
}
|
|
}
|
|
|
|
isValid = true;
|
|
}
|
|
|
|
this.drawAbilityText(x, y, root.queryCommand('critical_capacity'), value, isValid);
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Avoid = defineObject(BaseUnitSentence,
|
|
{
|
|
_value: 0,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
this._value = AbilityCalculator.getAvoid(unit) + totalStatus.avoidTotal;
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var value = this._value;
|
|
var isValid = true;
|
|
|
|
this.drawAbilityText(x, y, root.queryCommand('avoid_capacity'), value, isValid);
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Range = defineObject(BaseUnitSentence,
|
|
{
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var startRange, endRange;
|
|
var textui = this.getUnitSentenceTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var length = -1;
|
|
var colorIndex = 1;
|
|
var alpha = 255;
|
|
|
|
TextRenderer.drawKeywordText(x, y, root.queryCommand('range_capacity'), length, color, font);
|
|
x += 78;
|
|
|
|
if (weapon === null) {
|
|
TextRenderer.drawSignText(x - 5, y, StringTable.SignWord_Limitless);
|
|
return;
|
|
}
|
|
|
|
startRange = weapon.getStartRange();
|
|
endRange = weapon.getEndRange();
|
|
|
|
if (startRange === endRange) {
|
|
NumberRenderer.drawNumberColor(x, y, startRange, colorIndex, alpha);
|
|
}
|
|
else {
|
|
x -= 30;
|
|
NumberRenderer.drawNumberColor(x, y, startRange, colorIndex, alpha);
|
|
TextRenderer.drawKeywordText(x + 17, y, StringTable.SignWord_WaveDash, -1, color, font);
|
|
NumberRenderer.drawNumberColor(x + 40, y, endRange, colorIndex, alpha);
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Agility = defineObject(BaseUnitSentence,
|
|
{
|
|
_value: 0,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
if (weapon !== null) {
|
|
this._value = AbilityCalculator.getAgility(unit, weapon);
|
|
}
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var value = 0;
|
|
var isValid = false;
|
|
|
|
if (weapon !== null) {
|
|
value = this._value;
|
|
isValid = true;
|
|
}
|
|
|
|
this.drawAbilityText(x, y, root.queryCommand('agility_capacity'), value, isValid);
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.State = defineObject(BaseUnitSentence,
|
|
{
|
|
_arr: null,
|
|
|
|
setCalculatorValue: function(unit, weapon, totalStatus) {
|
|
var i, turnState;
|
|
var list = unit.getTurnStateList();
|
|
var count = list.getCount();
|
|
|
|
this._arr = [];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
turnState = list.getData(i);
|
|
if (turnState.getState().isHidden()) {
|
|
continue;
|
|
}
|
|
|
|
this._arr.push(turnState);
|
|
}
|
|
},
|
|
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var i, state, turnState;
|
|
var count = this._arr.length;
|
|
var xPrev = x;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
turnState = this._arr[i];
|
|
state = turnState.getState();
|
|
GraphicsRenderer.drawImage(x, y, state.getIconResourceHandle(), GraphicsType.ICON);
|
|
x += GraphicsFormat.ICON_WIDTH + 6;
|
|
if (turnState.getTurn() !== 0) {
|
|
NumberRenderer.drawNumber(x, y, turnState.getTurn());
|
|
}
|
|
else {
|
|
TextRenderer.drawSignText(x, y, StringTable.SignWord_Limitless);
|
|
}
|
|
x += 16;
|
|
|
|
if (((i + 1) % 2) === 0) {
|
|
x = xPrev;
|
|
y += this._unitSentenceWindow.getUnitSentenceSpaceY();
|
|
}
|
|
}
|
|
},
|
|
|
|
getUnitSentenceCount: function(unit) {
|
|
var n;
|
|
var count = this._arr.length;
|
|
|
|
if (count === 0) {
|
|
return 0;
|
|
}
|
|
|
|
n = count % 2;
|
|
|
|
return n === 0 ? Math.floor(count / 2) : Math.floor(count / 2) + 1;
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Fusion = defineObject(BaseUnitSentence,
|
|
{
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var i, count, data, targetUnit;
|
|
var textui = this.getUnitSentenceTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var length = this._getTextLength();
|
|
var fusionData = FusionControl.getFusionData(unit);
|
|
var child = FusionControl.getFusionChild(unit);
|
|
|
|
if (fusionData === null || child === null) {
|
|
return;
|
|
}
|
|
|
|
GraphicsRenderer.drawImage(x, y, fusionData.getIconResourceHandle(), GraphicsType.ICON);
|
|
x += GraphicsFormat.ICON_WIDTH + 6;
|
|
TextRenderer.drawKeywordText(x, y, child.getName(), length, color, font);
|
|
},
|
|
|
|
getUnitSentenceCount: function(unit) {
|
|
var child = FusionControl.getFusionChild(unit);
|
|
|
|
return child !== null ? 1 : 0;
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return 100;
|
|
}
|
|
}
|
|
);
|
|
|
|
UnitSentence.Support = defineObject(BaseUnitSentence,
|
|
{
|
|
drawUnitSentence: function(x, y, unit, weapon, totalStatus) {
|
|
var i, count, data, targetUnit;
|
|
var textui = this.getUnitSentenceTextUI();
|
|
var color = ColorValue.KEYWORD;
|
|
var font = textui.getFont();
|
|
var length = this._getTextLength();
|
|
|
|
TextRenderer.drawKeywordText(x, y, StringTable.UnitSentence_Support, length, color, font);
|
|
|
|
y += this._unitSentenceWindow.getUnitSentenceSpaceY();
|
|
|
|
count = unit.getSupportDataCount();
|
|
for (i = 0; i < count; i++) {
|
|
data = unit.getSupportData(i);
|
|
targetUnit = data.getUnit();
|
|
if (targetUnit !== null && data.isGlobalSwitchOn() && data.isVariableOn()) {
|
|
TextRenderer.drawKeywordText(x, y, targetUnit.getName(), length, color, font);
|
|
y += this._unitSentenceWindow.getUnitSentenceSpaceY();
|
|
}
|
|
}
|
|
},
|
|
|
|
getUnitSentenceCount: function(unit) {
|
|
return 1 + unit.getSupportDataCount();
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return 130;
|
|
}
|
|
}
|
|
);
|