Path: blob/main/Scripts/Menu/MenuHeading.txt
1319 views
//----------------Sonic CD Menu Heading Script----------------//1//--------Scripted by Christian Whitehead 'The Taxman'--------//2//-------Unpacked By Rubberduckycooly's Script Unpacker-------//34// Aliases5#alias Object.PropertyValue : Object.Header6#alias Object.Value0 : Object.Timer7#alias Object.Value1 : Object.YOffset8#alias Object.Value2 : Object.XOffset9#alias Object.Value3 : Object.Angle10#alias Object.Value4 : Object.GFX111#alias Object.Value5 : Object.GFX21213// Object[1] is a blank object just to share values14#alias Object[1].Value2 : Object.MaxButtonCount1516//MenuHeading_CheckTouchBack Specific Values17#alias Object.Value1 : CurrentMenu.ButtonPressed //Current Menu Button Pressed18#alias Object[1].Value4 : Object.BackTouchPress1920// States21#alias 0 : MENUHEADING_IDLE22#alias 1 : MENUHEADING_LEAVE_SCREEN23#alias 2 : MENUHEADING_ENTER_SCREEN2425// Property Values26#alias 5 : MAINMENU_HEADER27#alias 6 : SAVESELECT_HEADER28#alias 7 : HELP&OPTIONS_HEADER29#alias 8 : EXTRAS_HEADER30#alias 9 : SOUNDTRACK_HEADER31#alias 10 : STAGESELECT_HEADER3233// Ink Effects34#alias 2 : INK_ALPHA3536// Languages37#alias 0 : LANG_ENGLISH38#alias 1 : LANG_FRENCH39#alias 2 : LANG_ITALIAN40#alias 3 : LANG_DEUTSCH41#alias 4 : LANG_SPANISH42#alias 5 : LANG_JAPANESE4344//Engine & CallBacks45#alias 2 : MESSAGE_LOSTFOCUS4647// Device Type48#alias 0 : RETRO_STANDARD4950// Function declarations51#function MenuHeading_CheckTouchBack525354function MenuHeading_CheckTouchBack //This is used by other scripts to check if the back touch button is pressed55if Engine.Message == MESSAGE_LOSTFOCUS56CurrentMenu.ButtonPressed = -157end if5859TempValue0 = Screen.XSize60TempValue0 -= 7661CheckTouchRect(TempValue0, 192, Screen.XSize, Screen.YSize)62if CheckResult > -163CurrentMenu.ButtonPressed = 564Object.BackTouchPress = true65else66Object.BackTouchPress = false67if TempValue3 < 068if CurrentMenu.ButtonPressed == 569KeyPress[0].ButtonB = true70end if71else72if CurrentMenu.ButtonPressed == 573CurrentMenu.ButtonPressed = -174end if75end if76end if77end function787980sub ObjectMain81switch Object.State82case MENUHEADING_LEAVE_SCREEN83if Object.Timer < 1684Object.Timer++85Object.XOffset -= 1686else87Object.Frame = Object.Header88Object.Timer = 089Object.State++90end if9192if Object.Alpha == 25593Object.Alpha = 24094else95if Object.Alpha > 096Object.Alpha -= 1697end if98end if99break100101case MENUHEADING_ENTER_SCREEN102if Object.Timer < 16103Object.Timer++104Object.XOffset += 16105else106Object.Timer = 0107Object.State = MENUHEADING_IDLE108end if109110if Object.Header == MAINMENU_HEADER111if Object.Alpha == 240112Object.Alpha = 255113else114if Object.Alpha < 255115Object.Alpha += 16116end if117end if118end if119break120121end switch122end sub123124125sub ObjectDraw126//Draw BG Details127Object.YOffset--128Object.YOffset %= 240129Object.SpriteSheet = Object.GFX1130DrawSpriteScreenXY(1, Screen.CenterX, Object.YOffset)131DrawSpriteScreenXY(2, Screen.CenterX, Object.YOffset)132DrawSpriteScreenXY(0, Screen.CenterX, 20)133134#platform: Use_Decomp // Small decomp change to extend the SONIC THE HEDGEHOG CD bar for wider resolutions135TempValue0 = Screen.CenterX136TempValue0 += 200137DrawRect(TempValue0, 20, screen.XSize, 9, 0, 0, 0, 255)138#endplatform139140TempValue0 = Screen.CenterX141TempValue0 += 12142DrawRect(0, 212, TempValue0, 13, 0, 0, 0, 255)143144//Draw Menu Header145Object.SpriteSheet = Object.GFX2146TempValue0 = Screen.CenterX147TempValue0 -= 160148TempValue0 >>= 2149TempValue0 += Object.XOffset150DrawSpriteScreenXY(Object.Frame, TempValue0, 194)151152//Draw Detail Arrows (Standard) / Drag Arrows (Mobile)153Object.SpriteSheet = Object.GFX1154155Object.Angle += 4156Object.Angle &= 511157158TempValue0 = Screen.XSize159TempValue0 -= 40160//Check if the menu needs dragging to reach all the buttons161if Object.MaxButtonCount > 4162Sin(TempValue1, Object.Angle)163TempValue1 >>= 6164TempValue1 += 96165DrawSpriteScreenFX(3, FX_INK, TempValue0, TempValue1)166167Sin(TempValue1, Object.Angle)168TempValue1 /= -64169TempValue1 += 144170DrawSpriteScreenFX(4, FX_INK, 40, TempValue1)171end if172end sub173174175sub ObjectStartup176LoadSpriteSheet("Menu/MenuGfx1_EN.gif")177ArrayPos0 = 32178while ArrayPos0 < 1056179if Object[ArrayPos0].Type == TypeName[Menu Heading]180#platform: Use_Origins181if game.continueFlag == false // they really duped the whole thing182Object[ArrayPos0].Frame = 5 // "Main Menu"183Object[ArrayPos0].Alpha = 255184Object[ArrayPos0].Header = MAINMENU_HEADER185Object[ArrayPos0].InkEffect = INK_ALPHA186Object[ArrayPos0].XOffset = -256187Object[ArrayPos0].State = MENUHEADING_ENTER_SCREEN188else189Object[ArrayPos0].Frame = 6 // "Save Select"190Object[ArrayPos0].Alpha = 255191Object[ArrayPos0].Header = SAVESELECT_HEADER192Object[ArrayPos0].InkEffect = INK_ALPHA193Object[ArrayPos0].XOffset = -256194Object[ArrayPos0].State = MENUHEADING_ENTER_SCREEN195end if196197#endplatform198199#platform: Use_Standalone200Object[ArrayPos0].Frame = 5201Object[ArrayPos0].Alpha = 255202Object[ArrayPos0].Header = MAINMENU_HEADER203Object[ArrayPos0].InkEffect = INK_ALPHA204Object[ArrayPos0].XOffset = -256205Object[ArrayPos0].State = MENUHEADING_ENTER_SCREEN206#endplatform207208LoadSpriteSheet("Menu/MenuGfx1_EN.gif")209Object[ArrayPos0].GFX1 = Object[ArrayPos0].SpriteSheet210switch Engine.Language211case LANG_ENGLISH212LoadSpriteSheet("Menu/MenuGfx2_EN.gif")213break214case LANG_FRENCH215LoadSpriteSheet("Menu/MenuGfx2_FR.gif")216break217case LANG_ITALIAN218LoadSpriteSheet("Menu/MenuGfx2_IT.gif")219break220case LANG_DEUTSCH221LoadSpriteSheet("Menu/MenuGfx2_DE.gif")222break223case LANG_SPANISH224LoadSpriteSheet("Menu/MenuGfx2_ES.gif")225break226case LANG_JAPANESE227LoadSpriteSheet("Menu/MenuGfx2_JP.gif")228break229end switch230Object[ArrayPos0].GFX2 = Object[ArrayPos0].SpriteSheet231end if232ArrayPos0++233loop234//MenuGfx1235SpriteFrame(12, 0, 216, 9, 1, 225) // #0 Sonic The Hedgehog CD Bar236237SpriteFrame(8, 0, 8, 240, 503, 1) // #1 Vertical Line 1238SpriteFrame(8, 240, 8, 240, 503, 1) // #2 Vertical Line239240// Slight modification, in origins this was a normal "if Engine.DeviceType == RETRO_STANDARD", written like this to help with compatibility241#platform: Use_Origins242CheckEqual(Engine.DeviceType, RETRO_STANDARD)243#endplatform244245#platform: Use_Standalone246#platform: Standard247CheckResult = true248#endplatform249#endplatform250251#platform: Use_Standalone252#platform: Mobile253CheckResult = false254#endplatform255#endplatform256257if CheckResult == true258SpriteFrame(-11, -36, 22, 72, 418, 366) // #3 Up Arrow259SpriteFrame(-11, -36, 22, 72, 441, 366) // #4 Down Arrow260else261switch Engine.Language262case LANG_ENGLISH263case LANG_JAPANESE264SpriteFrame(-11, -36, 22, 72, 418, 1) // #3 Up Arrow265SpriteFrame(-11, -36, 22, 72, 441, 1) // #4 Down Arrow266break267268case LANG_FRENCH269SpriteFrame(-11, -36, 22, 72, 418, 74) // #3 Up Arrow270SpriteFrame(-11, -36, 22, 72, 441, 74) // #4 Down Arrow271break272273case LANG_ITALIAN274SpriteFrame(-11, -36, 22, 72, 418, 147) // #3 Up Arrow275SpriteFrame(-11, -36, 22, 72, 441, 147) // #4 Down Arrow276break277278case LANG_DEUTSCH279SpriteFrame(-11, -36, 22, 72, 418, 220) // #3 Up Arrow280SpriteFrame(-11, -36, 22, 72, 441, 220) // #4 Down Arrow281break282283case LANG_SPANISH284SpriteFrame(-11, -36, 22, 72, 418, 293) // #3 Up Arrow285SpriteFrame(-11, -36, 22, 72, 441, 293) // #4 Down Arrow286break287288end switch289end if290//MenuGfx2291switch Engine.Language292case LANG_ENGLISH293case LANG_JAPANESE294SpriteFrame(32, 0, 160, 30, 1, 615) // #5 Main Menu295SpriteFrame(32, 0, 160, 30, 1, 646) // #6 Save Select296SpriteFrame(16, 0, 160, 30, 1, 677) // #7 Help & Options297SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras298SpriteFrame(24, 0, 160, 30, 1, 739) // #9 Soundtrack299SpriteFrame(24, 0, 160, 30, 1, 770) // #10 Stage Select (Used in Trial versions, this will be a blank sprite in steam, but we cannot see it there anyway)300break301302case LANG_FRENCH303SpriteFrame(12, 0, 160, 30, 1, 615) // #5 Main Menu304SpriteFrame(20, 0, 160, 30, 1, 646) // #6 Save Select305SpriteFrame(14, 0, 160, 30, 1, 677) // #7 Help & Options306SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras307SpriteFrame(10, 0, 160, 30, 1, 739) // #9 Soundtrack308SpriteFrame(24, 0, 160, 30, 1, 770) // #10 Stage Select (Used in Trial versions, this will be a blank sprite in steam, but we cannot see it there anyway)309310break311case LANG_ITALIAN312SpriteFrame(8, 0, 160, 30, 1, 615) // #5 Main Menu313SpriteFrame(32, 0, 160, 30, 1, 646) // #6 Save Select314SpriteFrame(14, 0, 160, 30, 1, 677) // #7 Help & Options315SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras316SpriteFrame(8, 0, 160, 30, 1, 739) // #9 Soundtrack317SpriteFrame(24, 0, 160, 30, 1, 770) // #10 Stage Select (Used in Trial versions, this will be a blank sprite in steam, but we cannot see it there anyway)318319break320case LANG_DEUTSCH321SpriteFrame(24, 0, 160, 30, 1, 615) // #5 Main Menu322SpriteFrame(16, 0, 160, 30, 1, 646) // #6 Save Select323SpriteFrame(6, 0, 160, 30, 1, 677) // #7 Help & Options324SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras325SpriteFrame(24, 0, 160, 30, 1, 739) // #9 Soundtrack326SpriteFrame(24, 0, 160, 30, 1, 770) // #10 Stage Select (Used in Trial versions, this will be a blank sprite in steam, but we cannot see it there anyway)327328break329case LANG_SPANISH330SpriteFrame(16, 0, 160, 30, 1, 615) // #5 Main Menu331SpriteFrame(16, 0, 160, 30, 1, 646) // #6 Save Select332SpriteFrame(8, 0, 160, 30, 1, 677) // #7 Help & Options333SpriteFrame(32, 0, 160, 30, 1, 708) // #8 Extras334SpriteFrame(6, 0, 160, 30, 1, 739) // #9 Soundtrack335SpriteFrame(24, 0, 160, 30, 1, 770) // #10 Stage Select (Used in Trial versions, this will be a blank sprite in steam, but we cannot see it there anyway)336337break338end switch339end sub340341342// ========================343// Editor Subs344// ========================345346sub RSDKDraw347DrawSprite(0)348end sub349350351sub RSDKLoad352LoadSpriteSheet("Menu/MenuGfx2_EN.gif")353SpriteFrame(32, 0, 160, 30, 1, 615) // #5 Main Menu354355// Although used by the object, it's not to be set from the editor356SetVariableAlias(ALIAS_VAR_PROPVAL, "unused")357end sub358359360