435 lines
11 KiB
JavaScript
435 lines
11 KiB
JavaScript
|
|
var SkillScreenMode = {
|
|
SKILLSIDE: 0,
|
|
OWNERSIDE: 1
|
|
};
|
|
|
|
var SkillScreen = defineObject(BaseScreen,
|
|
{
|
|
_skillListWindow: null,
|
|
_skillInfoWindow: null,
|
|
_ownerListWindow: null,
|
|
_unitSimpleWindow: null,
|
|
|
|
setScreenData: function(screenParam) {
|
|
this._prepareScreenMemberData(screenParam);
|
|
this._completeScreenMemberData(screenParam);
|
|
},
|
|
|
|
moveScreenCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === SkillScreenMode.SKILLSIDE) {
|
|
result = this._moveSkillSide();
|
|
}
|
|
else if (mode === SkillScreenMode.OWNERSIDE) {
|
|
result = this._moveOwnerSide();
|
|
}
|
|
|
|
this._unitSimpleWindow.moveWindow();
|
|
|
|
return result;
|
|
},
|
|
|
|
drawScreenCycle: function() {
|
|
var height = this._skillListWindow.getWindowHeight();
|
|
var width = this._skillInfoWindow.getWindowWidth() + this._skillListWindow.getWindowWidth();
|
|
var x = LayoutControl.getCenterX(-1, width);
|
|
var y = LayoutControl.getCenterY(-1, height);
|
|
|
|
this._skillListWindow.drawWindow(x, y);
|
|
this._ownerListWindow.drawWindow(x + this._skillListWindow.getWindowWidth(), y);
|
|
this._skillInfoWindow.drawWindow(x + this._skillListWindow.getWindowWidth(), y + (height - this._skillInfoWindow.getWindowHeight()));
|
|
|
|
this._drawOwnerTitle(x + this._skillListWindow.getWindowWidth(), y);
|
|
|
|
if (this.getCycleMode() === SkillScreenMode.OWNERSIDE) {
|
|
this._unitSimpleWindow.drawWindow(x, y + (height - this._unitSimpleWindow.getWindowHeight()));
|
|
}
|
|
},
|
|
|
|
drawScreenBottomText: function(textui) {
|
|
var description = '';
|
|
var skill = this._skillInfoWindow.getSkill();
|
|
|
|
if (skill !== null) {
|
|
description = skill.getDescription();
|
|
}
|
|
|
|
TextRenderer.drawScreenBottomText(description, textui);
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('SkillList');
|
|
},
|
|
|
|
changeSkill: function(obj) {
|
|
this._skillInfoWindow.setSkillInfoData(obj.skill, ObjectType.NULL);
|
|
this._ownerListWindow.setOwnerArray(obj.unitArray);
|
|
},
|
|
|
|
changeUnit: function(unit) {
|
|
this._unitSimpleWindow.setFaceUnitData(unit);
|
|
},
|
|
|
|
_prepareScreenMemberData: function(screenParam) {
|
|
this._skillListWindow = createWindowObject(SkillListWindow, this);
|
|
this._skillInfoWindow = createWindowObject(SkillInfoWindow, this);
|
|
this._ownerListWindow = createWindowObject(OwnerListWindow, this);
|
|
this._unitSimpleWindow = createWindowObject(UnitSimpleWindow, this);
|
|
},
|
|
|
|
_completeScreenMemberData: function(screenParam) {
|
|
var arr = this._getArray();
|
|
|
|
this._skillListWindow.setWindowData();
|
|
this._skillListWindow.setSkillArray(arr);
|
|
|
|
this._skillInfoWindow.setSkillInfoData(arr[0].skill, ObjectType.NULL);
|
|
|
|
this._ownerListWindow.setWindowData();
|
|
this._ownerListWindow.setOwnerArray(arr[0].unitArray);
|
|
},
|
|
|
|
_moveSkillSide: function() {
|
|
var input = this._skillListWindow.moveWindow();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (input === ScrollbarInput.SELECT) {
|
|
if (this._ownerListWindow.getOwnerCount() > 0) {
|
|
this._changeActiveWindow();
|
|
this.changeCycleMode(SkillScreenMode.OWNERSIDE);
|
|
}
|
|
}
|
|
else if (input === ScrollbarInput.CANCEL) {
|
|
result = MoveResult.END;
|
|
}
|
|
else {
|
|
if (this._skillListWindow.isIndexChanged()) {
|
|
this.changeSkill(this._skillListWindow.getSkillObject());
|
|
}
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveOwnerSide: function() {
|
|
var input = this._ownerListWindow.moveWindow();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (input === ScrollbarInput.CANCEL) {
|
|
this._changeActiveWindow();
|
|
this.changeCycleMode(SkillScreenMode.SKILLSIDE);
|
|
}
|
|
else {
|
|
if (this._ownerListWindow.isIndexChanged()) {
|
|
this.changeUnit(this._ownerListWindow.getUnit());
|
|
}
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_drawOwnerTitle: function(x, y) {
|
|
var textui = this._getTitleTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var pic = textui.getUIImage();
|
|
var text = StringTable.SkillList_Owner;
|
|
var titleCount = 4;
|
|
var width = this._ownerListWindow.getWindowWidth() - (TitleRenderer.getTitlePartsWidth() * (titleCount + 2));
|
|
|
|
width = Math.floor(width / 2);
|
|
TextRenderer.drawFixedTitleText(x + width, y - 38, text, color, font, TextFormat.CENTER, pic, titleCount);
|
|
},
|
|
|
|
_changeActiveWindow: function() {
|
|
if (this.getCycleMode() === SkillScreenMode.SKILLSIDE) {
|
|
this._ownerListWindow.setActive(true);
|
|
this._skillListWindow.setActive(false);
|
|
}
|
|
else {
|
|
this._ownerListWindow.setActive(false);
|
|
this._skillListWindow.setActive(true);
|
|
}
|
|
},
|
|
|
|
_getArray: function() {
|
|
var i, skill, obj;
|
|
var list = root.getBaseData().getSkillList();
|
|
var count = list.getCount();
|
|
var arr = [];
|
|
var unitSkillArray = this._getUnitSkillArray();
|
|
|
|
for (i = 0; i < count; i++) {
|
|
skill = list.getData(i);
|
|
if (!this._isSkillAllowed(skill)) {
|
|
continue;
|
|
}
|
|
|
|
obj = {};
|
|
obj.skill = skill;
|
|
obj.unitArray = this._getUnitArray(skill, unitSkillArray);
|
|
arr.push(obj);
|
|
}
|
|
|
|
return arr;
|
|
},
|
|
|
|
_getUnitSkillArray: function() {
|
|
var i, count, list, unit, skillArray, obj;
|
|
var arr = [];
|
|
|
|
if (root.getCurrentScene() === SceneType.BATTLESETUP) {
|
|
list = PlayerList.getAliveList();
|
|
}
|
|
else {
|
|
list = PlayerList.getSortieList();
|
|
}
|
|
|
|
count = list.getCount();
|
|
for (i = 0; i < count; i++) {
|
|
unit = list.getData(i);
|
|
skillArray = SkillControl.getSkillObjectArray(unit, ItemControl.getEquippedWeapon(unit), -1, '', this._getObjectFlag());
|
|
|
|
obj = {};
|
|
obj.unit = unit;
|
|
obj.skillArray = skillArray;
|
|
arr.push(obj);
|
|
}
|
|
|
|
return arr;
|
|
},
|
|
|
|
_getUnitArray: function(skill, unitSkillArray) {
|
|
var i, j, count2;
|
|
var count = unitSkillArray.length;
|
|
var arr = [];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
count2 = unitSkillArray[i].skillArray.length;
|
|
for (j = 0; j < count2; j++) {
|
|
if (unitSkillArray[i].skillArray[j].skill === skill) {
|
|
arr.push(unitSkillArray[i].unit);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return arr;
|
|
},
|
|
|
|
_getObjectFlag: function() {
|
|
// ユニットスキルのみを対象にする場合は、ObjectFlag.UNITだけを返す
|
|
return ObjectFlag.UNIT | ObjectFlag.CLASS | ObjectFlag.WEAPON | ObjectFlag.ITEM | ObjectFlag.STATE | ObjectFlag.FUSION;
|
|
},
|
|
|
|
_isSkillAllowed: function(skill) {
|
|
// 空白はデータ設定上でのスペースとしてみなし、スキルとして扱わない
|
|
return skill.getName() !== '';
|
|
},
|
|
|
|
_getTitleTextUI: function() {
|
|
return root.queryTextUI('objective_title');
|
|
}
|
|
}
|
|
);
|
|
|
|
var SkillListWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
|
|
setWindowData: function() {
|
|
var count = LayoutControl.getObjectVisibleCount(DefineControl.getTextPartsHeight(), 12);
|
|
|
|
this._scrollbar = createScrollbarObject(SkillScrollbar, this);
|
|
this._scrollbar.setActive(true);
|
|
this._scrollbar.setScrollFormation(1, count);
|
|
this._scrollbar.enablePageChange();
|
|
},
|
|
|
|
setSkillArray: function(objectArray) {
|
|
this._scrollbar.setObjectArray(objectArray);
|
|
},
|
|
|
|
setActive: function(isActive) {
|
|
this._scrollbar.setActive(isActive);
|
|
|
|
if (isActive) {
|
|
this._scrollbar.setForceSelect(-1);
|
|
}
|
|
else {
|
|
this._scrollbar.setForceSelect(this._scrollbar.getIndex());
|
|
}
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
return this._scrollbar.moveInput();
|
|
},
|
|
|
|
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);
|
|
},
|
|
|
|
getListIndex: function() {
|
|
return this._scrollbar.getIndex();
|
|
},
|
|
|
|
isIndexChanged: function() {
|
|
return this._scrollbar.checkAndUpdateIndex();
|
|
},
|
|
|
|
getSkillObject: function() {
|
|
return this._scrollbar.getObject();
|
|
}
|
|
}
|
|
);
|
|
|
|
var SkillScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
this._drawIcon(x, y, object, isSelect, index);
|
|
this._drawName(x, y, object, isSelect, index);
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return ItemRenderer.getItemWidth();
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return DefineControl.getTextPartsHeight();
|
|
},
|
|
|
|
_drawIcon: function(x, y, object, isSelect, index) {
|
|
if (this._isVisible(object)) {
|
|
GraphicsRenderer.drawImage(x, y, object.skill.getIconResourceHandle(), GraphicsType.ICON);
|
|
}
|
|
},
|
|
|
|
_drawName: function(x, y, object, isSelect, index) {
|
|
var name;
|
|
var length = this._getTextLength();
|
|
var textui = this.getParentTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
|
|
if (this._isVisible(object)) {
|
|
name = object.skill.getName();
|
|
}
|
|
else {
|
|
name = StringTable.HideData_Question;
|
|
}
|
|
|
|
x += GraphicsFormat.ICON_WIDTH + 10;
|
|
TextRenderer.drawKeywordText(x, y, name, length, color, font);
|
|
},
|
|
|
|
_isVisible: function(object) {
|
|
return true;
|
|
// return object.unitArray.length !== 0;
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return this.getObjectWidth();
|
|
}
|
|
}
|
|
);
|
|
|
|
var OwnerListWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
|
|
setWindowData: function() {
|
|
var count = LayoutControl.getObjectVisibleCount(DefineControl.getTextPartsHeight(), 5);
|
|
|
|
this._scrollbar = createScrollbarObject(OwnerListScrollbar, this);
|
|
this._scrollbar.setActive(false);
|
|
this._scrollbar.setScrollFormation(1, count);
|
|
},
|
|
|
|
setOwnerArray: function(objectArray) {
|
|
this._scrollbar.setObjectArray(objectArray);
|
|
},
|
|
|
|
setActive: function(isActive) {
|
|
this._scrollbar.setActive(isActive);
|
|
if (isActive) {
|
|
this.getParentInstance().changeUnit(this._scrollbar.getObject());
|
|
}
|
|
},
|
|
|
|
getOwnerCount: function() {
|
|
return this._scrollbar.getObjectCount();
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
return this._scrollbar.moveInput();
|
|
},
|
|
|
|
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);
|
|
},
|
|
|
|
getRecentlyInputType: function() {
|
|
return this._scrollbar.getRecentlyInputType();
|
|
},
|
|
|
|
getListIndex: function() {
|
|
return this._scrollbar.getIndex();
|
|
},
|
|
|
|
isIndexChanged: function() {
|
|
return this._scrollbar.checkAndUpdateIndex();
|
|
},
|
|
|
|
getUnit: function() {
|
|
return this._scrollbar.getObject();
|
|
}
|
|
}
|
|
);
|
|
|
|
var OwnerListScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
this._drawName(x, y, object, isSelect, index);
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return 240 - (this.getParentInstance().getWindowXPadding() * 2);
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return DefineControl.getTextPartsHeight();
|
|
},
|
|
|
|
_drawName: function(x, y, object, isSelect, index) {
|
|
var length = this._getTextLength();
|
|
var textui = this.getParentTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
|
|
TextRenderer.drawKeywordText(x, y, object.getName(), length, color, font);
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return this.getObjectWidth();
|
|
}
|
|
}
|
|
);
|