OMORI_Android/www.sc/js/plugins/Omori Main Menu - Scene Options.js
2024-09-23 01:10:28 +03:00

1919 lines
74 KiB
JavaScript

// //=============================================================================
// // * Start
// //=============================================================================
// Scene_Menu.prototype.start = function() {
// Scene_MenuBase.prototype.start.call(this);
// if (!$tits) {
// // //TEST
// this._commandWindow.select(4);
// // this._statusWindow.select(3);
// this._commandWindow.deactivate();
// this.commandOptions();
// // $tits = true;
// }
// };
// window['$tits'] = false;
// FIX ISSUE WITH CONTROLLER WINDOW WHERE EXITING IT MAKES
// A CURSOR BRIEFLY APPEAR WHEN CLOSING THE SCENE
//=============================================================================
// * Key Names
//=============================================================================
KeyboardInput.gamepadNames = {
0: 'ok', // A
1: 'cancel', // B
2: 'shift', // X
3: 'menu', // Y
4: 'LB', // LB
5: 'RB', // RB
6: 'SIX6',
7: 'SEVEN7',
8: 'EIGHT8',
9: 'NINE9',
10: 'TEN10',
11: 'ELEVEN11',
12: 'up', // D-pad up
13: 'down', // D-pad down
14: 'left', // D-pad left
15: 'right', // D-pad right
16: 'SIXTEEN16',
};
//=============================================================================
// * Key Names
//=============================================================================
KeyboardInput.keyNames = {
0: 'NO KEYCODE',
3: 'break',
8: 'backspace',
9: 'tab',
12: 'clear',
13: 'enter',
16: 'shift',
// 17: 'ctrl',
// 18: 'alt',
19: 'pause/break',
20: 'caps lock',
21: 'hangul',
25: 'hanja',
27: 'escape',
28: 'conversion',
29: 'non-conversion',
32: 'spacebar',
33: 'page up',
34: 'page down',
35: 'end',
36: 'home',
37: 'left arrow',
38: 'up arrow',
39: 'right arrow',
40: 'down arrow',
41: 'select',
42: 'print',
43: 'execute',
44: 'Print Screen',
45: 'insert',
46: 'delete',
47: 'help',
48: '0',
49: '1',
50: '2',
51: '3',
52: '4',
53: '5',
54: '6',
55: '7',
56: '8',
57: '9',
58: ':',
59: 'semicolon (firefox), equals',
60: '<',
61: 'equals (firefox)',
63: 'ß',
64: '@ (firefox)',
65: 'a',
66: 'b',
67: 'c',
68: 'd',
69: 'e',
70: 'f',
71: 'g',
72: 'h',
73: 'i',
74: 'j',
75: 'k',
76: 'l',
77: 'm',
78: 'n',
79: 'o',
80: 'p',
81: 'q',
82: 'r',
83: 's',
84: 't',
85: 'u',
86: 'v',
87: 'w',
88: 'x',
89: 'y',
90: 'z',
91: 'Windows Key / Left ⌘ / Chromebook Search key',
92: 'right window key',
93: 'Windows Menu / Right ⌘',
95: 'sleep',
96: 'numpad 0',
97: 'numpad 1',
98: 'numpad 2',
99: 'numpad 3',
100: 'numpad 4',
101: 'numpad 5',
102: 'numpad 6',
103: 'numpad 7',
104: 'numpad 8',
105: 'numpad 9',
106: 'multiply',
107: 'add',
108: 'numpad period (firefox)',
109: 'subtract',
110: 'decimal point',
111: 'divide',
112: 'f1',
113: 'f2',
114: 'f3',
// 115: 'f4',
// 116: 'f5',
117: 'f6',
118: 'f7',
119: 'f8',
// 120: 'f9',
121: 'f10',
122: 'f11',
123: 'f12',
124: 'f13',
125: 'f14',
126: 'f15',
127: 'f16',
128: 'f17',
129: 'f18',
130: 'f19',
131: 'f20',
132: 'f21',
133: 'f22',
134: 'f23',
135: 'f24',
144: 'num lock',
145: 'scroll lock',
160: '^',
161: '!',
162: '؛ (arabic semicolon)',
163: '#',
164: '$',
165: 'ù',
166: 'page backward',
167: 'page forward',
168: 'refresh',
169: 'closing paren (AZERTY)',
170: '*',
171: '~ + * key',
172: 'home key',
173: 'minus (firefox), mute/unmute',
174: 'decrease volume level',
175: 'increase volume level',
176: 'next',
177: 'previous',
178: 'stop',
179: 'play/pause',
180: 'e-mail',
181: 'mute/unmute (firefox)',
182: 'decrease volume level (firefox)',
183: 'increase volume level (firefox)',
186: ';',
187: 'equal sign',
188: 'comma',
189: 'dash',
190: '.',
191: 'forward slash / ç',
192: 'grave accent / ñ / æ / ö',
193: '?, / or °',
194: 'numpad period (chrome)',
219: '[',
220: "\\",
221: ']',
222: '\'',
223: '`',
224: 'left or right ⌘ key (firefox)',
225: 'altgr',
226: '< /git >, left back slash',
230: 'GNOME Compose Key',
231: 'ç',
233: 'XF86Forward',
234: 'XF86Back',
235: 'non-conversion',
240: 'alphanumeric',
242: 'hiragana/katakana',
243: 'half-width/full-width',
244: 'kanji',
251: "unlock trackpad (Chrome/Edge)",
255: 'toggle touchpad',
};
//=============================================================================
// * Get Keyboard Key Name
//=============================================================================
KeyboardInput.getKeyName = function(key) {
// Get Key Name
var name = this.keyNames[key];
return name ? name : 'ERROR!';
};
//=============================================================================
// * Get Gamepad Button Name Mapper
//=============================================================================
KeyboardInput.getGamepadButtonName = function(button) {
// Get Key Name
var name = this.gamepadNames[button];
return name ? name : 'ERROR!';
};
//=============================================================================
// ** Scene_OmoMenuOptions
//-----------------------------------------------------------------------------
// The scene class of the equipment screen.
//=============================================================================
function Scene_OmoMenuOptions() { this.initialize.apply(this, arguments); }
Scene_OmoMenuOptions.prototype = Object.create(Scene_OmoMenuBase.prototype);
Scene_OmoMenuOptions.prototype.constructor = Scene_OmoMenuOptions;
//=============================================================================
// * Create
//=============================================================================
Scene_OmoMenuOptions.prototype.create = function() {
// Super Call
Scene_OmoMenuBase.prototype.create.call(this);
this.createHelpWindow();
this.createStatusWindows();
this.createGoldWindow();
this.createGeneralOptionsWindow();
this.createAudioOptionsWindow();
this.createControllerOptionsWindow();
this.createSystemOptionsWindow();
this.createOptionCategoriesWindow();
// this.createHelpWindow();
this.createCommandWindow();
this.createExitPromptWindow();
};
//=============================================================================
// * Initialize Atlas Lists
//=============================================================================
Scene_OmoMenuOptions.prototype.initAtlastLists = function() {
// Super Call
Scene_MenuBase.prototype.initAtlastLists.call(this);
// Load Input Icons
ImageManager.loadInputIcons();
};
//=============================================================================
// * Start
//=============================================================================
Scene_OmoMenuOptions.prototype.start = function() {
// Super Call
Scene_OmoMenuBase.prototype.start.call(this);
// Show Windows
this.showWindows();
};
//=============================================================================
// * Create Help Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createHelpWindow = function() {
// Create Help Window
this._helpWindow = new Window_OmoMenuOptionsHelp();
this._helpWindow.x = 10;
this._helpWindow.y = 10;
this.addChild(this._helpWindow);
};
//=============================================================================
// * Create Gold Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createGoldWindow = function() {
this._goldWindow = new Window_Gold(0, 0);
this._goldWindow.x = (Graphics.boxWidth - this._goldWindow.width) - 10;
this._goldWindow.y = (this._commandWindow.y + this._commandWindow.height) + 8;
this._goldWindow.openness = 255;
this._goldWindow.close();
this.addChild(this._goldWindow);
};
//=============================================================================
// * Create Option Categories Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createOptionCategoriesWindow = function() {
// Create Options Categories Window
this._optionCategoriesWindow = new Window_OmoMenuOptionsCategory();
this._optionCategoriesWindow.x = 10;
this._optionCategoriesWindow.y = 10;
this._optionCategoriesWindow.deactivate();
this._optionCategoriesWindow.setHandler('ok', this.onCategoryOk.bind(this));
this._optionCategoriesWindow.setHandler('cancel', this.onCategoryCancel.bind(this));
this.addChild(this._optionCategoriesWindow);
// Get Option Windows
var optionWindows = this.optionWindows();
// Set Option Categories Window Option Windows
this._optionCategoriesWindow._optionWindows = optionWindows;
// Set Help Window for Option Windows
for (var i = 0; i < optionWindows.length; i++) { optionWindows[i]._helpWindow = this._helpWindow; };
// Call Update Help
this._optionCategoriesWindow.callUpdateHelp();
};
//=============================================================================
// * Create General Options Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createGeneralOptionsWindow = function() {
// Create General Options Window
this._generalOptionsWindow = new Window_OmoMenuOptionsGeneral();
this._generalOptionsWindow.x = 10;
this._generalOptionsWindow.y = 10;
this._generalOptionsWindow.setHandler('cancel', this.onOptionWindowCancel.bind(this));
this._generalOptionsWindow.height = 0;
this._generalOptionsWindow.visible = false;
this.addChild(this._generalOptionsWindow);
};
//=============================================================================
// * Create Audio Options Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createAudioOptionsWindow = function() {
// Create Audio Options Window
this._audioOptionsWindow = new Window_OmoMenuOptionsAudio();
this._audioOptionsWindow.x = 10;
this._audioOptionsWindow.y = 10;
this._audioOptionsWindow.setHandler('cancel', this.onOptionWindowCancel.bind(this));
this._audioOptionsWindow.height = 0;
this._audioOptionsWindow.visible = false;
this.addChild(this._audioOptionsWindow);
};
//=============================================================================
// * Create Controller Options Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createControllerOptionsWindow = function() {
// Create Control Options Window
this._controlOptionsWindow = new Window_OmoMenuOptionsControls();
this._controlOptionsWindow.x = 10;
this._controlOptionsWindow.y = 10;
this._controlOptionsWindow.setHandler('cancel', this.onOptionWindowCancel.bind(this));
this._controlOptionsWindow.height = 0;
this._controlOptionsWindow.visible = false;
this.addChild(this._controlOptionsWindow);
};
//=============================================================================
// * Create System Options Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createSystemOptionsWindow = function() {
// Create System Option Window
this._systemOptionsWindow = new Window_OmoMenuOptionsSystem();
this._systemOptionsWindow.x = 10;
this._systemOptionsWindow.y = 10;
this._systemOptionsWindow.setHandler('cancel', this.onOptionWindowCancel.bind(this));
this._systemOptionsWindow.setHandler('restoreConfig', () => {
ConfigManager.restoreDefaultConfig();
this._controlOptionsWindow.makeOptionsList()
this._generalOptionsWindow.makeOptionsList();
this._audioOptionsWindow.makeOptionsList();
this._controlOptionsWindow.refresh()
this._controlOptionsWindow.select(0);
this._generalOptionsWindow.refresh();
this._generalOptionsWindow.select(0);
this._audioOptionsWindow.refresh();
this._systemOptionsWindow.refresh();
this._systemOptionsWindow.activate();
Input.clear();
});
this._systemOptionsWindow.setHandler('load', this.goToLoad.bind(this));
this._systemOptionsWindow.setHandler('toTitleScreen', this.startExitPrompt.bind(this, 1));
this._systemOptionsWindow.setHandler('exit', this.startExitPrompt.bind(this, 0));
this.addChild(this._systemOptionsWindow);
};
//=============================================================================
// * Create Exit Prompt Window
//=============================================================================
Scene_OmoMenuOptions.prototype.createExitPromptWindow = function() {
// Create Exit Prompt Window
this._exitPromptWindow = new Window_OmoMenuOptionsExitPromptWindow();
this._exitPromptWindow.x = (Graphics.width - this._exitPromptWindow.width) / 2;
this._exitPromptWindow.y = (Graphics.height - this._exitPromptWindow.height) / 2
this._exitPromptWindow.setHandler('yes', this.onExitPromptYes.bind(this));
this._exitPromptWindow.setHandler('cancel', this.onExitPromptCancel.bind(this));
this.addChild(this._exitPromptWindow);
};
//=============================================================================
// * Get All Option Windows
//=============================================================================
Scene_OmoMenuOptions.prototype.optionWindows = function() {
return [this._generalOptionsWindow, this._audioOptionsWindow, this._controlOptionsWindow, this._systemOptionsWindow]
}
//=============================================================================
// * On Option Category Ok
//=============================================================================
Scene_OmoMenuOptions.prototype.onCategoryOk = function() {
// Get Category Window
var categoryWindow = this.optionWindows()[this._optionCategoriesWindow.index()];
// If Category Window Exists
if (categoryWindow) {
categoryWindow.activate();
categoryWindow.select(0);
} else {
// Activate Categories Window
this._optionCategoriesWindow.activate();
};
};
//=============================================================================
// * On Option Category Cancel
//=============================================================================
Scene_OmoMenuOptions.prototype.onCategoryCancel = function() {
// Save Configuration
ConfigManager.save();
this.hideWindows();
// this._statusWindow.deselect();
// this._statusWindow.deactivate();
// this.queue('hideWindow', this._itemCategoryWindow, 15)
// this.queue('setWaitMode', 'movement');
// // Show Command Window
// this.queue(function() {
// this.popScene();
// SceneManager._nextScene._commandWindow = this._commandWindow;
// SceneManager._nextScene._statusWindow = this._statusWindow;
// }.bind(this))
};
//=============================================================================
// * On Option Window Cancel
//=============================================================================
Scene_OmoMenuOptions.prototype.onOptionWindowCancel = function() {
// Get Category Window
var categoryWindow = this.optionWindows()[this._optionCategoriesWindow.index()];
// If Category Window Exists
if (categoryWindow) {
categoryWindow.select(0);
categoryWindow.refresh();
};
// Clear Help Window Text
this._helpWindow.clear()
// Activate Categories Window
this._optionCategoriesWindow.activate();
};
//=============================================================================
// * Restore Default Configuration
//=============================================================================
/*Scene_OmoMenuBase.prototype.restoreDefaultConfiguration = function() {
}*/
//=============================================================================
// * Go To Load
//=============================================================================
Scene_OmoMenuBase.prototype.goToLoad = function() {
// Save Configuration
ConfigManager.save();
// Call Save Menu
SceneManager.push(Scene_OmoriFile);
SceneManager._stack.pop();
SceneManager._nextScene.setup(false, true);
};
//=============================================================================
// * Start Exit Prompt
//=============================================================================
Scene_OmoMenuBase.prototype.startExitPrompt = function(type) {
this._exitPromptWindow.refresh(type);
this._exitPromptWindow.select(1);
this._exitPromptWindow.open();
this._exitPromptWindow.activate();
};
//=============================================================================
// * On Exit Prompt Window Cancel
//=============================================================================
Scene_OmoMenuBase.prototype.onExitPromptCancel = function() {
this._exitPromptWindow.deactivate();
this._exitPromptWindow.close();
this._systemOptionsWindow.activate();
}
//=============================================================================
// * On Exit Prompt Window Yes
//=============================================================================
Scene_OmoMenuBase.prototype.onExitPromptYes = function() {
// Fadeout All
this.fadeOutAll();
// Exit the game
let type = this._exitPromptWindow._type;
if(!type) {SceneManager.exit();}
else {SceneManager.goto(Scene_OmoriTitleScreen)}
};
//=============================================================================
// * Start
//=============================================================================
Scene_OmoMenuOptions.prototype.update = function() {
// Super Call
Scene_OmoMenuBase.prototype.update.call(this);
// Update Keyboard Input
KeyboardInput.update()
};
//=============================================================================
// * Show Windows
//=============================================================================
Scene_OmoMenuBase.prototype.showWindows = function() {
// Show Categories Window and Hide Status
this.queue(function() {
var duration = 15;
// Go Through Status Windows
for (var i = 0; i < this._statusWindow._statusWindows.length; i++) {
var obj = this._statusWindow._statusWindows[i];
var data = { obj: obj, properties: ['y', 'contentsOpacity'], from: {y: obj.y, contentsOpacity: obj.contentsOpacity}, to: {y: 110, contentsOpacity: 0}, durations: {y: duration, contentsOpacity: duration}}
data.easing = Object_Movement.easeInCirc;
this.move.startMove(data);
};
var obj = this._optionCategoriesWindow;
var duration = 10;
var data = { obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: 64}, durations: {y: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}.bind(this))
this.queue('setWaitMode', 'movement');
// Show Categories Window and Hide Status
this.queue(function() {
var duration = 15;
var windows = this.optionWindows()
// Go Through Option Windows Windows
for (var i = 0; i < windows.length; i++) {
var obj = windows[i];
obj.y = this._optionCategoriesWindow.y;
var data = { obj: obj, properties: ['y', 'height'], from: {y: obj.y, height: obj.height}, to: {y: 108, height: 318}, durations: {y: duration, height: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}
}.bind(this))
this.queue('setWaitMode', 'movement');
// Show Categories Window and Hide Status
this.queue(function() {
var obj = this._helpWindow;
obj.y = Graphics.height - ((obj.height * 2) + 10);
var duration = 10;
var data = { obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: obj.y + obj.height}, durations: {y: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}.bind(this))
this.queue('setWaitMode', 'movement');
// Show Categories Window and Hide Status
this.queue(function() {
this._optionCategoriesWindow.activate();
}.bind(this))
this.queue('setWaitMode', 'movement');
};
//=============================================================================
// * Show Windows
//=============================================================================
Scene_OmoMenuBase.prototype.hideWindows = function() {
// Show Categories Window and Hide Status
this.queue(function() {
var obj = this._helpWindow;
var duration = 10;
var data = { obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: obj.y - obj.height}, durations: {y: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}.bind(this))
this.queue('setWaitMode', 'movement');
// Show Categories Window and Hide Status
this.queue(function() {
this._helpWindow.y = 10;
var duration = 15;
var windows = this.optionWindows();
// Go Through Option Windows Windows
for (var i = 0; i < windows.length; i++) {
var obj = windows[i];
// Set Help window to null and deselect (Prevents visual error)
obj._helpWindow = null;
obj.deselect()
var data = { obj: obj, properties: ['y', 'height'], from: {y: obj.y, height: obj.height}, to: {y: this._optionCategoriesWindow.y, height: 0}, durations: {y: duration, height: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
};
// Go Through Status Windows
for (var i = 0; i < this._statusWindow._statusWindows.length; i++) {
var obj = this._statusWindow._statusWindows[i];
var data = { obj: obj, properties: ['y', 'contentsOpacity'], from: {y: obj.y, contentsOpacity: obj.contentsOpacity}, to: {y: -110, contentsOpacity: 255}, durations: {y: duration, contentsOpacity: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}
}.bind(this))
this.queue('setWaitMode', 'movement');
// Hide categories window
this.queue(function() {
var obj = this._optionCategoriesWindow;
var duration = 10;
var data = { obj: obj, properties: ['y'], from: {y: obj.y}, to: {y: 10}, durations: {y: duration}}
data.easing = Object_Movement.easeOutCirc;
this.move.startMove(data);
}.bind(this))
this.queue('setWaitMode', 'movement');
// Show Command Window
this.queue(function() {
this.popScene();
SceneManager._nextScene._commandWindow = this._commandWindow;
SceneManager._nextScene._statusWindow = this._statusWindow;
}.bind(this))
};
//=============================================================================
// ** Window_OmoMenuOptionsCategory
//-----------------------------------------------------------------------------
// The window for selecting option categories in the options menu
//=============================================================================
function Window_OmoMenuOptionsCategory() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsCategory.prototype = Object.create(Window_Command.prototype);
Window_OmoMenuOptionsCategory.prototype.constructor = Window_OmoMenuOptionsCategory;
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsCategory.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsCategory.prototype.standardPadding = function() { return 10; }
Window_OmoMenuOptionsCategory.prototype.windowWidth = function() { return Graphics.width - 20; }
Window_OmoMenuOptionsCategory.prototype.maxCols = function() { return 4; };
Window_OmoMenuOptionsCategory.prototype.lineHeight = function() { return 24; };
Window_OmoMenuOptionsCategory.prototype.standardFontSize = function() { return LanguageManager.getMessageData("XX_BLUE.Window_OmoMenuOptionsCategory").standardFontSize; };
Window_OmoMenuOptionsCategory.prototype.customCursorRectYOffset = function() { return 4; }
Window_OmoMenuOptionsCategory.prototype.customCursorRectTextXOffset = function() { return 25; }
//=============================================================================
// * Make Command List
//=============================================================================
Window_OmoMenuOptionsCategory.prototype.makeCommandList = function() {
const localization = LanguageManager.getMessageData("XX_BLUE.Omori_Mainmenu_Sceneoptions").commands
this.addCommand(localization[0], 'ok');
this.addCommand(localization[1], 'ok');
// this.addCommand('GAMEPLAY', 'ok');
this.addCommand(localization[2], 'ok');
this.addCommand(localization[3], 'ok');
};
//=============================================================================
// * Item Rect
//=============================================================================
Window_OmoMenuOptionsCategory.prototype.itemRect = function(index) {
// Get rect
var rect = Window_Command.prototype.itemRect.call(this, index);
// rect.width += 20;
rect.y -= 3;
// // If Index 1 (For Visual centering)
// if (index === 1) { rect.x += 20 };
// Return Rect
return rect;
};
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsCategory.prototype.callUpdateHelp = function() {
// Run Original Function
Window_Command.prototype.callUpdateHelp.call(this);
if (this._optionWindows) {
// Get Index
var index = this.index();
for (var i = 0; i < this._optionWindows.length; i++) {
this._optionWindows[i].visible = i === index;
};
};
};
//=============================================================================
// ** Window_OmoMenuOptionsHelp
//-----------------------------------------------------------------------------
// The window for selecting option categories in the options menu
//=============================================================================
function Window_OmoMenuOptionsHelp() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsHelp.prototype = Object.create(Window_Base.prototype);
Window_OmoMenuOptionsHelp.prototype.constructor = Window_OmoMenuOptionsHelp;
//=============================================================================
// * Object Initialization
//=============================================================================
Window_OmoMenuOptionsHelp.prototype.initialize = function() {
// Super Call
Window_Base.prototype.initialize.call(this, 10, 0, this.windowWidth(), this.windowHeight());
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsHelp.prototype.standardPadding = function() { return 8; }
Window_OmoMenuOptionsHelp.prototype.windowHeight = function() { return 44; }
Window_OmoMenuOptionsHelp.prototype.windowWidth = function() { return Graphics.width - 20; }
Window_OmoMenuOptionsHelp.prototype.lineHeight = function() { return 24; };
Window_OmoMenuOptionsHelp.prototype.customCursorRectTextXOffset = function() { return 25; }
//=============================================================================
// * Clear
//=============================================================================
Window_OmoMenuOptionsHelp.prototype.clear = function() { this.contents.clear(); };
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsHelp.prototype.setText = function(text) {
// Clear Contents
this.contents.clear();
// Draw Text
this.contents.drawText(text, 5, 0, this.contents.width, this.contents.height - 8);
};
//=============================================================================
// ** Window_OmoMenuOptionsGeneral
//-----------------------------------------------------------------------------
// The window for showing general options in the options menu.
//=============================================================================
function Window_OmoMenuOptionsGeneral() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsGeneral.prototype = Object.create(Window_Selectable.prototype);
Window_OmoMenuOptionsGeneral.prototype.constructor = Window_OmoMenuOptionsGeneral;
//=============================================================================
// * Object Initialization
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.initialize = function() {
// Make Options List
this.makeOptionsList();
// Super Call
Window_Selectable.prototype.initialize.call(this, 0, 0, this.windowWidth(), this.windowHeight());
// Create Option Cursors
this.createOptionCursors();
this.select(0);
this.refresh();
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsGeneral.prototype.standardPadding = function() { return 8; }
Window_OmoMenuOptionsGeneral.prototype.windowWidth = function () { return Graphics.width - 20; };
Window_OmoMenuOptionsGeneral.prototype.windowHeight = function() { return 318; }
Window_OmoMenuOptionsGeneral.prototype.maxItems = function() { return this._optionsList.length;};
Window_OmoMenuOptionsGeneral.prototype.maxCols = function() { return 1;};
Window_OmoMenuOptionsGeneral.prototype.itemHeight = function() { return 75; };
Window_OmoMenuOptionsGeneral.prototype.spacing = function() { return 5; };
Window_OmoMenuOptionsGeneral.prototype.customCursorRectXOffset = function() { return 15; }
Window_OmoMenuOptionsGeneral.prototype.customCursorRectYOffset = function() { return -18; }
//=============================================================================
// * Height
//=============================================================================
Object.defineProperty(Window_OmoMenuOptionsGeneral.prototype, 'height', {
get: function() { return this._height; },
set: function(value) {
this._height = value;
this._refreshAllParts();
// If Option Cursors Exist
if (this._optionCursors) {
for (var i = 0; i < this._optionCursors.length; i++) {
var sprite = this._optionCursors[i];
sprite.visible = value >= (sprite.y + sprite.height)
};
}
},
configurable: true
});
//=============================================================================
// * Refresh Arrows
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype._refreshArrows = function() {
// Run Original Function
Window_Selectable.prototype._refreshArrows.call(this);
var w = this._width;
var h = this._height;
var p = 28;
var q = p/2;
this._downArrowSprite.move(w - q, h - q);
this._upArrowSprite.move(w - q, q);
};
//=============================================================================
// * Create Option Cursors
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.createOptionCursors = function() {
// Initialize Option Cursors
this._optionCursors = [];
// Create Cursor Sprites
for (var i = 0; i < 4; i++) {
// Create Sprite
var sprite = new Sprite_WindowCustomCursor(undefined, this.customCursorRectBitmapName());
sprite.deactivate();
sprite.visible = false;
sprite.setColorTone([-80, -80, -80, 255]);
this._customCursorRectSpriteContainer.addChild(sprite);
// Add Sprite to Option Cursors
this._optionCursors[i] = sprite;
};
};
Window_OmoMenuOptionsGeneral.prototype._updateArrows = function() {
Window.prototype._updateArrows.call(this);
this._downArrowSprite.visible = this._downArrowSprite.visible && !!this.active;
this._upArrowSprite.visible = this._upArrowSprite.visible && !!this.active;
};
//=============================================================================
// * Make Options List
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.makeOptionsList = function() {
// Get Text
var text = LanguageManager.getPluginText('optionsMenu', 'general')
// Get Config
var config = ConfigManager;
// Get Options
var options = Object.keys(text);
// Initialize Options List
this._optionsList = [];
// Go through Options
for (var i = 0; i < options.length; i++) {
// Get Name
var name = options[i]
// Get Data
var data = text[name];
// Create Option
var option = {header: (data.text + ':'), options: Array.from(data.options), helpText: data.help, spacing: data.spacing};
// If Bool index
if (data.boolIndex) {
// Set Index by state
option.index = config[name] ? 0 : 1
} else {
// Set index
option.index = config[name];
};
// Add Option
this._optionsList.push(option);
};
}
//=============================================================================
// * Draw Item
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.drawItem = function(index) {
// Get Item Rect
var rect = this.itemRect(index);
// Get Data
var data = this._optionsList[index];
// If Data Exists
if (data) {
// Draw Option Segment
this.drawOptionSegment(data.header, data.options, data.spacing, rect);
};
};
//=============================================================================
// * Draw Option Segment
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.drawOptionSegment = function(header, options, spacing, rect) {
// Draw Header
this.contents.drawText(header, rect.x + 50, rect.y + 4, rect.width, 24);
// Go Through Options
for (var i = 0; i < options.length; i++) {
// Draw Options
this.contents.drawText(options[i], rect.x + (100 + (i * spacing)), rect.y + 39, rect.width, 24)
};
};
//=============================================================================
// * Frame Update
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.update = function(index) {
// Check FullScreen Status
var fullScreen = Graphics._isFullScreen();
// Full Screen Check
/*if (!fullScreen && this._optionsList[1].index !== 0) {
this._optionsList[1].index = 0;
this.updateCursor();
};
if (fullScreen && this._optionsList[1].index !== 1) {
this._optionsList[1].index = 1;
this.updateCursor();
};*/
// Run Original Function
if(!!this._processDelay) {
if(this._processDelay > 0) {
this._processDelay--;
if(this._processDelay === 8) {
this._optionsList[this.index()].index === 0 ? Graphics._requestFullScreen() : Graphics._cancelFullScreen();
}
if(this._processDelay <= 0) {
let gamepad = navigator.getGamepads()[Input._lastGamepad];
if(!gamepad) {return;}
for(let button of gamepad.buttons) {
let descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(button), "pressed");
Object.defineProperty(button, "pressed", descriptor);
}
}
return;
}
}
Window_Selectable.prototype.update.call(this);
};
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.callUpdateHelp = function() {
// Run Original Function
Window_Selectable.prototype.callUpdateHelp.call(this);
// If Help Window Exist
if (this._helpWindow) {
this._helpWindow.setText(this._optionsList[this.index()].helpText);
};
};
//=============================================================================
// * Cursor Right
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.cursorRight = function(wrap) {
// Super Call
Window_Selectable.prototype.cursorRight.call(this, wrap);
// Get Data
var data = this._optionsList[this.index()];
// Get Data
if(this.index() === 0 && !Graphics._isFullScreen()) {
SoundManager.playBuzzer();
return;
}
if (data) {
// Set Data Index
data.index = (data.index + 1) % data.options.length;
// Process Option Command
this.processOptionCommand();
// Update Cursor
this.updateCursor();
}
};
//=============================================================================
// * Cursor Left
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.cursorLeft = function(wrap) {
// Super Call
Window_Selectable.prototype.cursorLeft.call(this, wrap);
// Get Data
var data = this._optionsList[this.index()];
// Get Data
if(this.index() === 0 && !Graphics._isFullScreen()) {
SoundManager.playBuzzer();
return;
}
if (data) {
// Get Max Items
var maxItems = data.options.length;
// Set Data Index
data.index = (data.index - 1 + maxItems) % maxItems;
// Process Option Command
this.processOptionCommand();
// Update Cursor
this.updateCursor();
};
};
//=============================================================================
// * Update Cursor
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.updateCursor = function() {
// Run Original Function
Window_Selectable.prototype.updateCursor.call(this);
// Get Top Row
var topRow = this.topRow();
// Get Index
var index = this.index();
// If Option cursors Exist
if (this._optionCursors) {
// Go through Option Cursors
for (var i = 0; i < this._optionCursors.length; i++) {
// Get Sprite
var sprite = this._optionCursors[i];
// Get Real Index
var realIndex = topRow + i;
// Get Data
var data = this._optionsList[realIndex];
// Get Selected State
var selected = this.active ? realIndex === index : false;
// If Data Exists
if (data) {
// Get Item Rect
var rect = this.itemRect(realIndex);
// Set Sprite Color
sprite.setColorTone(selected ? [0, 0, 0, 0] : [-80, -80, -80, 255])
// Activate Selected Sprite
selected ? sprite.activate() : sprite.deactivate();
// Set Sprite Positions
sprite.x = (rect.x + 65) + (data.index * data.spacing);
sprite.y = rect.y + 60;
// Make Sprite Visible
sprite.visible = this.height >= sprite.y + sprite.height;
} else {
// Deactivate Sprite
sprite.deactivate();
// Make Sprite Invisible
sprite.visible = false;
};
};
}
};
//=============================================================================
// * Process Option Command
//=============================================================================
Window_OmoMenuOptionsGeneral.prototype.processOptionCommand = function() {
// Get Index
var index = this.index();
// Get Data
var data = this._optionsList[index];
// Switch Case Index
switch (index) {
case 0: // Screen Resolution
// Set Width & Height
Yanfly.Param.ScreenWidth = 640 * (data.index + 1);
Yanfly.Param.ScreenHeight = 480 * (data.index + 1) ;
SceneManager._screenWidth = Yanfly.Param.ScreenWidth;
SceneManager._screenHeight = Yanfly.Param.ScreenHeight;
// SceneManager._boxWidth = Yanfly.Param.ScreenWidth;
// SceneManager._boxHeight = Yanfly.Param.ScreenHeight
Yanfly.updateResolution();
Yanfly.moveToCenter();
//window.moveTo(x, y);
// Set Config Manager Screen Resolution
ConfigManager.screenResolution = data.index;
break;
case 1: // Fullscreen
// Set data Index
//data.index === 0 ? Graphics._requestFullScreen() : Graphics._cancelFullScreen();
// Set config manager Full screen state
ConfigManager.fullScreen = data.index === 0 ? true : false;
this._processDelay = 20;
//Input.update();
break;
case 2:
ConfigManager.gamepadTips = data.index === 0 ? false : true;
if(SceneManager._scene instanceof Scene_OmoriTitleScreen) {
SceneManager._scene.refreshCommandHints(); // Refresh command title hints;
}
break;
case 3: ConfigManager.textSkip = data.index === 0 ? true : false; break;
//case 3: ConfigManager.battleAnimations = data.index === 0 ? true : false ;break;
//case 4: ConfigManager.battleAnimationSpeed = data.index ;break;
case 4: ConfigManager.battleLogSpeed = data.index; ;break;
case 5: ConfigManager.alwaysDash = data.index === 0 ? true : false ;break;
};
};
//=============================================================================
// ** Window_OmoMenuOptionsAudio
//-----------------------------------------------------------------------------
// The window for showing audio options in the options menu
//=============================================================================
function Window_OmoMenuOptionsAudio() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsAudio.prototype = Object.create(Window_Selectable.prototype);
Window_OmoMenuOptionsAudio.prototype.constructor = Window_OmoMenuOptionsAudio;
//=============================================================================
// * Object Initialization
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.initialize = function() {
// Make Options List
this.makeOptionsList();
// Super Call
Window_Selectable.prototype.initialize.call(this, 0, 0, this.windowWidth(), this.windowHeight());
// Create Volume Bars
this.createVolumeBars();
this.select(0);
// Refresh
this.refresh();
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsAudio.prototype.standardPadding = function() { return 8; }
Window_OmoMenuOptionsAudio.prototype.windowWidth = function () { return Graphics.width - 20; };
Window_OmoMenuOptionsAudio.prototype.windowHeight = function() { return 318; }
Window_OmoMenuOptionsAudio.prototype.maxItems = function() { return this._optionsList.length;};
Window_OmoMenuOptionsAudio.prototype.maxCols = function() { return 1;};
Window_OmoMenuOptionsAudio.prototype.itemHeight = function() { return 75; };
Window_OmoMenuOptionsAudio.prototype.spacing = function() { return 5; };
Window_OmoMenuOptionsAudio.prototype.customCursorRectXOffset = function() { return 15; }
Window_OmoMenuOptionsAudio.prototype.customCursorRectYOffset = function() { return -18; }
//=============================================================================
// * Height
//=============================================================================
Object.defineProperty(Window_OmoMenuOptionsAudio.prototype, 'height', {
get: function() { return this._height; },
set: function(value) {
this._height = value;
this._refreshAllParts();
// If Volume Sprites Exist
if (this._volumeSprites) {
for (var i = 0; i < this._volumeSprites.length; i++) {
var sprite = this._volumeSprites[i];
sprite.visible = value >= (sprite.y + sprite.height)
};
}
},
configurable: true
});
//=============================================================================
// * Create Volume Bars
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.createVolumeBars = function() {
// Initialize Volume Sprites
this._volumeSprites = [];
// Create Bitmap
var bitmap = new Bitmap(400, 40);
// Iterate from 0 to 100
for (var i = 0; i < 100; i++) {
var x = (i + 4 ) + (i % 2);;
var x = (i * 4);
bitmap.fillRect(x, 0, 2, 20, 'rgba(100, 100, 100, 1)');
bitmap.fillRect(x, 20, 2, 20, 'rgba(255, 255, 255, 1)');
};
// Create Sprites
for (var i = 0; i < 8; i++) {
var sprite = new Sprite(bitmap);
var index = Math.floor(i / 2);
var rect = this.itemRect(index);
sprite.x = rect.x + 60;
sprite.y = rect.y + 50;
// sprite.y += (i % 2) * 20;
sprite.setFrame(0, (i % 2) * 20, bitmap.width, 20);
this._volumeSprites.push(sprite);
this.addChild(sprite);
};
};
//=============================================================================
// * Make Options List
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.makeOptionsList = function() {
// Get Text
var text = LanguageManager.getPluginText('optionsMenu', 'audio')
// Get Config
var config = ConfigManager;
// Get Options
var options = Object.keys(text);
// Initialize Options List
this._optionsList = [];
// Go Through Options
for (var i = 0; i < options.length; i++) {
// Get Name
var name = options[i];
// Get Data
var data = text[name];
// Add Option
this._optionsList.push({header: data.text + ':', config: name, volume: AudioManager[name], helpText: data.help});
};
}
//=============================================================================
// * Draw Item
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.drawItem = function(index) {
// Get Item Rect
var rect = this.itemRect(index);
// Get Data
var data = this._optionsList[index];
// If Data Exists
if (data) {
// Draw Header
this.contents.drawText(data.header, rect.x + 50, rect.y + 4, rect.width, 24);
// Update volume bar
this.updateVolumeBar(index, data.volume);
};
};
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.callUpdateHelp = function() {
// Run Original Function
Window_Selectable.prototype.callUpdateHelp.call(this);
// If Help Window Exist
if (this._helpWindow) {
this._helpWindow.setText(this._optionsList[this.index()].helpText);
};
};
//=============================================================================
// * Cursor Right
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.cursorRight = function(wrap) {
// Super Call
Window_Selectable.prototype.cursorRight.call(this, wrap);
// Get Data
var data = this._optionsList[this.index()];
// Get Data
if (data) {
var rate = Input.isLongPressed('right') ? 5 : 1
data.volume = Math.min(data.volume + rate, 100);
this.updateVolumeBar(this.index(), data.volume);
};
};
//=============================================================================
// * Cursor Left
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.cursorLeft = function(wrap) {
// Super Call
Window_Selectable.prototype.cursorLeft.call(this, wrap);
// Get Data
var data = this._optionsList[this.index()];
// Get Data
if (data) {
var rate = Input.isLongPressed('left') ? 5 : 1
data.volume = Math.max(data.volume - rate, 0);
this.updateVolumeBar(this.index(), data.volume);
};
};
//=============================================================================
// * Cursor Left
//=============================================================================
Window_OmoMenuOptionsAudio.prototype.updateVolumeBar = function(index, volume) {
// Get Data
var data = this._optionsList[index];
// Get Back and Front Sprite
var front = this._volumeSprites[(index * 2) + 1 ];
front._frame.width = volume * 4;
front._refresh();
// Get Itm Rect
var rect = this.itemRect(index);
rect.x += 415; rect.y += 27; rect.width = 100; rect.height = 40;
this.contents.clearRect(rect.x, rect.y, rect.width, rect.height)
this.contents.drawText(volume + '%', rect.x, rect.y, rect.width, rect.height, 'right');
// Set Volume
ConfigManager[data.config] = volume;
};
//=============================================================================
// ** Window_OmoMenuOptionsControls
//-----------------------------------------------------------------------------
// The window for showing audio options in the options menu
//=============================================================================
function Window_OmoMenuOptionsControls() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsControls.prototype = Object.create(Window_Selectable.prototype);
Window_OmoMenuOptionsControls.prototype.constructor = Window_OmoMenuOptionsControls;
//=============================================================================
// * Object Initialization
//=============================================================================
Window_OmoMenuOptionsControls.prototype.initialize = function() {
// Set Waiting for Input Flag
this._waitingForInput = false;
// Make Options List
this.makeOptionsList();
// Super Call
Window_Selectable.prototype.initialize.call(this, 0, 0, this.windowWidth(), this.windowHeight());
// Create Key Prompt Window
this.createKeyPromptWindow();
// Set Ok Handler
this.setHandler('ok', this.onCommandOk.bind(this));
this.select(0);
// Refresh
this.refresh();
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsControls.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsControls.prototype.standardPadding = function() { return 8; }
Window_OmoMenuOptionsControls.prototype.windowWidth = function () { return Graphics.width - 20; };
Window_OmoMenuOptionsControls.prototype.windowHeight = function() { return 318; }
Window_OmoMenuOptionsControls.prototype.maxItems = function() { return this._optionsList.length;};
Window_OmoMenuOptionsControls.prototype.maxCols = function() { return 2;};
Window_OmoMenuOptionsControls.prototype.itemHeight = function() { return 30; };
Window_OmoMenuOptionsControls.prototype.itemWidth = function() { return 200; };
Window_OmoMenuOptionsControls.prototype.spacing = function() { return 5; };
Window_OmoMenuOptionsControls.prototype.customCursorRectXOffset = function() { return 15; }
Window_OmoMenuOptionsControls.prototype.customCursorRectYOffset = function() { return 5; }
Window_OmoMenuOptionsControls.prototype.maxPageRows = function() {
var pageHeight = (this.height - 40) - this.padding * 2;
return Math.floor(pageHeight / this.itemHeight());
};
//=============================================================================
// * Height
//=============================================================================
Object.defineProperty(Window_OmoMenuOptionsControls.prototype, 'height', {
get: function() { return this._height; },
set: function(value) {
this._height = value;
this._refreshAllParts();
// Get Cursor Sprite
var sprite = this._customCursorRectSprite;
// Set Sprite Visibility
if (sprite) { sprite.visible = this._height >= (sprite.y + sprite.height); };
},
configurable: true
});
//=============================================================================
// * Determine if Gamepad Exists
//=============================================================================
Window_OmoMenuOptionsControls.prototype.hasGamePad = function() {
// If Navigator can get gamepads
if (navigator.getGamepads) {
// Get Gamepads
var gamepads = navigator.getGamepads();
// Has gamepad flag
var hasGamePad = false;
// Go Through Gamepads
for (var i = 0; i < gamepads.length; i++) {
// Set Has gamepad flag to true
if (gamepads[i] !== null) { hasGamePad = true; };
};
// Return Gamepad flag
return hasGamePad;
};
// Return false
return false;
};
//=============================================================================
// * Create Key Prompt Window
//=============================================================================
Window_OmoMenuOptionsControls.prototype.createKeyPromptWindow = function() {
// Create Key Prompt Window
this._keyPromptWindow = new Window_Base(0, 0, this.windowWidth(), 56);
this._keyPromptWindow.drawText(LanguageManager.getPluginText('optionsMenu', 'controls').pressKeyPrompt, 0, -10, this._keyPromptWindow.contents.width, 'center');
this._keyPromptWindow.y = (this.height - this._keyPromptWindow.height) / 2;
this._keyPromptWindow.openness = 0;
this.addChild(this._keyPromptWindow);
};
//=============================================================================
// * Refresh Arrows
//=============================================================================
Window_OmoMenuOptionsControls.prototype._refreshArrows = function() {
// Run Original Function
Window_Selectable.prototype._refreshArrows.call(this);
var w = this._width;
var h = this._height;
var p = 28;
var q = p/2;
this._downArrowSprite.move(w - q, h - q);
this._upArrowSprite.move(w - q, q);
};
//=============================================================================
// * Make Options List
//=============================================================================
Window_OmoMenuOptionsControls.prototype.itemRect = function(index) {
// Get rect
var rect = Window_Selectable.prototype.itemRect.call(this, index);
rect.x += 150;
rect.y += 40;
// Return Rect
return rect;
};
//=============================================================================
// * Make Options List
//=============================================================================
Window_OmoMenuOptionsControls.prototype.makeOptionsList = function() {
// Backup Options List
let old_options;
if(!!this._optionsList) {old_options = this._optionsList.slice();}
// Initialize Options List
this._optionsList = [];
// Get KeyMappers
var keyMapper = Object.entries(Input.keyMapper);
var gamepadMapper = Object.entries(Input.gamepadMapper);
// Get Source Text
var text = LanguageManager.getPluginText('optionsMenu', 'controls');
// Get Input Names
var inputNames = Object.keys(text.inputNames);
var directionInputs = [12, 13, 14, 15];
// Go through input Names
for (var i = 0; i < inputNames.length; i++) {
// Get Input
var input = inputNames[i];
// Get Column
var column = (i % 2);
// Get Key
var key = Number(keyMapper.find(function(arr) { return arr[1] === input })[0]);
// Add Options to List
this._optionsList.push({header: text.inputNames[input], name: String(LanguageManager.getInputName('keyboard', key)).toUpperCase(), key: key, map: input, keyboard: true })
// Get Key
var key = Number(gamepadMapper.find(function(arr) { return arr[1] === input })[0]);
// Add Options to List
this._optionsList.push({header: text.inputNames[input], name: String(LanguageManager.getInputName('gamepad', key)).toUpperCase(), key: key, map: input, gamepad: true, direction: directionInputs.contains(key) })
};
this._optionsList.push({header: '', name: text.resetAll, resetKeyboard: true})
this._optionsList.push({header: '', name: text.resetAll, resetGamepad: true})
};
//=============================================================================
// * preventNumpadToDirectional
//=============================================================================
Window_OmoMenuOptionsControls.prototype.preventNumpadToDirectional = function(key, input) {
let numpad = [97,98,99,100,101,102,103,104,105,106];
let lowered_input = input.toLowerCase();
let isDirectional = lowered_input.contains("right") || lowered_input.contains("left") || lowered_input.contains("up") || lowered_input.contains("down");
if(!!isDirectional && numpad.contains(key)) {return true;}
return false;
}
//=============================================================================
// * Refresh
//=============================================================================
Window_OmoMenuOptionsControls.prototype.refresh = function() {
// Run Original Function
Window_Selectable.prototype.refresh.call(this);
// Draw Headers
var width = (this.contents.width / 2) - 100
// Get Source Text
var text = LanguageManager.getPluginText('optionsMenu', 'controls');
this.drawText(text.keyboardHeader, 200, 0, width);
this.drawText(text.gamepadHeader, 400, 0, width);
};
//=============================================================================
// * Draw Item
//=============================================================================
Window_OmoMenuOptionsControls.prototype.drawItem = function(index) {
// Get Item Rect
var rect = this.itemRect(index);
// Get Row
var row = index % this.maxCols();
// Get Data
var data = this._optionsList[index];
// If Row is 0
if (row === 0) {
// this.contents.drawInputIcon('', rect.x - 140, rect.y + 7);
// Draw Header
this.contents.drawText(data.header, rect.x - 140, rect.y, rect.width, rect.height);
};
// If Data Exists
if (data) {
rect.x += 50;
// If Reset
if (data.resetKeyboard || data.resetGamepad) {
// Draw Header
this.contents.drawText(data.name, rect.x, rect.y, rect.width, rect.height);
};
if (data.keyboard) {
rect.x += 35;
this.contents.drawKeyIcon(data.key, rect.x , rect.y + 7, "keyboardBlack24");
}
if (data.gamepad) {
rect.x += 25;
this.contents.drawKeyIcon(data.key, rect.x, rect.y + 7, 'gamepadBlack24', data.direction ? 1 : 0);
};
// console.log(data)
};
};
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsControls.prototype.callUpdateHelp = function() {
// Run Original Function
Window_Selectable.prototype.callUpdateHelp.call(this);
// If Help window exists
if (this._helpWindow) {
this._helpWindow.setText(LanguageManager.getPluginText('optionsMenu', 'controls').help)
};
};
//=============================================================================
// * Frame Update
//=============================================================================
Window_OmoMenuOptionsControls.prototype.update = function() {
// Run Original Function
Window_Selectable.prototype.update.call(this);
// If Waiting for Input
if (this._waitingForInput) { this.updateInputReplacement(); };
};
//=============================================================================
// * On Command OK
//=============================================================================
Window_OmoMenuOptionsControls.prototype.onCommandOk = function() {
// Get Data
var data = this._optionsList[this.index()];
// If Data Resets Keyboard
if (data.resetKeyboard) {
// Set Default Keyboard Mapping
ConfigManager.setDefaultKeyboardKeyMap();
this.makeOptionsList();
this.refresh();
this.activate();
} else if (data.resetGamepad) {
// Set Default Gamepad mapping
ConfigManager.setDefaultGamepadKeyMap();
this.makeOptionsList();
this.refresh();
this.activate();
} else {
// Get Index
var index = this.index();
// Get Column
var column = index % 2;
// Get Gamepad States
var gamepadStates = Input._gamepadStates.filter(g => !!g.contains(true))[0]
// Block Flag
var block = false;
var isWhat = -1; // 0 - Keyboard; 1 - Gamepad; 2 - Gamepad not detected;
if (TouchInput.isPressed() || TouchInput.isTriggered()) { block = true;}
if (column === 0) {
if (gamepadStates && gamepadStates.contains(true)) { block = true; isWhat = 1; };
} else {
if (!this.hasGamePad()) { block = true; isWhat = 2;}
else if (KeyboardInput._latestEvent) { block = true; isWhat = 0;}
};
// If Block
if (block) {
this.makeOptionsList();
this.refresh();
this.activate();
this.pushInputWarningText(isWhat);
return
}
// Set Waiting for Input to true
this._waitingForInput = true;
// Open Key Prompt Window
this._keyPromptWindow.open();
};
// Set Gamepad Input Delay
this._gamePadInputDelay = 30;
// Clear Keyboard Input
KeyboardInput.clear();
Input.clear();
};
//=============================================================================
// * Push Input Warning Text
//=============================================================================
Window_OmoMenuOptionsControls.prototype.pushInputWarningText = function(type) {
let text;
switch(type) {
case 0: // Keyboard
text = LanguageManager.getPluginText('optionsMenu', 'inputWarning').gamepadMessage;
break;
case 1: // Gamepad
text = LanguageManager.getPluginText('optionsMenu', 'inputWarning').keyboardMessage;
break;
case 2: // Gamepad not detected;
text = LanguageManager.getPluginText('optionsMenu', 'inputWarning').gamepadNotDetected;
break;
}
this._helpWindow.setText(text);
}
//=============================================================================
// * Update Input Replacement
//=============================================================================
Window_OmoMenuOptionsControls.prototype.updateInputReplacement = function() {
// Get Index
var index = this.index();
// Get Column
var column = index % 2;
// If Column is 0 (Keyboard)
if (column === 0) {
// Get Event
var event = KeyboardInput._latestEvent;
// If Latest Event Exist
if (event) {
// Get Row
var row = Math.floor(index / 2);
// Get Data
var data = this._optionsList[index];
// Clear Input if Key Name does not exist
// Keycode 91 is MetaLeft (Windows Button / Mac cmd)
if (LanguageManager.getInputName('keyboard', event.keyCode) === undefined || !!this.preventNumpadToDirectional(event.keyCode,data.map) || event.keyCode === 91) {
Input.clear();
KeyboardInput.clear();
return;
};
// Get Key Data
var keyData = this._optionsList.find(function(o) { return o.keyboard && o.key === event.keyCode })
// Get Existing Map
var existingMap = Input.keyMapper[event.keyCode];
// If Key Data Exists
if (keyData) {
delete Input.keyMapper[keyData.key];
delete Input.keyMapper[data.key];
Input.keyMapper[keyData.key] = data.map;
Input.keyMapper[data.key] = keyData.map;
} else {
delete Input.keyMapper[data.key];
Input.keyMapper[event.keyCode] = data.map;
};
// Clear Input
Input.clear();
KeyboardInput.clear();
Input.update();
// Remake Option List
this.makeOptionsList();
this.refresh();
// console.log(column)
this.activate();
this._waitingForInput = false;
// Close Key Prompt Window
this._keyPromptWindow.close();
}
} else {
// If Gamepad Input Delay is more than 0
if (this._gamePadInputDelay > 0) {
// Decrease Gamepad input delay
this._gamePadInputDelay--;
return;
};
// Get Gamepad States
var gamepadStates = Input._gamepadStates.filter(g => !!g.contains(true))[0]
// If cancel close the window
if (Input.isTriggered('cancel')) {
// If Gamepad States Exist
if (gamepadStates) {
// Get Input Index
var inputIndex = gamepadStates.indexOf(true);
if (inputIndex > -1) { return; }
};
this.activate();
this._waitingForInput = false;
// Close Key Prompt Window
this._keyPromptWindow.close();
return;
};
// If Gamepad States Exist
if (gamepadStates) {
// Get Input Index
var inputIndex = gamepadStates.indexOf(true);
// If Input Index is more than 0
if (inputIndex > -1) {
var buttonMap = Object.entries(Input.gamepadMapper);
// Get Row
var row = Math.floor(index / 2);
// Get Key Data
var keyData = this._optionsList[index];
// Get Old Input
var oldInput = Input.gamepadMapper[keyData.key];
// Get Existing Map
var newInput = Input.gamepadMapper[inputIndex];
// Change Input
Input.gamepadMapper[inputIndex] = oldInput;
Input.gamepadMapper[keyData.key] = newInput;
// Clear Input
KeyboardInput.clear();
Input.clear();
Input.update();
// Remake Option List
this.makeOptionsList();
this.refresh();
this.select(index);
this.activate();
this._waitingForInput = false;
// Close Key Prompt Window
this._keyPromptWindow.close();
};
};
};
};
// //=============================================================================
// // * Update Cursor
// //=============================================================================
// Window_OmoMenuOptionsControls.prototype.updateCursor = function() {
// // Run Original Function
// Window_Selectable.prototype.updateCursor.call(this);
// // Get Top Row
// var topRow = this.topRow();
// // Get Index
// var index = this.index();
// // If Option cursors Exist
// if (this._optionCursors) {
// // Go through Option Cursors
// for (var i = 0; i < this._optionCursors.length; i++) {
// // Get Sprite
// var sprite = this._optionCursors[i];
// // Get Real Index
// var realIndex = topRow + i;
// // Get Data
// var data = this._optionsList[realIndex];
// // Get Selected State
// var selected = this.active ? realIndex === index : false;
// // If Data Exists
// if (data) {
// // Get Item Rect
// var rect = this.itemRect(realIndex);
// // Set Sprite Color
// sprite.setColorTone(selected ? [0, 0, 0, 0] : [-80, -80, -80, 255])
// // Activate Selected Sprite
// selected ? sprite.activate() : sprite.deactivate();
// // Set Sprite Positions
// sprite.x = (rect.x + 65) + (data.index * data.spacing);
// sprite.y = rect.y + 60;
// // Make Sprite Visible
// // sprite.visible = this.height >= sprite.y + sprite.height;
// } else {
// // Deactivate Sprite
// sprite.deactivate();
// // Make Sprite Invisible
// sprite.visible = false;
// };
// };
// }
// };
//=============================================================================
// ** Window_OmoMenuOptionsSystem
//-----------------------------------------------------------------------------
// The window for selecting option categories in the options menu
//=============================================================================
function Window_OmoMenuOptionsSystem() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsSystem.prototype = Object.create(Window_Command.prototype);
Window_OmoMenuOptionsSystem.prototype.constructor = Window_OmoMenuOptionsSystem;
//=============================================================================
// * Object Initialization
//=============================================================================
Window_OmoMenuOptionsSystem.prototype.initialize = function() {
// Super Call
Window_Command.prototype.initialize.call(this, 0, 0);
this.deactivate();
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsSystem.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsSystem.prototype.standardPadding = function() { return 10; }
Window_OmoMenuOptionsSystem.prototype.windowWidth = function () { return Graphics.width - 20; };
Window_OmoMenuOptionsSystem.prototype.windowHeight = function() { return 318; }
Window_OmoMenuOptionsSystem.prototype.maxCols = function() { return 1; };
Window_OmoMenuOptionsSystem.prototype.standardFontSize = function() { return 22; };
Window_OmoMenuOptionsSystem.prototype.customCursorRectYOffset = function() { return 4; }
Window_OmoMenuOptionsSystem.prototype.customCursorRectTextXOffset = function() { return 25; }
//=============================================================================
// * Make Command List
//=============================================================================
Window_OmoMenuOptionsSystem.prototype.makeCommandList = function() {
const isOptionsScene = SceneManager._scene.constructor === Scene_OmoMenuOptions
const isSceneTitle = SceneManager._scene instanceof Scene_OmoriTitleScreen;
this.addCommand(LanguageManager.getPluginText('optionsMenu', 'system').restoreConfig.text, 'restoreConfig');
this.addCommand(LanguageManager.getPluginText('optionsMenu', 'system').load.text, 'load', isOptionsScene);
this.addCommand(LanguageManager.getPluginText('optionsMenu', 'system').toTitleScreen.text, 'toTitleScreen', isOptionsScene);
this.addCommand(LanguageManager.getPluginText('optionsMenu', 'system').exit.text, 'exit');
};
//=============================================================================
// * Get Command Help Text
//=============================================================================
Window_OmoMenuOptionsSystem.prototype.getCommandHelpText = function(symbol = this.currentSymbol()) {
// Symbol Switch Case
switch (symbol) {
case 'restoreConfig': return LanguageManager.getPluginText('optionsMenu', 'system').restoreConfig.help ;break;
case 'load': return LanguageManager.getPluginText('optionsMenu', 'system').load.help ;break;
case 'toTitleScreen': return LanguageManager.getPluginText('optionsMenu', 'system').toTitleScreen.help ;break;
case 'exit': return LanguageManager.getPluginText('optionsMenu', 'system').exit.help ;break;
}
// Return error as default
return "* ERROR!!! *";
};
//=============================================================================
// * Call Update Help
//=============================================================================
Window_OmoMenuOptionsSystem.prototype.callUpdateHelp = function() {
// Run Original Function
Window_Command.prototype.callUpdateHelp.call(this);
if (this._helpWindow) {
this._helpWindow.setText(this.getCommandHelpText());
};
};
//=============================================================================
// ** Window_OmoMenuOptionsExitPromptWindow
//-----------------------------------------------------------------------------
// This Window is used to show a prompt for exiting the game.
//=============================================================================
function Window_OmoMenuOptionsExitPromptWindow() { this.initialize.apply(this, arguments); }
Window_OmoMenuOptionsExitPromptWindow.prototype = Object.create(Window_Command.prototype);
Window_OmoMenuOptionsExitPromptWindow.prototype.constructor = Window_OmoMenuOptionsExitPromptWindow;
//=============================================================================
// * Initialize Object
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.initialize = function() {
// Super Call
Window_Command.prototype.initialize.call(this, 0, 0);
// Prompt Text
this._promptText = LanguageManager.getPluginText('optionsMenu', 'system').exitPrompt.text;
// Refresh Contents
this.refresh();
this.openness = 0;
this.deactivate();
};
//=============================================================================
// * Settings
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.isUsingCustomCursorRectSprite = function() { return true; };
Window_OmoMenuOptionsExitPromptWindow.prototype.windowHeight = function() { return 84 - 16; };
Window_OmoMenuOptionsExitPromptWindow.prototype.windowWidth = function() {
if(!this._type) {return 200}
return 232;
};
Window_OmoMenuOptionsExitPromptWindow.prototype.maxCols = function() { return 2; };
Window_OmoMenuOptionsExitPromptWindow.prototype.spacing = function() { return 0; };
Window_OmoMenuOptionsExitPromptWindow.prototype.standardPadding = function() { return 0; };
Window_OmoMenuOptionsExitPromptWindow.prototype.itemHeight = function() { return 20; };
Window_OmoMenuOptionsExitPromptWindow.prototype.itemWidth = function() { return 75 + 10; };
Window_OmoMenuOptionsExitPromptWindow.prototype.standardFontSize = function() { return 24; };
const _old_OmoMenuOptionsExitPromptWindow_customCursorRectXOffset = Window_OmoMenuOptionsExitPromptWindow.prototype.customCursorRectXOffset;
Window_OmoMenuOptionsExitPromptWindow.prototype.customCursorRectXOffset = function() {
if(!this._type) {return _old_OmoMenuOptionsExitPromptWindow_customCursorRectXOffset.call(this)}
return _old_OmoMenuOptionsExitPromptWindow_customCursorRectXOffset.call(this) + 16;
}
//=============================================================================
// * Make Command List
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.makeCommandList = function() {
// Get Commands Text
var text = !this._type ? LanguageManager.getPluginText('optionsMenu', 'system').exitPrompt.commands : LanguageManager.getPluginText('optionsMenu', 'system').toTitleScreenPrompt.commands;
this.addCommand(text[0], 'yes');
this.addCommand(text[1], 'cancel');
};
//=============================================================================
// * Refresh
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.refresh = function(type = 0) {
// Super Call
this._type = type;
this.width = this.windowWidth();
this.createContents();
Window_Command.prototype.refresh.call(this);
this._promptText = !this._type ? LanguageManager.getPluginText('optionsMenu', 'system').exitPrompt.text : LanguageManager.getPluginText('optionsMenu', 'system').toTitleScreenPrompt.text
this.contents.fontSize = 18; // タイトル画面に戻りますか?の文字サイズ
this.drawText(this._promptText, 0, 0, this.contents.width, 'center');
};
//=============================================================================
// * Get Item Rect
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.itemRect = function(index) {
var rect = Window_Command.prototype.itemRect.call(this, index);
// rect.x += 10;
rect.y += this.lineHeight() - 5;
return rect;
};
//=============================================================================
// * Get Item Rect For Text
//=============================================================================
Window_OmoMenuOptionsExitPromptWindow.prototype.itemRectForText = function(index) {
var rect = this.itemRect(index);
rect.x += this.textPadding() + 35;
if(!!this._type) {
rect.x += 16;
}
rect.y -= 10;
rect.width -= this.textPadding() * 2;
return rect;
};