//-----------------------------------------------------------------------------
// Window_DebugEdit
//
// The window for displaying switches and variables on the debug screen.
/**
* The window for displaying switches and variables on the debug screen.
*
* @class
* @extends Window_Selectable
*/
function Window_DebugEdit() {
this.initialize(...arguments);
}
Window_DebugEdit.prototype = Object.create(Window_Selectable.prototype);
Window_DebugEdit.prototype.constructor = Window_DebugEdit;
Window_DebugEdit.prototype.initialize = function(rect) {
Window_Selectable.prototype.initialize.call(this, rect);
this._mode = "switch";
this._topId = 1;
this.refresh();
};
/**
* Get the maximum amount of items in the window
*
* @return {number} Maximum number of items in the window
*/
Window_DebugEdit.prototype.maxItems = function() {
return 10;
};
/**
* Draws the item at a given index
*
* @param {number} index - The index of the item to draw
*/
Window_DebugEdit.prototype.drawItem = function(index) {
const dataId = this._topId + index;
const idText = dataId.padZero(4) + ":";
const idWidth = this.textWidth(idText);
const statusWidth = this.textWidth("-00000000");
const name = this.itemName(dataId);
const status = this.itemStatus(dataId);
const rect = this.itemLineRect(index);
this.resetTextColor();
this.drawText(idText, rect.x, rect.y, rect.width);
rect.x += idWidth;
rect.width -= idWidth + statusWidth;
this.drawText(name, rect.x, rect.y, rect.width);
this.drawText(status, rect.x + rect.width, rect.y, statusWidth, "right");
};
/**
* Gets the name of the switch/variable at the given data id
*
* @param {number} dataId - The data id of the item
* @return {string} The switch/variable (item) name
*/
Window_DebugEdit.prototype.itemName = function(dataId) {
if (this._mode === "switch") {
return $dataSystem.switches[dataId];
} else {
return $dataSystem.variables[dataId];
}
};
/**
* Gets the status of the switch/variable at the given data id
*
* @param {number} dataId - The data id of the item
* @return {string} The switch/variable (item) status
*/
Window_DebugEdit.prototype.itemStatus = function(dataId) {
if (this._mode === "switch") {
return $gameSwitches.value(dataId) ? "[ON]" : "[OFF]";
} else {
return String($gameVariables.value(dataId));
}
};
/**
* Sets the mode of the window
*
* @param {string} mode - The new mode of the window
*/
Window_DebugEdit.prototype.setMode = function(mode) {
if (this._mode !== mode) {
this._mode = mode;
this.refresh();
}
};
/**
* Sets the top id of the window
*
* @param {number} id - The new top id
*/
Window_DebugEdit.prototype.setTopId = function(id) {
if (this._topId !== id) {
this._topId = id;
this.refresh();
}
};
/**
* Get the currently selected item's id
*
* @return {number} The current id
*/
Window_DebugEdit.prototype.currentId = function() {
return this._topId + this.index();
};
Window_DebugEdit.prototype.update = function() {
Window_Selectable.prototype.update.call(this);
if (this.active) {
if (this._mode === "switch") {
this.updateSwitch();
} else {
this.updateVariable();
}
}
};
/**
* Update for the switch mode
*/
Window_DebugEdit.prototype.updateSwitch = function() {
if (Input.isRepeated("ok")) {
const switchId = this.currentId();
this.playCursorSound();
$gameSwitches.setValue(switchId, !$gameSwitches.value(switchId));
this.redrawCurrentItem();
}
};
/**
* Update for the variable mode
*/
Window_DebugEdit.prototype.updateVariable = function() {
const variableId = this.currentId();
const value = $gameVariables.value(variableId);
if (typeof value === "number") {
const newValue = value + this.deltaForVariable();
if (value !== newValue) {
$gameVariables.setValue(variableId, newValue);
this.playCursorSound();
this.redrawCurrentItem();
}
}
};
/**
* Get the amount to adjust the variable by
*
* @return {number} The amount to adjust the variable by
*/
Window_DebugEdit.prototype.deltaForVariable = function() {
if (Input.isRepeated("right")) {
return 1;
} else if (Input.isRepeated("left")) {
return -1;
} else if (Input.isRepeated("pagedown")) {
return 10;
} else if (Input.isRepeated("pageup")) {
return -10;
}
return 0;
};