717 lines
20 KiB
JavaScript
717 lines
20 KiB
JavaScript
|
|
var MultiClassChangeMode = {
|
|
TOP: 0,
|
|
HELP: 1,
|
|
CHANGEQUESTION: 2,
|
|
ANIME: 3,
|
|
NOCHANGE: 4
|
|
};
|
|
|
|
var MultiClassChangeScreen = defineObject(BaseScreen,
|
|
{
|
|
_unit: null,
|
|
_isMapCall: false,
|
|
_classInfoWindow: null,
|
|
_classParameterWindow: null,
|
|
_classSelectWindow: null,
|
|
_infoWindow: null,
|
|
_questionWindow: null,
|
|
_dynamicAnime: null,
|
|
_classEntryArray: null,
|
|
_currentIndex: 0,
|
|
_returnData: null,
|
|
|
|
setScreenData: function(screenParam) {
|
|
this._prepareScreenMemberData(screenParam);
|
|
this._completeScreenMemberData(screenParam);
|
|
},
|
|
|
|
moveScreenCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === MultiClassChangeMode.TOP) {
|
|
result = this._moveTop();
|
|
}
|
|
else if (mode === MultiClassChangeMode.HELP) {
|
|
result = this._moveHelp();
|
|
}
|
|
else if (mode === MultiClassChangeMode.CHANGEQUESTION) {
|
|
result = this._moveChangeQuestion();
|
|
}
|
|
else if (mode === MultiClassChangeMode.ANIME) {
|
|
result = this._moveAnime();
|
|
}
|
|
else if (mode === MultiClassChangeMode.NOCHANGE) {
|
|
result = this._moveNoChangeMode();
|
|
}
|
|
|
|
this._moveInfoParameter();
|
|
|
|
return result;
|
|
},
|
|
|
|
drawScreenCycle: function() {
|
|
var mode = this.getCycleMode();
|
|
|
|
if (mode !== MultiClassChangeMode.NOCHANGE) {
|
|
this._drawMainWindow();
|
|
}
|
|
|
|
this._drawSubWindow();
|
|
|
|
if (mode === MultiClassChangeMode.ANIME) {
|
|
this._drawAnime();
|
|
}
|
|
},
|
|
|
|
drawScreenBottomText: function(textui) {
|
|
var text, classEntry;
|
|
|
|
if (this._classEntryArray === null) {
|
|
return;
|
|
}
|
|
|
|
if (this._classInfoWindow.getSkillInteraction().isInteraction()) {
|
|
text = this._classInfoWindow.getSkillInteraction().getHelpText();
|
|
}
|
|
else {
|
|
classEntry = this._classEntryArray[this._currentIndex];
|
|
if (classEntry.isChange) {
|
|
text = classEntry.cls.getDescription();
|
|
}
|
|
else {
|
|
text = '';
|
|
}
|
|
}
|
|
|
|
TextRenderer.drawScreenBottomText(text, textui);
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('ClassChange');
|
|
},
|
|
|
|
getScreenResult: function() {
|
|
return this._returnData;
|
|
},
|
|
|
|
getTotalWindowHeight: function() {
|
|
return this._classInfoWindow.getWindowHeight() + this._classParameterWindow.getWindowHeight();
|
|
},
|
|
|
|
_prepareScreenMemberData: function(screenParam) {
|
|
this._unit = screenParam.unit;
|
|
this._isMapCall = screenParam.isMapCall;
|
|
this._classInfoWindow = createWindowObject(MultiClassInfoWindow, this);
|
|
this._classParameterWindow = createWindowObject(MultiClassParameterWindow, this);
|
|
this._classSelectWindow = createWindowObject(MultiClassSelectWindow, this);
|
|
this._infoWindow = createWindowObject(InfoWindow, this);
|
|
this._questionWindow = createWindowObject(QuestionWindow, this);
|
|
this._dynamicAnime = createWindowObject(DynamicAnime, this);
|
|
this._classEntryArray = null;
|
|
this._currentIndex = 0;
|
|
this._returnData = null;
|
|
},
|
|
|
|
_completeScreenMemberData: function(screenParam) {
|
|
var classEntryArray = this._getClassEntryArray(screenParam);
|
|
|
|
if (classEntryArray.length > 0) {
|
|
this._questionWindow.setQuestionMessage(this._getQuestionMessage());
|
|
this._classSelectWindow.setClassSelectData(this._unit, classEntryArray);
|
|
this._classInfoWindow.setClassInfoData(this._unit, classEntryArray[0]);
|
|
this._classParameterWindow.setClassParameterData(this._unit, classEntryArray[0]);
|
|
|
|
this._classEntryArray = classEntryArray;
|
|
this.changeCycleMode(MultiClassChangeMode.TOP);
|
|
}
|
|
else {
|
|
// クラスグループが存在しない、またはクラスグループの中身が空白な場合は、クラスチェンジできない
|
|
this._infoWindow.setInfoMessage(StringTable.ClassChange_UnableClassChange);
|
|
this.changeCycleMode(MultiClassChangeMode.NOCHANGE);
|
|
}
|
|
},
|
|
|
|
_moveTop: function() {
|
|
var index, input, recentlyInput;
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
input = this._classSelectWindow.moveWindow();
|
|
if (input === ScrollbarInput.SELECT) {
|
|
if (this._classEntryArray[this._currentIndex].isChange) {
|
|
this._classSelectWindow.enableSelectCursor(false);
|
|
this._questionWindow.setQuestionActive(true);
|
|
this.changeCycleMode(MultiClassChangeMode.CHANGEQUESTION);
|
|
}
|
|
}
|
|
else if (input === ScrollbarInput.CANCEL) {
|
|
if (this._isMapCall) {
|
|
this._returnData = null;
|
|
}
|
|
|
|
result = MoveResult.END;
|
|
}
|
|
else if (input === ScrollbarInput.NONE) {
|
|
recentlyInput = this._classSelectWindow.getRecentlyInputType();
|
|
if (recentlyInput === InputType.LEFT || recentlyInput === InputType.RIGHT) {
|
|
this._setHelpMode();
|
|
}
|
|
else {
|
|
index = this._classSelectWindow.getClassEntryIndex();
|
|
if (index !== this._currentIndex) {
|
|
this._currentIndex = index;
|
|
this._classInfoWindow.setClassInfoData(this._unit, this._classEntryArray[index]);
|
|
this._classParameterWindow.setBonusStatus(this._unit, this._classEntryArray[index]);
|
|
}
|
|
}
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveHelp: function() {
|
|
if (!this._classInfoWindow.getSkillInteraction().isHelpMode()) {
|
|
this._classSelectWindow.enableSelectCursor(true);
|
|
this.changeCycleMode(MultiClassChangeMode.TOP);
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveChangeQuestion: function() {
|
|
if (this._questionWindow.moveWindow() !== MoveResult.CONTINUE) {
|
|
if (this._questionWindow.getQuestionAnswer() === QuestionAnswer.YES) {
|
|
if (this._isMapCall) {
|
|
this._setScreenResult();
|
|
// クラスチェンジアニメの表示はマップ上で行うため、ここで終了になる
|
|
return MoveResult.END;
|
|
}
|
|
|
|
this._startAnime();
|
|
|
|
this.changeCycleMode(MultiClassChangeMode.ANIME);
|
|
}
|
|
else {
|
|
this._classSelectWindow.enableSelectCursor(true);
|
|
this.changeCycleMode(MultiClassChangeMode.TOP);
|
|
}
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveAnime: function() {
|
|
var cls = this._classEntryArray[this._currentIndex];
|
|
|
|
if (this._dynamicAnime.moveDynamicAnime() !== MoveResult.CONTINUE) {
|
|
this._classInfoWindow.setClass(cls);
|
|
this._classParameterWindow.notifyNewClass(this._unit, cls);
|
|
this._classSelectWindow.enableSelectCursor(true);
|
|
this.changeCycleMode(MultiClassChangeMode.TOP);
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveNoChangeMode: function() {
|
|
if (this._infoWindow.moveWindow() !== MoveResult.CONTINUE) {
|
|
this._playCancelSound();
|
|
return MoveResult.END;
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_moveInfoParameter: function() {
|
|
var mode = this.getCycleMode();
|
|
|
|
if (mode !== MultiClassChangeMode.NOCHANGE) {
|
|
this._classInfoWindow.moveWindow();
|
|
this._classParameterWindow.moveWindow();
|
|
}
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
_drawAnime: function() {
|
|
this._dynamicAnime.drawDynamicAnime();
|
|
},
|
|
|
|
_drawMainWindow: function() {
|
|
var width = this._classSelectWindow.getWindowWidth() + this._classParameterWindow.getWindowWidth();
|
|
var height = this._classSelectWindow.getWindowHeight();
|
|
var x = LayoutControl.getCenterX(-1, width);
|
|
var y = LayoutControl.getCenterY(-1, height);
|
|
|
|
width = this._classSelectWindow.getWindowWidth();
|
|
height = this._classParameterWindow.getWindowHeight();
|
|
|
|
this._classSelectWindow.drawWindow(x, y);
|
|
this._classParameterWindow.drawWindow(x + width, y);
|
|
this._classInfoWindow.drawWindow(x + width, y + height);
|
|
},
|
|
|
|
_drawSubWindow: function() {
|
|
var x, y;
|
|
var mode = this.getCycleMode();
|
|
|
|
if (mode === MultiClassChangeMode.CHANGEQUESTION) {
|
|
x = LayoutControl.getCenterX(-1, this._questionWindow.getWindowWidth());
|
|
y = LayoutControl.getCenterY(-1, this._questionWindow.getWindowHeight());
|
|
this._questionWindow.drawWindow(x, y);
|
|
}
|
|
else if (mode === MultiClassChangeMode.NOCHANGE) {
|
|
x = LayoutControl.getCenterX(-1, this._infoWindow.getWindowWidth());
|
|
y = LayoutControl.getCenterY(-1, this._infoWindow.getWindowHeight());
|
|
this._infoWindow.drawWindow(x, y);
|
|
}
|
|
},
|
|
|
|
_startAnime: function() {
|
|
var anime = root.queryAnime('classchange');
|
|
var pos = this._classInfoWindow.getClassChangeAnimePos();
|
|
var width = this._classSelectWindow.getWindowWidth();
|
|
var height = this._classSelectWindow.getWindowHeight();
|
|
var x = LayoutControl.getCenterX(-1, width);
|
|
var y = LayoutControl.getCenterY(-1, height);
|
|
|
|
this._dynamicAnime.startDynamicAnime(anime, x + pos.x, y + pos.y + this._classParameterWindow.getWindowHeight());
|
|
},
|
|
|
|
_setHelpMode: function() {
|
|
var classEntry;
|
|
|
|
if (this._classEntryArray === null) {
|
|
return;
|
|
}
|
|
|
|
classEntry = this._classEntryArray[this._currentIndex];
|
|
if (!classEntry.isChange) {
|
|
return;
|
|
}
|
|
|
|
if (this._classInfoWindow.getSkillInteraction().setHelpMode()) {
|
|
this._classSelectWindow.enableSelectCursor(false);
|
|
this.changeCycleMode(MultiClassChangeMode.HELP);
|
|
}
|
|
},
|
|
|
|
_setScreenResult: function() {
|
|
this._returnData = this._classEntryArray[this._currentIndex].cls;
|
|
},
|
|
|
|
_getClassEntryArray: function(screenParam) {
|
|
return ClassChangeChecker.getClassEntryArray(screenParam.unit, screenParam.isMapCall);
|
|
},
|
|
|
|
_getQuestionMessage: function() {
|
|
return StringTable.ClassChange_UnitClassChange;
|
|
},
|
|
|
|
_playCancelSound: function() {
|
|
MediaControl.soundDirect('commandcancel');
|
|
}
|
|
}
|
|
);
|
|
|
|
var MultiClassInfoWindowMode = {
|
|
TOP: 0,
|
|
SKILL: 1
|
|
};
|
|
|
|
var MultiClassInfoWindow = defineObject(BaseWindow,
|
|
{
|
|
_unit: null,
|
|
_targetClass: null,
|
|
_motionId: 0,
|
|
_isClassDraw: false,
|
|
_animeData: null,
|
|
_animeSimple: null,
|
|
_animeRenderParam: null,
|
|
_unitRenderParam: null,
|
|
_isHelpMode: false,
|
|
_handle: null,
|
|
_skillInteraction: null,
|
|
|
|
initialize: function() {
|
|
this._skillInteraction = createObject(SkillInteraction);
|
|
},
|
|
|
|
setClassInfoData: function(unit, classEntry) {
|
|
this._unit = unit;
|
|
this._targetClass = classEntry.cls;
|
|
this._isClassDraw = classEntry.isChange;
|
|
this._setSkillData();
|
|
this._setBattleMotionGraphics();
|
|
|
|
this._handle = this._getTargetHandle();
|
|
|
|
this.changeCycleMode(MultiClassInfoWindowMode.TOP);
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
this._skillInteraction.moveInteraction();
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
drawWindowContent: function(x, y) {
|
|
var textui = root.queryTextUI('decoration_title');
|
|
var color = ColorValue.KEYWORD;
|
|
var font = textui.getFont();
|
|
var pic = textui.getUIImage();
|
|
|
|
WeaponTypeRenderer.drawTitle(x + 220, y - 10, color, font, pic);
|
|
SkillRenderer.drawTitle(x + 220, y + 70, color, font, pic);
|
|
|
|
if (this._isClassDraw) {
|
|
WeaponTypeRenderer.drawClassWeaponList(x + 220, y + 50, this._targetClass);
|
|
this._skillInteraction.getInteractionScrollbar().drawScrollbar(x + 220, y + 130);
|
|
|
|
this._drawClassGraphics(x, y);
|
|
}
|
|
else {
|
|
TextRenderer.drawText(x + 60, y + 80, StringTable.HideData_Unknown, -1, color, font);
|
|
}
|
|
|
|
if (this._skillInteraction.isInteraction()) {
|
|
this._skillInteraction.getInteractionWindow().drawWindow(x, y);
|
|
}
|
|
},
|
|
|
|
getWindowWidth: function() {
|
|
return 450;
|
|
},
|
|
|
|
getWindowHeight: function() {
|
|
return 190;
|
|
},
|
|
|
|
// クラスチェンジ実行時に呼ばれる
|
|
setClass: function(classEntry) {
|
|
if (this._animeRenderParam !== null) {
|
|
this._animeRenderParam.alpha = 255;
|
|
}
|
|
else {
|
|
this._unitRenderParam.alpha = 255;
|
|
}
|
|
|
|
Miscellaneous.changeClass(this._unit, classEntry.cls);
|
|
this._unit.setHp(ParamBonus.getMhp(this._unit));
|
|
},
|
|
|
|
getClassChangeAnimePos: function() {
|
|
return createPos(-50, 0);
|
|
},
|
|
|
|
getSkillInteraction: function() {
|
|
return this._skillInteraction;
|
|
},
|
|
|
|
_setBattleMotionGraphics: function() {
|
|
var alpha = 255;
|
|
var animeData = BattlerChecker.findBattleAnime(this._targetClass, null);
|
|
|
|
if (this._unit.getClass() !== this._targetClass) {
|
|
alpha = 128;
|
|
}
|
|
|
|
if (DataConfig.isMotionGraphicsEnabled() && animeData !== null) {
|
|
this._motionId = this._getMotionId();
|
|
this._animeData = animeData;
|
|
|
|
this._animeSimple = createObject(NonBattleAnimeSimple);
|
|
this._animeSimple.setAnimeData(animeData);
|
|
this._animeSimple.setMotionId(this._motionId);
|
|
|
|
this._animeRenderParam = StructureBuilder.buildAnimeRenderParam();
|
|
this._animeRenderParam.alpha = alpha;
|
|
this._animeRenderParam.isRight = true;
|
|
this._animeRenderParam.motionColorIndex = Miscellaneous.getMotionColorIndex(this._unit);
|
|
}
|
|
else {
|
|
this._unitRenderParam = StructureBuilder.buildUnitRenderParam();
|
|
this._unitRenderParam.alpha = alpha;
|
|
this._unitRenderParam.handle = this._getTargetHandle();
|
|
}
|
|
},
|
|
|
|
_setSkillData: function() {
|
|
var i;
|
|
var refList = this._targetClass.getSkillReferenceList();
|
|
var count = refList.getTypeCount();
|
|
var arr = [];
|
|
var skillEntry;
|
|
|
|
for (i = 0; i < count; i++) {
|
|
data = refList.getTypeData(i);
|
|
skillEntry = StructureBuilder.buildMixSkillEntry();
|
|
skillEntry.skill = data;
|
|
skillEntry.objecttype = ObjectType.CLASS;
|
|
arr.push(skillEntry);
|
|
}
|
|
|
|
this._skillInteraction.setSkillArray(arr);
|
|
},
|
|
|
|
_drawClassGraphics: function(x, y) {
|
|
var frameIndex, spriteIndex;
|
|
var animeCoordinates = StructureBuilder.buildAnimeCoordinates();
|
|
|
|
if (this._animeSimple !== null) {
|
|
frameIndex = 0;
|
|
spriteIndex = this._animeData.getSpriteIndexFromType(this._motionId, frameIndex, SpriteType.KEY);
|
|
animeCoordinates.xBase = x + 96;
|
|
animeCoordinates.yBase = y + 145;
|
|
this._animeSimple.drawMotion(frameIndex, spriteIndex, this._animeRenderParam, animeCoordinates);
|
|
}
|
|
else {
|
|
UnitRenderer.drawDefaultUnit(this._unit, x + 80, y + 85, this._unitRenderParam);
|
|
}
|
|
},
|
|
|
|
_getTargetHandle: function() {
|
|
var xSrc, ySrc;
|
|
var handle = this._targetClass.getCharChipResourceHandle();
|
|
var isRuntime = handle.getHandleType() === ResourceHandleType.RUNTIME;
|
|
var id = handle.getResourceId();
|
|
var colorIndex = handle.getColorIndex();
|
|
|
|
handle = this._unit.getCharChipResourceHandle();
|
|
xSrc = handle.getSrcX();
|
|
ySrc = handle.getSrcY();
|
|
|
|
return root.createResourceHandle(isRuntime, id, colorIndex, xSrc, ySrc);
|
|
},
|
|
|
|
_getMotionId: function() {
|
|
return MotionIdControl.getWaitId(this._unit, null);
|
|
}
|
|
}
|
|
);
|
|
|
|
var MultiClassParameterWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
|
|
setClassParameterData: function(targetUnit, classEntry) {
|
|
this._scrollbar = createScrollbarObject(StatusScrollbar, this);
|
|
this._scrollbar.enableStatusBonus(true);
|
|
this._scrollbar.setStatusFromUnit(targetUnit);
|
|
this.setBonusStatus(targetUnit, classEntry);
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
// moveScrollbarCursorではなく、moveScrollbarContentを呼び出す。
|
|
// カーソル動作を発生させると、MultiClassChangeScreenの_classSelectWindowが高速化する。
|
|
this._scrollbar.moveScrollbarContent();
|
|
|
|
return MoveResult.CONTINUE;
|
|
},
|
|
|
|
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);
|
|
},
|
|
|
|
setBonusStatus: function(unit, targetClassEntry) {
|
|
var i, bonusArray, bonusArrayTarget;
|
|
var newBonusArray = [];
|
|
var count = ParamGroup.getParameterCount();
|
|
|
|
if (targetClassEntry.isChange) {
|
|
bonusArray = this.getClassBonusArray(unit.getClass());
|
|
bonusArrayTarget = this.getClassBonusArray(targetClassEntry.cls);
|
|
for (i = 0; i < count; i++) {
|
|
newBonusArray[i] = bonusArrayTarget[i] - bonusArray[i];
|
|
}
|
|
}
|
|
else {
|
|
for (i = 0; i < count; i++) {
|
|
newBonusArray[i] = 0;
|
|
}
|
|
}
|
|
|
|
this._scrollbar.setStatusBonus(newBonusArray);
|
|
},
|
|
|
|
getClassBonusArray: function(cls) {
|
|
var i;
|
|
var count = ParamGroup.getParameterCount();
|
|
var bonusArray = [];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
bonusArray[i] = ParamGroup.getParameterBonus(cls, i);
|
|
}
|
|
|
|
return bonusArray;
|
|
},
|
|
|
|
notifyNewClass: function(unit, cls) {
|
|
this._scrollbar.setStatusFromUnit(unit);
|
|
this.setBonusStatus(unit, cls);
|
|
}
|
|
}
|
|
);
|
|
|
|
var MultiClassSelectWindow = defineObject(BaseWindow,
|
|
{
|
|
_scrollbar: null,
|
|
|
|
setClassSelectData: function(unit, classEntryArray) {
|
|
var i, count;
|
|
|
|
this._scrollbar = createScrollbarObject(MultiClassSelectScrollbar, this);
|
|
this._scrollbar.setScrollFormation(1, 7);
|
|
this._scrollbar.resetScrollData();
|
|
|
|
count = classEntryArray.length;
|
|
for (i = 0; i < count; i++) {
|
|
this._scrollbar.objectSet(classEntryArray[i]);
|
|
}
|
|
|
|
this._scrollbar.objectSetEnd();
|
|
|
|
this._scrollbar.setActive(true);
|
|
},
|
|
|
|
moveWindowContent: function() {
|
|
return this._scrollbar.moveInput();
|
|
},
|
|
|
|
drawWindowContent: function(x, y) {
|
|
this._scrollbar.drawScrollbar(x, y);
|
|
},
|
|
|
|
getWindowWidth: function() {
|
|
return 160;
|
|
},
|
|
|
|
getWindowHeight: function() {
|
|
return SceneManager.getLastScreen().getTotalWindowHeight();
|
|
},
|
|
|
|
enableSelectCursor: function(isActive) {
|
|
this._scrollbar.enableSelectCursor(isActive);
|
|
},
|
|
|
|
getRecentlyInputType: function() {
|
|
return this._scrollbar.getRecentlyInputType();
|
|
},
|
|
|
|
getClassEntryIndex: function() {
|
|
return this._scrollbar.getIndex();
|
|
}
|
|
}
|
|
);
|
|
|
|
var MultiClassSelectScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
var length = this._getTextLength();
|
|
var textui = this.getParentTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
|
|
if (!object.isChange) {
|
|
color = ColorValue.DISABLE;
|
|
}
|
|
|
|
TextRenderer.drawKeywordText(x, y, object.name, length, color, font);
|
|
},
|
|
|
|
playSelectSound: function() {
|
|
var object = this.getObject();
|
|
var isSelect = true;
|
|
|
|
if (!object.isChange) {
|
|
isSelect = false;
|
|
}
|
|
|
|
if (isSelect) {
|
|
MediaControl.soundDirect('commandselect');
|
|
}
|
|
else {
|
|
MediaControl.soundDirect('operationblock');
|
|
}
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return DefineControl.getTextPartsWidth();
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return DefineControl.getTextPartsHeight();
|
|
},
|
|
|
|
_getTextLength: function() {
|
|
return this.getObjectWidth();
|
|
}
|
|
}
|
|
);
|
|
|
|
|
|
//------------------------------------------------------------------
|
|
|
|
|
|
var MetamorphozeScreen = defineObject(MultiClassChangeScreen,
|
|
{
|
|
drawScreenBottomText: function(textui) {
|
|
var metamorphozeData = this._classEntryArray[this._currentIndex].metamorphozeData;
|
|
|
|
if (metamorphozeData !== null) {
|
|
TextRenderer.drawScreenBottomText(metamorphozeData.getDescription(), textui);
|
|
}
|
|
else {
|
|
TextRenderer.drawScreenBottomText('', textui);
|
|
}
|
|
},
|
|
|
|
getScreenInteropData: function() {
|
|
return root.queryScreen('Metamorphoze');
|
|
},
|
|
|
|
_setScreenResult: function() {
|
|
this._returnData = this._classEntryArray[this._currentIndex].metamorphozeData;
|
|
},
|
|
|
|
_getClassEntryArray: function(screenParam) {
|
|
var i, classEntry, metamorphozeData;
|
|
var unit = screenParam.unit;
|
|
var count = screenParam.refList.getTypeCount();
|
|
var classEntryArray = [];
|
|
|
|
for (i = 0; i < count; i++) {
|
|
metamorphozeData = screenParam.refList.getTypeData(i);
|
|
|
|
classEntry = StructureBuilder.buildMultiClassEntry();
|
|
classEntry.cls = metamorphozeData.getClass();
|
|
classEntry.isChange = MetamorphozeControl.isMetamorphozeAllowed(unit, metamorphozeData);
|
|
if (classEntry.isChange) {
|
|
classEntry.name = metamorphozeData.getName();
|
|
}
|
|
else {
|
|
classEntry.name = StringTable.HideData_Question;
|
|
}
|
|
|
|
classEntry.metamorphozeData = metamorphozeData;
|
|
|
|
classEntryArray.push(classEntry);
|
|
}
|
|
|
|
return classEntryArray;
|
|
},
|
|
|
|
_getQuestionMessage: function() {
|
|
return StringTable.Metamorphoze_Change;
|
|
}
|
|
}
|
|
);
|