slave-princess-charlotte/data/Script/base/base-listcommand.js
2025-10-12 13:17:46 -05:00

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;
}
}
);