251 lines
5.2 KiB
JavaScript
251 lines
5.2 KiB
JavaScript
|
|
var ListCommandManagerMode = {
|
|
TITLE: 0,
|
|
OPEN: 1
|
|
};
|
|
|
|
var BaseListCommandManager = defineObject(BaseObject,
|
|
{
|
|
_groupArray: null,
|
|
_commandScrollbar: null,
|
|
_currentTarget: null,
|
|
|
|
openListCommandManager: function() {
|
|
this._commandScrollbar = createScrollbarObject(ListCommandScrollbar, this);
|
|
this._commandScrollbar.setActive(true);
|
|
this.rebuildCommand();
|
|
this._playCommandOpenSound();
|
|
this.changeCycleMode(ListCommandManagerMode.TITLE);
|
|
},
|
|
|
|
moveListCommandManager: function() {
|
|
var mode = this.getCycleMode();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (mode === ListCommandManagerMode.TITLE) {
|
|
result = this._moveTitle();
|
|
}
|
|
else if (mode === ListCommandManagerMode.OPEN) {
|
|
result = this._moveOpen();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
drawListCommandManager: function() {
|
|
var mode = this.getCycleMode();
|
|
|
|
if (mode === ListCommandManagerMode.TITLE) {
|
|
this._drawTitle();
|
|
}
|
|
else if (mode === ListCommandManagerMode.OPEN) {
|
|
this._drawOpen();
|
|
}
|
|
},
|
|
|
|
rebuildCommand: function() {
|
|
var i, count, arr;
|
|
|
|
this._groupArray = [];
|
|
this.configureCommands(this._groupArray);
|
|
|
|
count = this._groupArray.length;
|
|
arr = [];
|
|
for (i = 0; i < count; i++) {
|
|
this._groupArray[i]._listCommandManager = this;
|
|
if (this._groupArray[i].isCommandDisplayable()) {
|
|
arr.push(this._groupArray[i]);
|
|
}
|
|
}
|
|
|
|
this._commandScrollbar.setScrollFormation(1, arr.length);
|
|
this._commandScrollbar.setObjectArray(arr);
|
|
|
|
this._groupArray = [];
|
|
},
|
|
|
|
rebuildCommandEx: function() {
|
|
var prevIndex = this._commandScrollbar.getIndex();
|
|
|
|
this.rebuildCommand();
|
|
|
|
if (prevIndex >= this._commandScrollbar.getObjectCount()) {
|
|
prevIndex = 0;
|
|
}
|
|
|
|
this._commandScrollbar.setIndex(prevIndex);
|
|
},
|
|
|
|
setListCommandUnit: function(unit) {
|
|
this._currentTarget = unit;
|
|
},
|
|
|
|
getListCommandUnit: function() {
|
|
return this._currentTarget;
|
|
},
|
|
|
|
getPositionX: function() {
|
|
return 0;
|
|
},
|
|
|
|
getPositionY: function() {
|
|
return 0;
|
|
},
|
|
|
|
getCommandTextUI: function() {
|
|
return root.queryTextUI('mapcommand_title');
|
|
},
|
|
|
|
configureCommands: function(groupArray) {
|
|
},
|
|
|
|
getCommandScrollbar: function() {
|
|
return this._commandScrollbar;
|
|
},
|
|
|
|
_moveTitle: function() {
|
|
var object;
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (InputControl.isSelectAction()) {
|
|
object = this._commandScrollbar.getObject();
|
|
if (object === null) {
|
|
return result;
|
|
}
|
|
|
|
object.openCommand();
|
|
|
|
this._playCommandSelectSound();
|
|
this.changeCycleMode(ListCommandManagerMode.OPEN);
|
|
}
|
|
else if (InputControl.isCancelAction()) {
|
|
this._playCommandCancelSound();
|
|
this._checkTracingScroll();
|
|
result = MoveResult.END;
|
|
}
|
|
else {
|
|
this._commandScrollbar.moveScrollbarCursor();
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_moveOpen: function() {
|
|
var object = this._commandScrollbar.getObject();
|
|
var result = MoveResult.CONTINUE;
|
|
|
|
if (object.moveCommand() !== MoveResult.CONTINUE) {
|
|
this._commandScrollbar.setActive(true);
|
|
this.changeCycleMode(ListCommandManagerMode.TITLE);
|
|
}
|
|
|
|
return result;
|
|
},
|
|
|
|
_drawTitle: function() {
|
|
var x = this.getPositionX();
|
|
var y = this.getPositionY();
|
|
|
|
this._commandScrollbar.drawScrollbar(x, y);
|
|
},
|
|
|
|
_drawOpen: function() {
|
|
var object = this._commandScrollbar.getObject();
|
|
|
|
object.drawCommand();
|
|
},
|
|
|
|
_checkTracingScroll: function() {
|
|
var session = root.getCurrentSession();
|
|
var x = session.getMapCursorX();
|
|
var y = session.getMapCursorY();
|
|
|
|
MouseControl.changeCursorFromMap(x, y);
|
|
},
|
|
|
|
_playCommandOpenSound: function() {
|
|
MediaControl.soundDirect('commandopen');
|
|
},
|
|
|
|
_playCommandSelectSound: function() {
|
|
MediaControl.soundDirect('commandselect');
|
|
},
|
|
|
|
_playCommandCancelSound: function() {
|
|
MediaControl.soundDirect('commandcancel');
|
|
}
|
|
}
|
|
);
|
|
|
|
var BaseCommand = defineObject(BaseObject,
|
|
{
|
|
_commandlayout: null,
|
|
|
|
setCommandLayout: function(commandlayout) {
|
|
this._commandlayout = commandlayout;
|
|
},
|
|
|
|
getCommandLayout: function() {
|
|
return this._commandlayout;
|
|
},
|
|
|
|
getCommandName: function() {
|
|
if (this._commandlayout === null) {
|
|
return '';
|
|
}
|
|
|
|
return this._commandlayout.getName();
|
|
}
|
|
}
|
|
);
|
|
|
|
var BaseListCommand = defineObject(BaseCommand,
|
|
{
|
|
_listCommandManager: null,
|
|
|
|
initialize: function() {
|
|
},
|
|
|
|
openCommand: function() {
|
|
},
|
|
|
|
moveCommand: function() {
|
|
return MoveResult.END;
|
|
},
|
|
|
|
drawCommand: function() {
|
|
},
|
|
|
|
isCommandDisplayable: function() {
|
|
return true;
|
|
}
|
|
}
|
|
);
|
|
|
|
var ListCommandScrollbar = defineObject(BaseScrollbar,
|
|
{
|
|
drawScrollContent: function(x, y, object, isSelect, index) {
|
|
var textui = this.getParentInstance().getCommandTextUI();
|
|
var color = textui.getColor();
|
|
var font = textui.getFont();
|
|
var pic = textui.getUIImage();
|
|
|
|
TextRenderer.drawFixedTitleText(x, y - 10, object.getCommandName(), color, font, TextFormat.CENTER, pic, this._getPartsCount());
|
|
},
|
|
|
|
drawDescriptionLine: function(x, y) {
|
|
},
|
|
|
|
getObjectWidth: function() {
|
|
return (4 + 2) * 30;
|
|
},
|
|
|
|
getObjectHeight: function() {
|
|
return 32;
|
|
},
|
|
|
|
_getPartsCount: function() {
|
|
return 4;
|
|
}
|
|
}
|
|
);
|