From 6256cbba8feffd4d161fac272c47bed71b4a2312 Mon Sep 17 00:00:00 2001 From: Lojemiru Date: Fri, 5 Feb 2021 05:26:35 -0600 Subject: [PATCH] Sprite cleanup, display menu rewrite --- AM2R.project.gmx | 1 + objects/oCreditsText.object.gmx | 50 +-- objects/oOptionsDisplay.object.gmx | 559 +++++++++++++++++++++++++++-- scripts/wrap.gml | 5 + sprites/sGamet1.sprite.gmx | 11 +- sprites/sGamet2.sprite.gmx | 11 +- sprites/sGeega1.sprite.gmx | 11 +- sprites/sGeega2.sprite.gmx | 11 +- sprites/sGeemer.sprite.gmx | 12 +- sprites/sMellow.sprite.gmx | 11 +- sprites/sSkree1.sprite.gmx | 11 +- sprites/sSkree2.sprite.gmx | 12 +- sprites/sSkreeB1.sprite.gmx | 11 +- sprites/sSkreeB2.sprite.gmx | 12 +- sprites/sViola.sprite.gmx | 16 - sprites/sViolaB.sprite.gmx | 16 - sprites/sWaver.sprite.gmx | 13 +- sprites/sWaverB.sprite.gmx | 13 +- sprites/sZebbo1.sprite.gmx | 10 +- sprites/sZebbo2.sprite.gmx | 10 +- 20 files changed, 604 insertions(+), 202 deletions(-) create mode 100644 scripts/wrap.gml diff --git a/AM2R.project.gmx b/AM2R.project.gmx index 197bddf..df35a63 100644 --- a/AM2R.project.gmx +++ b/AM2R.project.gmx @@ -4303,6 +4303,7 @@ + diff --git a/objects/oCreditsText.object.gmx b/objects/oCreditsText.object.gmx index bc0d71f..f67ec5b 100644 --- a/objects/oCreditsText.object.gmx +++ b/objects/oCreditsText.object.gmx @@ -33,42 +33,17 @@ * = centered header (gets custom display color) */ -// Refer to key key +// Refer to key above text = "*Another " + global.monsterStr + " 2 Remake;;;;;;;;;;;;*Producer;/Milton 'DoctorM64' Guasti;;*Graphic Design;Ramiro Negri=MichaelGabrielR;Jasper=Jack Witty;/Steve 'Sabre230' Rothlisberger;/Kirill '1Eni1' Fevralev;;*Promo Art;/Azima 'Zim' Khan;;*Writing;/James 'Ridley' Hobbs;/Paulo 'Latinlingo' Villalobos;;*Platform Engine Code;/Martin Piecyk;;*Music Composition;/Milton 'DoctorM64' Guasti;/Darren Kerwin;/Torbjørn 'Falcool' Brandrud;;*Debug;/Dragondarch;/Hemse;/Esteban 'DruidVorse' Criado;/Verneri 'Naatiska' Viljanen;;*Playtesting;Jennifer Potter=Mario Crestanello;Live4Truths=Torbjørn 'Falcool' Brandrud;Lise Trehjørningen=Gabriel Kaplan;Nommiin=Nicolas 'Skol' Del Negro;Darren Kerwin=Robert Sephazon;;*Community Management;Dragonheart91=Ammypendent;/Karrde;;*Special Thanks;Nommiin=Tyler Rogers;Kousoru=Infinity's End;Isabelle Amponin=CapCom;/Nathan 'wickedclown' Hess;/The " + global.monsterStr + " Community;;;;*Source Code Reconstruction;/YellowAfterlife;;;;*Continued Revisions;;*Development;Gatordile=Lojemiru;/Alex 'Wanderer' Mack;;*Programming;Metroid3D=Scooterboot;/Craig Kostelecky;;*Art Lead;/Dannon 'Shmegleskimo' Yates;;*Art;ShirtyScarab=Cooper Garvin;/Chris 'Messianic' Oliveira;/ChloePlz;;*Debug;Miepee=EODTex;/Esteban 'DruidVorse' Criado;/Verneri 'Naatiska' Viljanen;/Electrix;;*Spanish Localization;Diegomg=Imsu;;*German Localization;m3Zz=LPCaiser;Miepee=unknown;/fedprod;;*Italian Localization;/LetsPlayNintendoITA;/SadNES cITy e Vecna;/ReNext;;*French Localization;Atver=Vectrex28;;*Russian Localization;/DarkEspeon;;*Japanese Localization;/Gponys;;*Czech Localization;/Vectrex28;;*Special Thanks;Banjo=King Bore;Reaku the Crate=Grom PE;Sylandro=TheKhaosDemon;Iwantdevil=PixHammer;GaptGlitch=Nokbient;Nanassshy=kitronmacaron;/Jean-Samuel Pelletier;/Japanese Community;;;;;;;*Original " + global.monsterStr + " II Staff;;*Producer;/Gunpei Yokoi;;*Director;Hiroji Kiyotake=Hiroyuki Kimura;;*Main Programmer;/Takahiro Harada;;*Programmer;Masaru Yamanaka=Masao Yamamoto;/Isao Hirano;;*Graphic Designer;Hiroji Kiyotake=Hiroyuki Kimura;;*Program Assistant;Yuzuru Ogawa=Nobuhiro Ozaki;;*Sound Programmer;/Ryohji Yoshitomi;;*Designer;Makoto Kanoh=Masafumi Sakashita;Tomoyoshi Yamane=Takehiko Hosokawa;/Yasuo Inoue;;*Debug;Masaru Okadaga=Kenji Nishizawa;Hirofumi Matsuoka=Tohru Ohsawa;Kohta Fukui=Keisuke Terasaki;Kenichi Sugino=Hitoshi Yamagami;Katsuya Yamaoe=Yuji Hori;;;;;;;;;;/In Memory of Satoru Iwata;"; -/* - To have it be the same I divided the current number of lines - by the original number of lines in 1.1, and multiplied by 1.1s - credits time. - - -Wanderer - - 120 lines in 1.1 - - 176 lines in 1.5.3 - - Time: 6000 steps (100 seconds, or 1 minute 40 seconds) - - 1.1 vspeed: -0.27 - - 120 / -0.27 = 176 / X - - X = (176 * -0.27) / 120 - - scrollSpeed = (TEXT_ROWS * -0.27) / 120; - -*/ - - - // Constants TEXT_ROWS = string_count(";", text); X_POS = room_width / 2; +WIDE_SPACE = oControl.widescreen_space / 2; +// Calculate scroll speed based on line count. SCROLL_SPEED = (TEXT_ROWS * -0.27) / 120; -WIDE_SPACE = oControl.widescreen_space / 2; - // Vars var arrayIndex = 0; var subStr = ""; @@ -246,21 +221,29 @@ if (os_type == os_android) os_powersave_enable(false); 1 - if (canfadeout && (oControl.kMenu1 || oControl.kMenu2 || oControl.kStart)) fadeout = 1; + // User fadeout input +if (canfadeout && (oControl.kMenu1 || oControl.kMenu2 || oControl.kStart)) fadeout = 1; + +// Fadeout routine if (fadeout) { if (yoffset > 0) { yoffset -= 1; } else event_user(0); } + +// Credits cutscene animation if (statetime == 360) instance_create(192, 88, oCreditsShip); + +// Fade in if (statetime > 520) { if (image_alpha < 1) image_alpha += 0.05; } -//This dictates the credit scrolling speed +// This dictates the credit scrolling speed if (statetime == 700) vspeed = SCROLL_SPEED; // -0.34; -if (y <= ystart - (TEXT_ROWS * 12)) vspeed = 0; +// This stops the credits on the final line +if (y <= ystart + 17 - (TEXT_ROWS * 12)) vspeed = 0; statetime++; @@ -285,7 +268,9 @@ statetime++; 1 - display_set_gui_size(-1,-1); + /// Reset GUI, determine exit condition + +display_set_gui_size(-1,-1); if (global.creditsmenuopt == 0) { room_goto(rm_score); @@ -334,7 +319,6 @@ draw_set_halign(fa_center); draw_cool_text(X_POS, y + 17, textCenter, c_black, c_white, c_white, 1); // Header -//draw_set_color(c_gray); draw_cool_text(X_POS, y + 17, textHeader, c_black, c_dkgray, c_gray, 1); // Draw black bars diff --git a/objects/oOptionsDisplay.object.gmx b/objects/oOptionsDisplay.object.gmx index 5667270..7eda4f9 100644 --- a/objects/oOptionsDisplay.object.gmx +++ b/objects/oOptionsDisplay.object.gmx @@ -25,7 +25,81 @@ 1 - global.curropt = 0; + 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; + +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++; +opButtonType = i++; +opShowScans = i++; +opLanguage = i++; + +menuSize = i; // 1 larger than last item + +vTargetY = 18 * menuSize + 30; + +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", "[!]"); + ini_close(); +} + +// Create menu items +event_user(0); + +// Load tip text +event_user(3); + +// Load current tip text +global.tiptext = tip[global.curropt]; + + +/* + +global.curropt = 0; lastitem = 12; // og 10 active = 0; alarm[0] = 5; @@ -41,6 +115,7 @@ langno = array_length_1d(global.language); for (i = 0; i < langno; i += 1) { ini_open(global.language[i]); lang[i] = ini_read_string("Header", "Language", "[!]"); + langAuthors[i] = ini_read_string("Header", "Author", "[!]"); ini_close(); } event_user(0); @@ -68,7 +143,8 @@ global.tiptext = tip[global.curropt]; 1 - event_user(1); + /// Destroy menu options +event_user(1); @@ -91,7 +167,8 @@ global.tiptext = tip[global.curropt]; 1 - set_window_scale(global.opscale); + /// Update window scale +set_window_scale(global.opscale); display_reset(0, global.opvsync); @@ -139,6 +216,166 @@ display_reset(0, global.opvsync); 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 (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; + +/* +if (active) { if (oControl.kDown > 0 && (oControl.kDownPushedSteps == 0 || oControl.kDownPushedSteps > 30 && timer == 0)) { if (os_type == os_android) { switch global.curropt { @@ -160,11 +397,11 @@ display_reset(0, global.opvsync); } } if (global.curropt > lastitem) global.curropt = 0; - while (global.canedit[global.curropt] == 0) global.curropt += 1; - targety = op[global.curropt].y + 8 + 8; - if (targety > 256 + (sep*2) && op[7].visible) targety = 256 + (sep*2); - if (targety > 240 + (sep*2) && !op[7].visible) targety = 240 + (sep*2); - if(os_type == os_android) { if (targety > 224) targety = 224; } + while (global.candit[global.curropt] == 0) global.curropt += 1; + targetY = op[global.curropt].y + 8 + 8; + if (targetY > 256 + (sep*2) && op[7].visible) targetY = 256 + (sep*2); + if (targetY > 240 + (sep*2) && !op[7].visible) targetY = 240 + (sep*2); + if(os_type == os_android) { if (targetY > 224) targetY = 224; } sfx_play(sndMenuMove); global.tiptext = tip[global.curropt]; } @@ -187,10 +424,10 @@ display_reset(0, global.opvsync); } if (global.curropt < 0) global.curropt = lastitem; while (global.canedit[global.curropt] == 0) global.curropt -= 1; - targety = op[global.curropt].y + 8 + 8; - if (targety > 256 + (sep*2) && op[7].visible) targety = 256 + (sep*2); - if (targety > 240 + (sep*2) && !op[7].visible) targety = 240 + (sep*2); - if(os_type == os_android) { if (targety > 208) targety = 208; } + targetY = op[global.curropt].y + 8 + 8; + if (targetY > 256 + (sep*2) && op[7].visible) targetY = 256 + (sep*2); + if (targetY > 240 + (sep*2) && !op[7].visible) targetY = 240 + (sep*2); + if(os_type == os_android) { if (targetY > 208) targetY = 208; } sfx_play(sndMenuMove); global.tiptext = tip[global.curropt]; } @@ -334,7 +571,7 @@ display_reset(0, global.opvsync); } } } // if (active) -if (targety != y) y += (targety - y) / 10; +if (targetY != y) y += (targetY - y) / 10; timer -= 1; if (timer < 0) timer = 8; @@ -359,7 +596,43 @@ if (timer < 0) timer = 8; 1 - op[50].text = get_text("OptionsDisplay", "Title_Display"); + /// 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"); +op[opButtonType].label = get_text("ExtrasMenu", "Controller"); +op[opShowScans].label = get_text("OptionsDisplay", "ScanNotifications"); +op[opLanguage].label = get_text("OptionsDisplay", "Language"); + +op[menuSize].label = get_text("GlobalOptions", "Exit"); + +with (oSS_Fg) { + opt_text1 = get_text("Subscreen", "Title_Options"); + tip1text = get_text("Subscreen", "Menu_Tip"); +} + +/* +op[50].text = get_text("OptionsDisplay", "Title_Display"); + op[0].label = get_text("OptionsDisplay", "Fullscreen"); if(os_type == os_android) { op[0].label = get_text("OptionsDisplay", "VSync"); @@ -409,7 +682,27 @@ with (oSS_Fg) { 1 - tip[0] = get_text("OptionsDisplay", "Fullscreen_Tip"); + /// 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"); +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"); + + +/* +tip[0] = get_text("OptionsDisplay", "Fullscreen_Tip"); if(os_type == os_android) tip[0] = get_text("OptionsDisplay", "VSync_Tip"); tip[1] = get_text("OptionsDisplay", "DisplayScale_Tip"); tip[2] = get_text("OptionsDisplay", "VSync_Tip"); @@ -448,7 +741,103 @@ tip[12] = get_text("GlobalOptions", "ExitMain_Tip"); 1 - if (global.opfullscreen) { + /// Update option text + +// Fullscreen, Scale +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 +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]; + + +/* +if (global.opfullscreen) { op[0].optext = get_text("GlobalOptions", "Enabled"); op[1].label = get_text("OptionsDisplay", "DisplayScale"); } else { @@ -531,22 +920,15 @@ if (global.widescreen_enabled) { 1 - with (op[0]) instance_destroy(); -with (op[1]) instance_destroy(); -with (op[2]) instance_destroy(); -with (op[3]) instance_destroy(); -with (op[4]) instance_destroy(); -with (op[5]) instance_destroy(); -with (op[6]) instance_destroy(); -with (op[7]) instance_destroy(); -with (op[8]) instance_destroy(); -with (op[9]) instance_destroy(); -with (op[10]) instance_destroy(); -with (op[11]) instance_destroy(); -with (op[12]) instance_destroy(); -with (op[50]) instance_destroy(); -with (op[51]) instance_destroy(); -with (op[52]) instance_destroy(); + /// Delete menu options +for (var i = 0; i <= menuSize; i++) { + with (op[i]) instance_destroy(); +} + +// Delete headers +for (var i = 50; i <= 52; i++) { + with (op[i]) instance_destroy(); +} @@ -569,7 +951,116 @@ with (op[52]) instance_destroy(); 1 - y -= 8; + /// 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 ((os_type != os_android && !gamepad_is_connected(global.gamepadIndex)) || (os_type == os_android && (!global.joydetected || global.compatibilitymode)) || (os_type == os_android && global.compatibilitymode)) { + 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++; + +// 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); + + +/* +y -= 8; sep = 16; var i = 1; op[50] = instance_create(x, y * i, oMenuLabel); @@ -586,7 +1077,7 @@ if (global.opfullscreen) { op[1].label = get_text("OptionsDisplay", "DisplayScale"); } else op[1].label = get_text("OptionsDisplay", "WindowSize"); op[1].optionid = 1; -if(os_type == os_android) { // android, make op[1] vsync invis +if(os_type == os_android) { // android, make op[1] invis op[1].visible = false; global.canedit[1] = 0; } diff --git a/scripts/wrap.gml b/scripts/wrap.gml new file mode 100644 index 0000000..57c2744 --- /dev/null +++ b/scripts/wrap.gml @@ -0,0 +1,5 @@ +/// wrap(variable, min, max) + +if (argument0 < argument1) return argument2; +else if (argument0 > argument2) return argument1; +else return argument0; diff --git a/sprites/sGamet1.sprite.gmx b/sprites/sGamet1.sprite.gmx index e2a97cb..0ea9b72 100644 --- a/sprites/sGamet1.sprite.gmx +++ b/sprites/sGamet1.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 19 - 0 - 15 + 19 + 0 + 15 + 0 0 0 @@ -21,8 +21,5 @@ 16 images\sGamet1_0.png - images\sGamet1_1.png - images\sGamet1_2.png - images\sGamet1_3.png diff --git a/sprites/sGamet2.sprite.gmx b/sprites/sGamet2.sprite.gmx index 9367159..b164d71 100644 --- a/sprites/sGamet2.sprite.gmx +++ b/sprites/sGamet2.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 19 - 0 - 16 + 19 + 0 + 16 + 0 0 0 @@ -21,8 +21,5 @@ 17 images\sGamet2_0.png - images\sGamet2_1.png - images\sGamet2_2.png - images\sGamet2_3.png diff --git a/sprites/sGeega1.sprite.gmx b/sprites/sGeega1.sprite.gmx index 80e8280..5e8432a 100644 --- a/sprites/sGeega1.sprite.gmx +++ b/sprites/sGeega1.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 1 - 16 - 1 - 16 + 17 + 0 + 17 + 0 0 0 @@ -21,8 +21,5 @@ 18 images\sGeega1_0.png - images\sGeega1_1.png - images\sGeega1_2.png - images\sGeega1_3.png diff --git a/sprites/sGeega2.sprite.gmx b/sprites/sGeega2.sprite.gmx index 409424e..d9bf67a 100644 --- a/sprites/sGeega2.sprite.gmx +++ b/sprites/sGeega2.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 1 - 16 - 1 - 16 + 17 + 0 + 17 + 0 0 0 @@ -21,8 +21,5 @@ 18 images\sGeega2_0.png - images\sGeega2_1.png - images\sGeega2_2.png - images\sGeega2_3.png diff --git a/sprites/sGeemer.sprite.gmx b/sprites/sGeemer.sprite.gmx index 3d0e04b..306e0c4 100644 --- a/sprites/sGeemer.sprite.gmx +++ b/sprites/sGeemer.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 22 - 0 - 17 + 22 + 0 + 17 + 0 0 0 @@ -21,9 +21,5 @@ 18 images\sGeemer_0.png - images\sGeemer_1.png - images\sGeemer_2.png - images\sGeemer_3.png - images\sGeemer_4.png diff --git a/sprites/sMellow.sprite.gmx b/sprites/sMellow.sprite.gmx index 8849324..9d1af23 100644 --- a/sprites/sMellow.sprite.gmx +++ b/sprites/sMellow.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 19 - 1 - 8 + 19 + 0 + 9 + 0 0 0 @@ -21,8 +21,5 @@ 10 images\sMellow_0.png - images\sMellow_1.png - images\sMellow_2.png - images\sMellow_3.png diff --git a/sprites/sSkree1.sprite.gmx b/sprites/sSkree1.sprite.gmx index 513d038..08eb0a8 100644 --- a/sprites/sSkree1.sprite.gmx +++ b/sprites/sSkree1.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 27 - 0 - 26 + 27 + 0 + 26 + 0 0 0 @@ -21,8 +21,5 @@ 27 images\sSkree1_0.png - images\sSkree1_1.png - images\sSkree1_2.png - images\sSkree1_3.png diff --git a/sprites/sSkree2.sprite.gmx b/sprites/sSkree2.sprite.gmx index ab7277d..2c25871 100644 --- a/sprites/sSkree2.sprite.gmx +++ b/sprites/sSkree2.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 21 - 0 - 28 + 21 + 0 + 28 + 0 0 0 @@ -21,9 +21,5 @@ 29 images\sSkree2_0.png - images\sSkree2_1.png - images\sSkree2_2.png - images\sSkree2_3.png - images\sSkree2_4.png diff --git a/sprites/sSkreeB1.sprite.gmx b/sprites/sSkreeB1.sprite.gmx index ec9f965..83d00c5 100644 --- a/sprites/sSkreeB1.sprite.gmx +++ b/sprites/sSkreeB1.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 27 - 0 - 26 + 27 + 0 + 26 + 0 0 0 @@ -21,8 +21,5 @@ 27 images\sSkreeB1_0.png - images\sSkreeB1_1.png - images\sSkreeB1_2.png - images\sSkreeB1_3.png diff --git a/sprites/sSkreeB2.sprite.gmx b/sprites/sSkreeB2.sprite.gmx index 4011775..e8223e6 100644 --- a/sprites/sSkreeB2.sprite.gmx +++ b/sprites/sSkreeB2.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 21 - 0 - 28 + 21 + 0 + 28 + 0 0 0 @@ -21,9 +21,5 @@ 29 images\sSkreeB2_0.png - images\sSkreeB2_1.png - images\sSkreeB2_2.png - images\sSkreeB2_3.png - images\sSkreeB2_4.png diff --git a/sprites/sViola.sprite.gmx b/sprites/sViola.sprite.gmx index a9047a0..69bffab 100644 --- a/sprites/sViola.sprite.gmx +++ b/sprites/sViola.sprite.gmx @@ -21,21 +21,5 @@ 16 images\sViola_0.png - images\sViola_1.png - images\sViola_2.png - images\sViola_3.png - images\sViola_4.png - images\sViola_5.png - images\sViola_6.png - images\sViola_7.png - images\sViola_8.png - images\sViola_9.png - images\sViola_10.png - images\sViola_11.png - images\sViola_12.png - images\sViola_13.png - images\sViola_14.png - images\sViola_15.png - images\sViola_16.png diff --git a/sprites/sViolaB.sprite.gmx b/sprites/sViolaB.sprite.gmx index fbe0ae7..ca0c84c 100644 --- a/sprites/sViolaB.sprite.gmx +++ b/sprites/sViolaB.sprite.gmx @@ -21,21 +21,5 @@ 16 images\sViolaB_0.png - images\sViolaB_1.png - images\sViolaB_2.png - images\sViolaB_3.png - images\sViolaB_4.png - images\sViolaB_5.png - images\sViolaB_6.png - images\sViolaB_7.png - images\sViolaB_8.png - images\sViolaB_9.png - images\sViolaB_10.png - images\sViolaB_11.png - images\sViolaB_12.png - images\sViolaB_13.png - images\sViolaB_14.png - images\sViolaB_15.png - images\sViolaB_16.png diff --git a/sprites/sWaver.sprite.gmx b/sprites/sWaver.sprite.gmx index d514463..718af7c 100644 --- a/sprites/sWaver.sprite.gmx +++ b/sprites/sWaver.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 25 - 1 - 23 + 25 + 0 + 24 + 0 0 0 @@ -21,10 +21,5 @@ 25 images\sWaver_0.png - images\sWaver_1.png - images\sWaver_2.png - images\sWaver_3.png - images\sWaver_4.png - images\sWaver_5.png diff --git a/sprites/sWaverB.sprite.gmx b/sprites/sWaverB.sprite.gmx index c11bc73..4cd12cd 100644 --- a/sprites/sWaverB.sprite.gmx +++ b/sprites/sWaverB.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 0 - 25 - 1 - 23 + 25 + 0 + 24 + 0 0 0 @@ -21,10 +21,5 @@ 25 images\sWaverB_0.png - images\sWaverB_1.png - images\sWaverB_2.png - images\sWaverB_3.png - images\sWaverB_4.png - images\sWaverB_5.png diff --git a/sprites/sZebbo1.sprite.gmx b/sprites/sZebbo1.sprite.gmx index eedb961..9917748 100644 --- a/sprites/sZebbo1.sprite.gmx +++ b/sprites/sZebbo1.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 1 - 16 - 1 - 16 + 17 + 0 + 16 + 0 0 0 @@ -21,7 +21,5 @@ 17 images\sZebbo1_0.png - images\sZebbo1_1.png - images\sZebbo1_2.png diff --git a/sprites/sZebbo2.sprite.gmx b/sprites/sZebbo2.sprite.gmx index a4bd3d5..885cbd9 100644 --- a/sprites/sZebbo2.sprite.gmx +++ b/sprites/sZebbo2.sprite.gmx @@ -7,10 +7,10 @@ 0 0 0 - 1 - 16 - 1 - 15 + 17 + 0 + 16 + 0 0 0 @@ -21,7 +21,5 @@ 17 images\sZebbo2_0.png - images\sZebbo2_1.png - images\sZebbo2_2.png