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

166 lines
4.5 KiB
JavaScript

var VariableScreen = defineObject(BaseScreen,
{
_variableWindow: null,
_pageChanger: null,
setScreenData: function(screenParam) {
this._prepareScreenMemberData(screenParam);
this._completeScreenMemberData(screenParam);
},
moveScreenCycle: function() {
var index, table;
this._pageChanger.movePage();
if (this._pageChanger.checkPage()) {
index = this._pageChanger.getPageIndex();
table = root.getMetaSession().getVariableTable(index);
this._variableWindow.setVariablePage(this._createVariableArray(table));
}
return this._variableWindow.moveWindow();
},
drawScreenCycle: function() {
var x = LayoutControl.getCenterX(-1, this._variableWindow.getWindowWidth());
var y = LayoutControl.getCenterY(-1, this._variableWindow.getWindowHeight());
this._variableWindow.drawWindow(x, y);
this._pageChanger.drawPage(x, y);
},
drawScreenBottomText: function(textui) {
var text;
var index = this._variableWindow.getVariableIndex();
var variableTable = root.getMetaSession().getVariableTable(this._activePageIndex);
text = variableTable.getVariableDescription(index);
TextRenderer.drawScreenBottomText(text, textui);
},
getScreenInteropData: function() {
return root.queryScreen('Variable');
},
_prepareScreenMemberData: function(screenParam) {
this._variableWindow = createWindowObject(VariableWindow, this);
this._pageChanger = createObject(HorizontalPageChanger);
},
_completeScreenMemberData: function(screenParam) {
this._variableWindow.setVariableWindowData();
this._variableWindow.setVariablePage(this._createVariableArray(root.getMetaSession().getVariableTable(0)));
this._pageChanger.setPageData(6, this._variableWindow.getWindowWidth(), this._variableWindow.getWindowHeight());
},
_createVariableArray: function(variableTable) {
var i, count, data;
var variableArray = [];
count = variableTable.getVariableCount();
for (i = 0; i < count; i++) {
data = {};
data.name = variableTable.getVariableName(i);
data.variable = variableTable.getVariable(i);
data.handle = variableTable.getVariableResourceHandle(i);
variableArray.push(data);
}
return variableArray;
}
}
);
var VariableWindow = defineObject(BaseWindow,
{
_scrollbar: null,
setVariableWindowData: function() {
var count = LayoutControl.getObjectVisibleCount(DefineControl.getTextPartsHeight(), 12);
this._scrollbar = createScrollbarObject(VariableScrollbar, this);
this._scrollbar.setActive(true);
this._scrollbar.setScrollFormation(1, count);
},
setVariablePage: function(objectArray) {
this._scrollbar.setObjectArray(objectArray);
},
moveWindowContent: function() {
var input = this._scrollbar.moveInput();
var result = MoveResult.CONTINUE;
if (input === ScrollbarInput.CANCEL) {
result = MoveResult.END;
}
return result;
},
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);
},
getVariableIndex: function() {
return this._scrollbar.getIndex();
}
}
);
var VariableScrollbar = defineObject(BaseScrollbar,
{
drawScrollContent: function(x, y, object, isSelect, index) {
this._drawName(x, y, object, isSelect, index);
this._drawVariable(x, y, object, isSelect, index);
this._drawIcon(x, y, object, isSelect, index);
},
getObjectWidth: function() {
return 400;
},
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();
x += GraphicsFormat.ICON_WIDTH;
TextRenderer.drawKeywordText(x, y, object.name, length, color, font);
},
_drawVariable: function(x, y, object, isSelect, index) {
var textui = this.getParentTextUI();
var color = ColorValue.KEYWORD;
var font = textui.getFont();
var text = object.variable;
x += (this.getObjectWidth() - 50);
TextRenderer.drawKeywordText(x, y, text, -1, color, font);
},
_drawIcon: function(x, y, object, isSelect, index) {
GraphicsRenderer.drawImage(x, y, object.handle, GraphicsType.ICON);
},
_getTextLength: function() {
return this.getObjectWidth();
}
}
);