<undefined> 0 -1 0 0 <undefined> <undefined> 1 603 7 0 0 -1 2 self 0 0 1 y -= 8; // Moved from user 0 to avoid reset issues. // Change to object creation position instead! global.curropt = 0; active = 0; targetY = y; timer = 0; SPACER = 16; buttonsEnabled = true; if (os_type != os_android && !gamepad_is_connected(global.gamepadIndex)) || (os_type == os_android && (!global.joydetected || global.compatibilitymode)) { buttonsEnabled = false; } view_object[0] = id; // Active in 5 alarm[0] = 5; var i = 0; /* This list dictates the order of selection in the Display Menu. Also, the lists in User Defined 0 and 3 need to be in order. */ // DISPLAY OPTIONS // Fullscreen and scale should NOT exist on Android if (os_type != os_android) { opFullscreen = i++; opScale = i++; } opVSync = i++; opSensitivity = i++; opWidescreen = i++; // HUD opShowHUD = i++; opShowMap = i++; opCounterStyle = i++; // NOTIFICATIONS opShowHints = i++; if (buttonsEnabled) { opButtonType = i++; } opShowScans = i++; opLanguage = i++; menuSize = i; // 1 larger than last item vTargetY = 18 * menuSize + 72; i = 0; // Enable menu repeat (menuSize + 1) { canEdit[i] = 1; i++; } // Get lang info langCount = array_length_1d(global.language); for (i = 0; i < langCount; i += 1) { ini_open(global.language[i]); lang[i] = ini_read_string("Header", "Language", "[!]"); langAuthor[i] = ini_read_string("Header", "Author", "[!]"); langAuthor2[i] = ini_read_string("Header", "Author2", "[!]"); ini_close(); } // Create menu items event_user(0); // Load tip text event_user(3); // Load current tip text global.tiptext = tip[global.curropt]; 1 603 7 0 0 -1 2 self 0 0 1 /// Destroy menu options event_user(1); 1 603 7 0 0 -1 2 self 0 0 1 /// Update window scale set_window_scale(global.opscale); display_reset(0, global.opvsync); 1 603 7 0 0 -1 2 self 0 0 1 active = 1; 1 603 7 0 0 -1 2 self 0 0 1 if (active) { // Menu DOWN if (oControl.kDown > 0 && (oControl.kDownPushedSteps == 0 || oControl.kDownPushedSteps > 30 && timer == 0)) { global.curropt += 1; // Wrap if (global.curropt > menuSize) global.curropt = 0; // Skip inactive while (canEdit[global.curropt] == 0) { global.curropt += 1; // Wrap again (safety) if (global.curropt > menuSize) global.curropt = 0; } // New target targetY = op[global.curropt].y + 16; if (targetY > vTargetY) targetY = vTargetY; sfx_play(sndMenuMove); global.tiptext = tip[global.curropt]; } // Menu UP else if (oControl.kUp > 0 && (oControl.kUpPushedSteps == 0 || oControl.kUpPushedSteps > 30 && timer == 0)) { global.curropt -= 1; // Wrap if (global.curropt < 0) global.curropt = menuSize; // Skip inactive while (canEdit[global.curropt] == 0) { global.curropt -= 1; // Wrap again (safety) if (global.curropt < 0) global.curropt = menuSize; } // New target targetY = op[global.curropt].y + 16; if (targetY > vTargetY) targetY = vTargetY; sfx_play(sndMenuMove); global.tiptext = tip[global.curropt]; } var input = oControl.kRight - oControl.kLeft; var inputSteps = oControl.kRightPushedSteps - oControl.kLeftPushedSteps; // Menu LEFT and RIGHT if (input != 0 && inputSteps == 0 && global.curropt < menuSize && oControl.kDown == 0 && oControl.kUp == 0) { if (os_type != os_android) { // Fullscreen if (global.curropt == opFullscreen) { global.opfullscreen = !global.opfullscreen; set_fullscreen(global.opfullscreen); if (!global.opfullscreen) { global.opscale = 1; // Update window scale alarm[1] = 1; } } // Scale if (global.curropt == opScale) { if (global.opfullscreen) { global.opscale = wrap(global.opscale + input, 0, 4); } if (!global.opfullscreen) { global.opscale = wrap(global.opscale + input, 1, 4) set_window_scale(global.opscale); } } } // VSync if (global.curropt == opVSync) { global.opvsync = !global.opvsync; display_reset(0, global.opvsync); if (!global.opfullscreen) set_window_scale(global.opscale); } // Sensitivity Mode if (global.curropt == opSensitivity) { global.sensitivitymode = !global.sensitivitymode; } // Widescreen if (global.curropt == opWidescreen) { global.widescreen_enabled = !global.widescreen_enabled; if (room == rm_options) { oControl.widescreen = global.widescreen_enabled; if (global.widescreen_enabled == 0) { view_visible[1] = false; } if (global.opfullscreen == 0) { set_window_scale(window_get_height()/240); window_set_position(window_get_x()+((53-(global.widescreen_enabled*106))*(window_get_height()/240)),window_get_y()); } if (global.opfullscreen == 1 || os_type == os_android) { display_reset(0, global.opvsync); } } } // Show HUD if (global.curropt == opShowHUD) global.opshowhud = !global.opshowhud; // Show Map if (global.curropt == opShowMap) global.ophudshowmap = !global.ophudshowmap; // Monster Counter if (global.curropt == opCounterStyle) { global.ophudshowmetrcount = wrap(global.ophudshowmetrcount + input, 0, 2); } // Show Hints if (global.curropt == opShowHints) global.ophudshowhints = !global.ophudshowhints; // Button Prompt Style if (buttonsEnabled && global.curropt == opButtonType) { var inputMax = 5 - ((os_type == os_android) * 2); oControl.mod_buttonsconfig = wrap(oControl.mod_buttonsconfig + input, 0, inputMax); // Update events event_user(3); event_user(4); } // Show Scans if (global.curropt == opShowScans) global.ophudshowlogmsg = !global.ophudshowlogmsg; // Language if (global.curropt == opLanguage) { global.currentlanguage = wrap(global.currentlanguage + input, 0, langCount - 1); // Update events event_user(3); event_user(4); global.tiptext = tip[global.curropt]; } sfx_play(sndMenuMove); // Update text event_user(2); } if (oControl.kMenu1 && oControl.kMenu1PushedSteps == 0) { if (global.curropt == menuSize) { load_resources(); save_gameoptions(); view_object[0] = noone; view_yview[0] = 0; instance_create(50, 92, oOptionsMain); instance_destroy(); sfx_play(sndMenuSel); } } } if (targetY != y) y += (targetY - y) / 10; timer -= 1; if (timer < 0) timer = 8; 1 603 7 0 0 -1 2 self 0 0 1 /// Reload ALL text (usually for lang files) // Label op[50].text = get_text("OptionsDisplay", "Title_Display"); // Fullscreen, scale if (os_type != os_android) { op[opFullscreen].label = get_text("OptionsDisplay", "Fullscreen"); if (global.opfullscreen) { op[opScale].label = get_text("OptionsDisplay", "DisplayScale"); } else op[opScale].label = get_text("OptionsDisplay", "WindowSize"); } op[opVSync].label = get_text("OptionsDisplay", "VSync"); op[51].text = get_text("OptionsDisplay", "Title_HUD"); op[opSensitivity].label = get_text("Misc", "SensitivityMode"); op[opWidescreen].label = get_text("Misc", "Widescreen"); op[opShowHUD].label = get_text("OptionsDisplay", "HUDDisplay"); op[opShowMap].label = get_text("OptionsDisplay", "HUDMap"); op[opCounterStyle].label = get_text("OptionsDisplay", "MonsterCounter"); op[52].text = get_text("OptionsDisplay", "Title_Notifications"); op[opShowHints].label = get_text("OptionsDisplay", "Hints"); if (buttonsEnabled) { op[opButtonType].label = get_text("ExtrasMenu", "Controller"); } op[opShowScans].label = get_text("OptionsDisplay", "ScanNotifications"); op[opLanguage].label = get_text("OptionsDisplay", "Language"); op[53].label = get_text("OptionsDisplay", "Author") + " " + langAuthor[global.currentlanguage]; op[54].label = langAuthor2[global.currentlanguage]; op[menuSize].label = get_text("GlobalOptions", "Exit"); with (oSS_Fg) { opt_text1 = get_text("Subscreen", "Title_Options"); tip1text = get_text("Subscreen", "Menu_Tip"); } 1 603 7 0 0 -1 2 self 0 0 1 /// Load tip text if (os_type != os_android) { tip[opFullscreen] = get_text("OptionsDisplay", "Fullscreen_Tip"); tip[opScale] = get_text("OptionsDisplay", "DisplayScale_Tip"); } tip[opVSync] = get_text("OptionsDisplay", "VSync_Tip"); tip[opSensitivity] = get_text("Misc", "SensitivityMode_Tip"); tip[opWidescreen] = get_text("Misc", "Widescreen_Tip"); tip[opShowHUD] = get_text("OptionsDisplay", "HUDDisplay_Tip"); tip[opShowMap] = get_text("OptionsDisplay", "HUDMap_Tip"); tip[opCounterStyle] = get_text("OptionsDisplay", "MonsterCounter_Tip"); tip[opShowHints] = get_text("OptionsDisplay", "Hints_Tip"); if (buttonsEnabled) { tip[opButtonType] = get_text("ExtrasMenu", "Controller_Tip"); } tip[opShowScans] = get_text("OptionsDisplay", "ScanNotifications_Tip"); tip[opLanguage] = get_text("OptionsDisplay", "Language_Tip"); tip[menuSize] = get_text("GlobalOptions", "ExitMain_Tip"); 1 603 7 0 0 -1 2 self 0 0 1 /// Update option text // Fullscreen, Scale if (os_type != os_android) { if (global.opfullscreen) { op[opFullscreen].optext = get_text("GlobalOptions", "Enabled"); op[opScale].label = get_text("OptionsDisplay", "DisplayScale"); } else { op[opFullscreen].optext = get_text("GlobalOptions", "Disabled"); op[opScale].label = get_text("OptionsDisplay", "WindowSize"); } // Scale sizes switch (global.opscale) { case 0: op[opScale].optext = get_text("OptionsDisplay", "DisplayScale_Stretch"); break; case 1: op[opScale].optext = "1X"; break; case 2: op[opScale].optext = "2X"; break; case 3: op[opScale].optext = "3X"; break; case 4: op[opScale].optext = "4X"; break; default: op[opScale].optext = "[!]"; break; } } // Vsync if (global.opvsync) { op[opVSync].optext = get_text("GlobalOptions", "Enabled"); } else { op[opVSync].optext = get_text("GlobalOptions", "Disabled"); } // Sensitivity Mode if (global.sensitivitymode) { op[opSensitivity].optext = get_text("GlobalOptions", "Enabled"); } else { op[opSensitivity].optext = get_text("GlobalOptions", "Disabled"); } // Widescreen if (global.widescreen_enabled) { op[opWidescreen].optext = get_text("GlobalOptions", "Enabled"); } else { op[opWidescreen].optext = get_text("GlobalOptions", "Disabled"); } // Show HUD if (global.opshowhud) { op[opShowHUD].optext = get_text("GlobalOptions", "Enabled"); } else op[opShowHUD].optext = get_text("GlobalOptions", "Disabled"); // Show Map if (global.ophudshowmap) { op[opShowMap].optext = get_text("GlobalOptions", "Enabled"); } else op[opShowMap].optext = get_text("GlobalOptions", "Disabled"); // Monster Counter Style switch (global.ophudshowmetrcount) { case 0: op[opCounterStyle].optext = get_text("GlobalOptions", "Disabled"); break; case 1: op[opCounterStyle].optext = get_text("OptionsDisplay", "MonsterCounter_Local"); break; case 2: op[opCounterStyle].optext = get_text("OptionsDisplay", "MonsterCounter_Global"); break; default: op[opCounterStyle].optext = "[!]"; break; } // Update Monster Counter tip text if (global.curropt == opCounterStyle) { switch (global.ophudshowmetrcount) { case 0: global.tiptext = get_text("OptionsDisplay", "MonsterCounter_Disabled_Tip"); break; case 1: global.tiptext = get_text("OptionsDisplay", "MonsterCounter_Local_Tip"); break; case 2: global.tiptext = get_text("OptionsDisplay", "MonsterCounter_Global_Tip"); break; default: global.tiptext = "[!]"; break; } } // Show Hints if (global.ophudshowhints) { op[opShowHints].optext = get_text("GlobalOptions", "Enabled"); } else op[opShowHints].optext = get_text("GlobalOptions", "Disabled"); // Button Display Type if (buttonsEnabled) { switch (oControl.mod_buttonsconfig) { case 0: op[opButtonType].optext = get_text("ExtrasMenu", "XBox"); break; case 1: op[opButtonType].optext = get_text("ExtrasMenu", "Playstation"); break; case 2: op[opButtonType].optext = get_text("ExtrasMenu", "NintendoPro"); break; case 3: op[opButtonType].optext = get_text("ExtrasMenu", "SNESColored"); break; case 4: op[opButtonType].optext = get_text("ExtrasMenu", "MOGA"); break; case 5: op[opButtonType].optext = get_text("ExtrasMenu", "OUYA"); break; default: op[opButtonType].optext = "[!]"; break; } } // Show Scans if (global.ophudshowlogmsg) { op[opShowScans].optext = get_text("GlobalOptions", "Enabled"); } else op[opShowScans].optext = get_text("GlobalOptions", "Disabled"); // Language op[opLanguage].optext = lang[global.currentlanguage]; 1 603 7 0 0 -1 2 self 0 0 1 /// Delete menu options for (var i = 0; i <= menuSize; i++) { with (op[i]) instance_destroy(); } // Delete headers for (var i = 50; i <= 54; i++) { with (op[i]) instance_destroy(); } 1 603 7 0 0 -1 2 self 0 0 1 /// Create menu options var i = 1; // Label op[50] = instance_create(x, y, oMenuLabel); op[50].text = get_text("OptionsDisplay", "Title_Display"); // Fullscreen and scale should NOT exist on Android if (os_type != os_android) { // Fullscreen op[opFullscreen] = instance_create(x, y + SPACER * i, oOptionLR); op[opFullscreen].label = get_text("OptionsDisplay", "Fullscreen"); op[opFullscreen].optionid = opFullscreen; i++; // Scale op[opScale] = instance_create(x, y + SPACER * i, oOptionLR); // Scale on fullscreen, size on not if (global.opfullscreen) { op[opScale].label = get_text("OptionsDisplay", "DisplayScale"); } else op[opScale].label = get_text("OptionsDisplay", "WindowSize"); op[opScale].optionid = opScale; i++; } // VSync op[opVSync] = instance_create(x, y + SPACER * i, oOptionLR); op[opVSync].label = get_text("OptionsDisplay", "VSync"); op[opVSync].optionid = opVSync; i++; // Sensitivity Mode op[opSensitivity] = instance_create(x, y + SPACER * i, oOptionLR); op[opSensitivity].label = get_text("Misc", "SensitivityMode"); op[opSensitivity].optionid = opSensitivity; i++; // Widescreen op[opWidescreen] = instance_create(x, y + SPACER * i, oOptionLR); op[opWidescreen].label = get_text("Misc", "Widescreen"); op[opWidescreen].optionid = opWidescreen; i++; // HUD Header op[51] = instance_create(x, y + SPACER * i, oMenuLabel); op[51].text = get_text("OptionsDisplay", "Title_HUD"); i++; // HUD Display op[opShowHUD] = instance_create(x, y + SPACER * i, oOptionLR); op[opShowHUD].label = get_text("OptionsDisplay", "HUDDisplay"); op[opShowHUD].optionid = opShowHUD; i++; // Map Display op[opShowMap] = instance_create(x, y + SPACER * i, oOptionLR); op[opShowMap].label = get_text("OptionsDisplay", "HUDMap"); op[opShowMap].optionid = opShowMap; i++; // Monster Counter Style op[opCounterStyle] = instance_create(x, y + SPACER * i, oOptionLR); op[opCounterStyle].label = get_text("OptionsDisplay", "MonsterCounter"); op[opCounterStyle].optionid = opCounterStyle; i++; // Notification Header op[52] = instance_create(x, y + SPACER * i, oMenuLabel); op[52].text = get_text("OptionsDisplay", "Title_Notifications"); i++; // Show Hints op[opShowHints] = instance_create(x, y + SPACER * i, oOptionLR); op[opShowHints].label = get_text("OptionsDisplay", "Hints"); op[opShowHints].optionid = opShowHints; i++; // Button Display Type if (buttonsEnabled) { op[opButtonType] = instance_create(x, y + SPACER * i, oOptionLR); op[opButtonType].label = get_text("ExtrasMenu", "Controller"); op[opButtonType].optionid = opButtonType; i++; } // Show Scans op[opShowScans] = instance_create(x, y + SPACER * i, oOptionLR); op[opShowScans].label = get_text("OptionsDisplay", "ScanNotifications"); op[opShowScans].optionid = opShowScans; i++; // Language op[opLanguage] = instance_create(x, y + SPACER * i, oOptionLR); op[opLanguage].label = get_text("OptionsDisplay", "Language"); op[opLanguage].optionid = opLanguage; i++; // Author display op[53] = instance_create(x, y + SPACER * i, oPauseOption); // The space here will not carry from the lang file, so we manually insert it. op[53].label = get_text("OptionsDisplay", "Author") + " " + langAuthor[global.currentlanguage]; op[53].optionid = 53; op[53].canEdit = 0; op[53].color = c_gray; i++; var author2text = get_text("OptionsDisplay", "Author"); op[54] = instance_create(x + 8, y + SPACER * i, oPauseOption); // The space here will not carry from the lang file, so we manually insert it. op[54].label = langAuthor2[global.currentlanguage]; op[54].optionid = 54; op[54].canEdit = 0; op[54].color = c_gray; i++; // Exit - This will always be the last option op[menuSize] = instance_create(x, y + SPACER * i, oPauseOption); op[menuSize].optionid = menuSize; op[menuSize].label = get_text("GlobalOptions", "Exit"); // Update options text event_user(2); 0 0 0 0.5 0.100000001490116 0 0.100000001490116 0.100000001490116 0.200000002980232 -1 0