266 lines
6.9 KiB
JavaScript
266 lines
6.9 KiB
JavaScript
|
|
var DurabilityChangeSelectMode = {
|
|
TARGETSELECT: 0,
|
|
ITEMSELECT: 1
|
|
};
|
|
|
|
var DurabilityChangeItemSelection = defineObject(BaseItemSelection,
|
|
{
|
|
_isSelf: false,
|
|
_durabilitySelectManager: null,
|
|
|
|
setInitialSelection: function() {
|
|
var rangeType = this._item.getRangeType();
|
|
|
|
if (rangeType === SelectionRangeType.SELFONLY) {
|
|
this._isSelf = true;
|
|
this._changeItemSelect();
|
|
}
|
|
else {
|
|
this._changeTargetSelect();
|
|
}
|
|
|
|
return EnterResult.OK;
|
|
},
|
|
|
|
moveItemSelectionCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === DurabilityChangeSelectMode.TARGETSELECT) {
|
|
result = this._moveTargetSelect();
|
|
}
|
|
else if (mode === DurabilityChangeSelectMode.ITEMSELECT) {
|
|
result = this._moveItemSelect();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
drawItemSelectionCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
|
|
if (mode === DurabilityChangeSelectMode.TARGETSELECT) {
|
|
this._posSelector.drawPosSelector();
|
|
}
|
|
else if (mode === DurabilityChangeSelectMode.ITEMSELECT) {
|
|
this._durabilitySelectManager.drawWindowManager();
|
|
}
|
|
},
|
|
|
|
_moveTargetSelect: function() {
|
|
var result = this._posSelector.movePosSelector();
|
|
|
|
if (result === PosSelectorResult.SELECT) {
|
|
if (this.isPosSelectable()) {
|
|
this._targetUnit = this._posSelector.getSelectorTarget(false);
|
|
this._changeItemSelect();
|
|
return MoveResult.CONTINUE;
|
|
}
|
|
}
|
|
else if (result === PosSelectorResult.CANCEL) {
|
|
this._isSelection = false;
|
|
this._posSelector.endPosSelector();
|
|
return MoveResult.END;
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveItemSelect: function() {
|
|
if (this._durabilitySelectManager.moveWindowManager() !== MoveResult.CONTINUE) {
|
|
this._targetItem = this._durabilitySelectManager.getTargetItem();
|
|
if (this._targetItem !== null) {
|
|
this._isSelection = true;
|
|
this._posSelector.endPosSelector();
|
|
return MoveResult.END;
|
|
}
|
|
else {
|
|
if (this._isSelf) {
|
|
this._isSelection = false;
|
|
this._posSelector.endPosSelector();
|
|
return MoveResult.END;
|
|
}
|
|
else {
|
|
this._changeTargetSelect();
|
|
}
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_changeTargetSelect: function() {
|
|
this.setUnitSelection();
|
|
this.changeCycleMode(DurabilityChangeSelectMode.TARGETSELECT);
|
|
},
|
|
|
|
_changeItemSelect: function() {
|
|
this._durabilitySelectManager = createObject(DurabilitySelectManager);
|
|
this._durabilitySelectManager.setTargetUnit(this._targetUnit, this._item);
|
|
this.changeCycleMode(DurabilityChangeSelectMode.ITEMSELECT);
|
|
}
|
|
}
|
|
);
|
|
|
|
var DurabilityChangeType = {
|
|
MAXRECOVERY: 0,
|
|
HALF: 1,
|
|
BREAK: 2
|
|
};
|
|
|
|
var DurabilityChangeItemUse = defineObject(BaseItemUse,
|
|
{
|
|
enterMainUseCycle: function(itemUseParent) {
|
|
var durability, generator;
|
|
var increaseType = IncreaseType.ASSIGNMENT;
|
|
var itemTargetInfo = itemUseParent.getItemTargetInfo();
|
|
var type = itemTargetInfo.item.getDurabilityInfo().getDurabilityChangeType();
|
|
|
|
if (type === DurabilityChangeType.MAXRECOVERY) {
|
|
durability = itemTargetInfo.targetItem.getLimitMax();
|
|
}
|
|
else if (type === DurabilityChangeType.HALF) {
|
|
durability = Math.floor(itemTargetInfo.targetItem.getLimit() / 2);
|
|
}
|
|
else {
|
|
durability = -1;
|
|
}
|
|
|
|
this._dynamicEvent = createObject(DynamicEvent);
|
|
generator = this._dynamicEvent.acquireEventGenerator();
|
|
generator.itemDurabilityChange(itemTargetInfo.targetUnit, itemTargetInfo.targetItem, durability, increaseType, itemUseParent.isItemSkipMode());
|
|
|
|
return this._dynamicEvent.executeDynamicEvent();
|
|
},
|
|
|
|
moveMainUseCycle: function() {
|
|
return this._dynamicEvent.moveDynamicEvent();
|
|
},
|
|
|
|
getItemAnimePos: function(itemUseParent, animeData) {
|
|
return this.getUnitBasePos(itemUseParent, animeData);
|
|
}
|
|
}
|
|
);
|
|
|
|
var DurabilityItemInfo = defineObject(BaseItemInfo,
|
|
{
|
|
drawItemInfoCycle: function(x, y) {
|
|
ItemInfoRenderer.drawKeyword(x, y, this.getItemTypeName(StringTable.ItemInfo_Durability));
|
|
|
|
y += ItemInfoRenderer.getSpaceY();
|
|
this._drawType(x, y);
|
|
|
|
y += ItemInfoRenderer.getSpaceY();
|
|
this.drawRange(x, y, this._item.getRangeValue(), this._item.getRangeType());
|
|
},
|
|
|
|
getInfoPartsCount: function() {
|
|
return 3;
|
|
},
|
|
|
|
_drawType: function(x, y) {
|
|
var type = this._item.getDurabilityInfo().getDurabilityChangeType();
|
|
var arr = [StringTable.DurabilityType_Max, StringTable.DurabilityType_Half, StringTable.DurabilityType_Break];
|
|
|
|
ItemInfoRenderer.drawKeyword(x, y, arr[type]);
|
|
}
|
|
}
|
|
);
|
|
|
|
var DurabilityChangeItemAvailability = defineObject(BaseItemAvailability,
|
|
{
|
|
}
|
|
);
|
|
|
|
var DurabilityChangeItemAI = defineObject(BaseItemAI,
|
|
{
|
|
}
|
|
);
|
|
|
|
var DurabilitySelectManager = defineObject(BaseWindowManager,
|
|
{
|
|
_targetUnit: null,
|
|
_item: null,
|
|
_targetItem: null,
|
|
_itemListWindow: null,
|
|
_itemInfoWindow: null,
|
|
|
|
setTargetUnit: function(targetUnit, item) {
|
|
this._targetUnit = targetUnit;
|
|
this._item = item;
|
|
|
|
this._itemListWindow = createWindowObject(ItemDurabilityListWindow, this);
|
|
this._itemListWindow.setDefaultItemFormation();
|
|
this._itemListWindow.setDurabilityItemFormation(targetUnit, item);
|
|
this._itemListWindow.setActive(true);
|
|
|
|
this._itemInfoWindow = createWindowObject(ItemInfoWindow, this);
|
|
},
|
|
|
|
moveWindowManager: function() {
|
|
var targetItem = this._itemListWindow.getCurrentItem();
|
|
var input = this._itemListWindow.moveWindow();
|
|
|
|
if (input === ScrollbarInput.SELECT) {
|
|
if (!Miscellaneous.isDurabilityChangeAllowed(this._item, targetItem)) {
|
|
this._playOperationBlockSound();
|
|
}
|
|
else {
|
|
this._targetItem = targetItem;
|
|
return MoveResult.END;
|
|
}
|
|
}
|
|
else if (input === ScrollbarInput.CANCEL) {
|
|
this._targetItem = null;
|
|
return MoveResult.END;
|
|
}
|
|
|
|
this._itemInfoWindow.setInfoItem(targetItem);
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawWindowManager: function() {
|
|
var x = this.getPositionWindowX();
|
|
var y = this.getPositionWindowY();
|
|
var height = this._itemListWindow.getWindowHeight();
|
|
|
|
this._itemListWindow.drawWindow(x, y);
|
|
this._itemInfoWindow.drawWindow(x, y + height + this._getWindowInterval());
|
|
},
|
|
|
|
getTargetItem: function() {
|
|
return this._targetItem;
|
|
},
|
|
|
|
getTotalWindowWidth: function() {
|
|
return this._itemInfoWindow.getWindowWidth();
|
|
},
|
|
|
|
getTotalWindowHeight: function() {
|
|
return this._itemListWindow.getWindowHeight() + this._getWindowInterval() + this._itemInfoWindow.getWindowHeight();
|
|
},
|
|
|
|
getPositionWindowX: function() {
|
|
if (Miscellaneous.isPrepareScene()) {
|
|
return LayoutControl.getCenterX(-1, this.getTotalWindowWidth());
|
|
}
|
|
|
|
return LayoutControl.getUnitBaseX(this._targetUnit, this.getTotalWindowWidth());
|
|
},
|
|
|
|
getPositionWindowY: function() {
|
|
return LayoutControl.getCenterY(-1, 340);
|
|
},
|
|
|
|
_getWindowInterval: function() {
|
|
return 10;
|
|
},
|
|
|
|
_playOperationBlockSound: function() {
|
|
MediaControl.soundDirect('operationblock');
|
|
}
|
|
}
|
|
);
|