330 lines
8.8 KiB
JavaScript
330 lines
8.8 KiB
JavaScript
|
|
var ResurrectionScreenMode = {
|
|
TOP: 0,
|
|
HELP: 1,
|
|
CHECK: 2,
|
|
EMPTY: 3
|
|
};
|
|
|
|
var ResurrectionScreen = defineObject(BaseScreen,
|
|
{
|
|
_unitList: null,
|
|
_selectUnit: null,
|
|
_leftWindow: null,
|
|
_unitMenuTopWindow: null,
|
|
_unitMenuBottomWindow: null,
|
|
_questionWindow: null,
|
|
|
|
setScreenData: function(screenParam) {
|
|
this._prepareScreenMemberData(screenParam);
|
|
this._completeScreenMemberData(screenParam);
|
|
},
|
|
|
|
moveScreenCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode !== ResurrectionScreenMode.EMPTY) {
|
|
this._moveAnimation();
|
|
}
|
|
|
|
if (mode === ResurrectionScreenMode.TOP) {
|
|
result = this._moveTop();
|
|
}
|
|
else if (mode === ResurrectionScreenMode.HELP) {
|
|
result = this._moveHelp();
|
|
}
|
|
else if (mode === ResurrectionScreenMode.CHECK) {
|
|
result = this._moveCheck();
|
|
}
|
|
else if (mode === ResurrectionScreenMode.EMPTY) {
|
|
result = this._moveEmpty();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
drawScreenCycle: function() {
|
|
if (this.getCycleMode() !== ResurrectionScreenMode.EMPTY) {
|
|
this._drawMainWindow();
|
|
}
|
|
else {
|
|
this._drawSubWindow();
|
|
}
|
|
},
|
|
|
|
drawScreenBottomText: function(textui) {
|
|
var index, unit;
|
|
var text = '';
|
|
var mode = this.getCycleMode();
|
|
var isDefault = false;
|
|
|
|
if (mode === ResurrectionScreenMode.EMPTY) {
|
|
return;
|
|
}
|
|
else if (mode === ResurrectionScreenMode.CHECK || MouseControl.isMouseMoving()) {
|
|
isDefault = true;
|
|
}
|
|
else if (this._unitMenuTopWindow.isTracingHelp()) {
|
|
text = this._unitMenuTopWindow.getHelpText();
|
|
}
|
|
else if (this._unitMenuBottomWindow.isHelpMode() || this._unitMenuBottomWindow.isTracingHelp()) {
|
|
text = this._unitMenuBottomWindow.getHelpText();
|
|
}
|
|
else {
|
|
isDefault = true;
|
|
}
|
|
|
|
if (isDefault) {
|
|
index = this._leftWindow.getUnitListIndex();
|
|
unit = this._unitList.getData(index);
|
|
text = unit.getDescription();
|
|
}
|
|
|
|
TextRenderer.drawScreenBottomText(text, textui);
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('Resurrection');
|
|
},
|
|
|
|
getResurrectionUnit: function() {
|
|
return this._selectUnit;
|
|
},
|
|
|
|
_prepareScreenMemberData: function(screenParam) {
|
|
this._unitList = this._combineDeathList(screenParam);
|
|
this._selectUnit = null;
|
|
this._leftWindow = createWindowObject(ResurrectionListWindow, this);
|
|
this._unitMenuTopWindow = createWindowObject(UnitMenuTopWindow, this);
|
|
this._unitMenuBottomWindow = createWindowObject(UnitMenuBottomWindow, this);
|
|
this._questionWindow = createWindowObject(QuestionWindow, this);
|
|
this._infoWindow = createWindowObject(InfoWindow, this);
|
|
},
|
|
|
|
_completeScreenMemberData: function(screenParam) {
|
|
if (this._unitList.getCount() > 0) {
|
|
this._leftWindow.setResurrectionList(this._unitList);
|
|
this._questionWindow.setQuestionMessage(StringTable.ResurrectionLayout_Question);
|
|
this._unitMenuTopWindow.setUnitMenuData();
|
|
this._unitMenuBottomWindow.setUnitMenuData();
|
|
|
|
this._setMenuUnit(0);
|
|
|
|
this.changeCycleMode(ResurrectionScreenMode.TOP);
|
|
}
|
|
else {
|
|
this._infoWindow.setInfoMessage(StringTable.ResurrectionLayout_Empty);
|
|
this.changeCycleMode(ResurrectionScreenMode.EMPTY);
|
|
}
|
|
},
|
|
|
|
_setMenuUnit: function(index) {
|
|
var unit = this._unitList.getData(index);
|
|
|
|
this._unitMenuTopWindow.changeUnitMenuTarget(unit);
|
|
this._unitMenuBottomWindow.changeUnitMenuTarget(unit);
|
|
},
|
|
|
|
_moveTop: function() {
|
|
var recentlyInput;
|
|
var result = MoveResult.CONTINUE;
|
|
var input = this._leftWindow.moveWindow();
|
|
|
|
if (input === ScrollbarInput.SELECT) {
|
|
this._leftWindow.enableSelectCursor(false);
|
|
this._questionWindow.setQuestionActive(true);
|
|
|
|
// 蘇生可否の選択時に、アイテム情報ウインドウなどが表示されないようにする
|
|
this._unitMenuBottomWindow.lockTracing(true);
|
|
this.changeCycleMode(ResurrectionScreenMode.CHECK);
|
|
}
|
|
else if (input === ScrollbarInput.CANCEL) {
|
|
this._selectUnit = null;
|
|
result = MoveResult.END;
|
|
}
|
|
else if (input === ScrollbarInput.NONE) {
|
|
recentlyInput = this._leftWindow.getRecentlyInputType();
|
|
if (recentlyInput === InputType.LEFT || recentlyInput === InputType.RIGHT) {
|
|
this._setHelpMode();
|
|
}
|
|
else {
|
|
if (this._leftWindow.isIndexChanged()) {
|
|
this._setMenuUnit(this._leftWindow.getUnitListIndex());
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveHelp: function() {
|
|
if (!this._unitMenuBottomWindow.isHelpMode()) {
|
|
this._leftWindow.enableSelectCursor(true);
|
|
this.changeCycleMode(UnitSortieMode.TOP);
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveCheck: function() {
|
|
var index;
|
|
|
|
if (this._questionWindow.moveWindow() !== MoveResult.CONTINUE) {
|
|
if (this._questionWindow.getQuestionAnswer() === QuestionAnswer.YES) {
|
|
index = this._leftWindow.getUnitListIndex();
|
|
this._selectUnit = this._unitList.getData(index);
|
|
return MoveResult.END;
|
|
}
|
|
else {
|
|
this._leftWindow.enableSelectCursor(true);
|
|
this._unitMenuBottomWindow.lockTracing(false);
|
|
this.changeCycleMode(ResurrectionScreenMode.TOP);
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveEmpty: function() {
|
|
if (this._infoWindow.moveWindow() !== MoveResult.CONTINUE) {
|
|
this._playCancelSound();
|
|
return MoveResult.END;
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveAnimation: function() {
|
|
this._unitMenuTopWindow.moveWindow();
|
|
this._unitMenuBottomWindow.moveWindow();
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_drawMainWindow: function() {
|
|
var mode = this.getCycleMode();
|
|
var width = this._leftWindow.getWindowWidth() + this._unitMenuTopWindow.getWindowWidth();
|
|
var height = this._leftWindow.getWindowHeight();
|
|
var x = LayoutControl.getCenterX(-1, width);
|
|
var y = LayoutControl.getCenterY(-1, height);
|
|
|
|
width = this._leftWindow.getWindowWidth();
|
|
height = this._unitMenuTopWindow.getWindowHeight();
|
|
|
|
this._leftWindow.drawWindow(x, y);
|
|
this._unitMenuTopWindow.drawWindow(x + width, y);
|
|
this._unitMenuBottomWindow.drawWindow(x + width, y + height);
|
|
|
|
if (mode === ResurrectionScreenMode.CHECK) {
|
|
x = LayoutControl.getCenterX(-1, this._questionWindow.getWindowWidth());
|
|
y = LayoutControl.getCenterY(-1, this._questionWindow.getWindowHeight());
|
|
this._questionWindow.drawWindow(x, y);
|
|
}
|
|
},
|
|
|
|
_drawSubWindow: function() {
|
|
var x = LayoutControl.getCenterX(-1, this._infoWindow.getWindowWidth());
|
|
var y = LayoutControl.getCenterY(-1, this._infoWindow.getWindowHeight());
|
|
|
|
this._infoWindow.drawWindow(x, y);
|
|
},
|
|
|
|
_setHelpMode: function() {
|
|
if (this._unitMenuBottomWindow.setHelpMode()) {
|
|
this._leftWindow.enableSelectCursor(false);
|
|
this.changeCycleMode(UnitSortieMode.HELP);
|
|
}
|
|
},
|
|
|
|
_combineDeathList: function(screenParam) {
|
|
var arr = ResurrectionControl.getTargetArray(screenParam.unit, screenParam.item);
|
|
var list = StructureBuilder.buildDataList();
|
|
|
|
list.setDataArray(arr);
|
|
|
|
return list;
|
|
},
|
|
|
|
_playCancelSound: function() {
|
|
MediaControl.soundDirect('commandcancel');
|
|
}
|
|
}
|
|
);
|
|
|
|
var ResurrectionListWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
_unitList: null,
|
|
|
|
setResurrectionList: function(unitList) {
|
|
this._unitList = unitList;
|
|
|
|
this._scrollbar = createScrollbarObject(ResurrectionListScrollbar, this);
|
|
this._scrollbar.setScrollFormation(1, 10);
|
|
this._scrollbar.setDataList(unitList);
|
|
this._scrollbar.setActive(true);
|
|
},
|
|
|
|
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 DefineControl.getFaceWindowHeight() + DefineControl.getUnitMenuBottomWindowHeight();
|
|
},
|
|
|
|
getUnitListIndex: function() {
|
|
return this._scrollbar.getIndex();
|
|
},
|
|
|
|
isIndexChanged: function() {
|
|
return this._scrollbar.checkAndUpdateIndex();
|
|
},
|
|
|
|
getRecentlyInputType: function() {
|
|
return this._scrollbar.getRecentlyInputType();
|
|
},
|
|
|
|
enableSelectCursor: function(isActive) {
|
|
this._scrollbar.enableSelectCursor(isActive);
|
|
}
|
|
}
|
|
);
|
|
|
|
var ResurrectionListScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
var length = this._getTextLength();
|
|
var textui = this.getParentTextUI();
|
|
var font = textui.getFont();
|
|
var color = textui.getColor();
|
|
|
|
TextRenderer.drawKeywordText(x, y, object.getName(), length, color, font);
|
|
},
|
|
|
|
playSelectSound: function() {
|
|
MediaControl.soundDirect('commandselect');
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return DefineControl.getTextPartsWidth();
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return DefineControl.getTextPartsHeight();
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return this.getObjectWidth();
|
|
}
|
|
}
|
|
);
|