Path: blob/master/SonicMania/Objects/Menu/ExtrasMenu.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: ExtrasMenu Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89#if MANIA_USE_PLUS10ObjectExtrasMenu *ExtrasMenu;1112void ExtrasMenu_Update(void) {}1314void ExtrasMenu_LateUpdate(void) {}1516void ExtrasMenu_StaticUpdate(void) {}1718void ExtrasMenu_Draw(void) {}1920void ExtrasMenu_Create(void *data) {}2122void ExtrasMenu_StageLoad(void) {}2324void ExtrasMenu_Initialize(void)25{26String tag;27INIT_STRING(tag);28RSDK.SetString(&tag, "Extras");2930LogHelpers_Print("ManiaModeMenu_Initialize()");3132foreach_all(UIControl, control)33{34if (RSDK.CompareStrings(&tag, &control->tag, false))35ExtrasMenu->extrasControl = control;36}37}3839void ExtrasMenu_HandleUnlocks(void)40{41EntityUIControl *control = (EntityUIControl *)ExtrasMenu->extrasControl;4243EntityUIButton *bssButton = control->buttons[0];44bssButton->disabled = !GameProgress_CheckUnlock(GAMEPROGRESS_UNLOCK_BLUESPHERES);45if (bssButton->disabled)46UIButton_ManageChoices(bssButton);4748EntityUIButton *puyoButton = control->buttons[1];49puyoButton->disabled = !GameProgress_CheckUnlock(GAMEPROGRESS_UNLOCK_MEANBEAN);50if (puyoButton->disabled)51UIButton_ManageChoices(puyoButton);5253EntityUIButton *daGardenButton = control->buttons[2];54daGardenButton->disabled = !GameProgress_CheckUnlock(GAMEPROGRESS_UNLOCK_DAGARDEN) && !globals->medallionDebug;55}5657void ExtrasMenu_SetupActions(void)58{59EntityUIControl *control = (EntityUIControl *)ExtrasMenu->extrasControl;6061control->processButtonInputCB = ExtrasMenu_ProcessInputs;6263foreach_all(UIButton, button)64{65if (button->listID == 7) {66switch (button->frameID) {67default: break;6869case 4:70button->actionCB = ExtrasMenu_DAGarden_ActionCB;71button->clearParentState = true;72break;7374case 8:75button->actionCB = ExtrasMenu_CreditsButton_ActionCB;76button->clearParentState = true;77break;78}79}80}8182foreach_all(UIChoice, choice)83{84if (choice->listID == 7) {85switch (choice->frameID) {86default: break;8788case 2:89choice->actionCB = ExtrasMenu_Puyo_vsAI_ActionCB;90choice->clearParentState = true;91break;9293case 3:94choice->actionCB = ExtrasMenu_Puyo_vs2P_ActionCB;95choice->clearParentState = true;96break;9798case 6:99choice->actionCB = ExtrasMenu_BSS_S3_ActionCB;100choice->clearParentState = true;101break;102103case 7:104choice->actionCB = ExtrasMenu_BSS_Mania_ActionCB;105choice->clearParentState = true;106break;107}108}109}110}111112void ExtrasMenu_ProcessMedallionCheat(void)113{114int32 key = 0;115if (UIControl->anyLeftPress)116key = 1;117else if (UIControl->anyRightPress)118key = 2;119120if (key) {121for (int32 i = 0; i < 7; ++i) ExtrasMenu->cheatCode[i] = ExtrasMenu->cheatCode[i + 1];122123ExtrasMenu->cheatCode[7] = key;124}125}126127bool32 ExtrasMenu_CheckMedallionCheat(void)128{129// left, left, right, right, left, right, left, right130return ExtrasMenu->cheatCode[0] == 1 && ExtrasMenu->cheatCode[1] == 1 && ExtrasMenu->cheatCode[2] == 2 && ExtrasMenu->cheatCode[3] == 2131&& ExtrasMenu->cheatCode[4] == 1 && ExtrasMenu->cheatCode[5] == 2 && ExtrasMenu->cheatCode[6] == 1 && ExtrasMenu->cheatCode[7] == 2;132}133134void ExtrasMenu_ProcessInputs(void)135{136RSDK_THIS(UIControl);137138#if GAME_VERSION == VER_106139// this "cheat" is technically PC only, but I can't be bothered to ifdef it and it's cooler to have on all platforms140141// buttonID == 2: DAGarden142if (self->buttonID == 2) {143ExtrasMenu_ProcessMedallionCheat();144145if (ExtrasMenu_CheckMedallionCheat()) {146if (!globals->medallionDebug) {147RSDK.PlaySfx(UIWidgets->sfxEvent, false, 255);148globals->medallionDebug = true;149ExtrasMenu_HandleUnlocks();150}151}152}153#endif154155UIControl_ProcessButtonInput();156}157158void ExtrasMenu_Start_Puyo_vsAI(void)159{160EntityMenuParam *param = MenuParam_GetParam();161162TimeAttackData_Clear();163164param->puyoSelection = PUYO_SELECTION_VS_CPU;165strcpy(param->menuTag, "Extras");166param->menuSelection = EXTRAS_SELECTION_PUYO;167168RSDK.SetScene("Extras", "Puyo Puyo");169RSDK.LoadScene();170}171172void ExtrasMenu_Puyo_vsAI_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_Puyo_vsAI, 32); }173174void ExtrasMenu_Start_Puyo_vs2P(void)175{176EntityMenuParam *param = MenuParam_GetParam();177178TimeAttackData_Clear();179180param->puyoSelection = PUYO_SELECTION_VS_2P;181strcpy(param->menuTag, "Extras");182param->menuSelection = EXTRAS_SELECTION_PUYO;183184RSDK.SetScene("Extras", "Puyo Puyo");185RSDK.LoadScene();186}187188void ExtrasMenu_Puyo_vs2P_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_Puyo_vs2P, 32); }189190void ExtrasMenu_Start_Credits(void)191{192EntityMenuParam *param = MenuParam_GetParam();193194TimeAttackData_Clear();195196param->bssSelection = CREDITS_SELECTION_EXTRAS;197strcpy(param->menuTag, "Extras");198param->menuSelection = EXTRAS_SELECTION_CREDITS;199param->creditsReturnToMenu = true;200201RSDK.SetScene("Presentation", "Credits");202RSDK.LoadScene();203}204205void ExtrasMenu_CreditsButton_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_Credits, 32); }206207void ExtrasMenu_Start_DAGarden(void)208{209EntityMenuParam *param = MenuParam_GetParam();210211TimeAttackData_Clear();212213strcpy(param->menuTag, "Extras");214param->menuSelection = EXTRAS_SELECTION_DAGARDEN;215216#if MANIA_USE_PLUS217if (API.CheckDLC(DLC_PLUS))218RSDK.SetScene("Extras", "D.A. Garden Plus");219else220#endif221RSDK.SetScene("Extras", "D.A. Garden");222223RSDK.LoadScene();224}225226void ExtrasMenu_DAGarden_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_DAGarden, 32); }227228void ExtrasMenu_Start_BSS_3K(void)229{230EntityMenuParam *param = MenuParam_GetParam();231232TimeAttackData_Clear();233234param->bssSelection = BSS_SELECTION_EXTRAS;235strcpy(param->menuTag, "Extras");236param->menuSelection = EXTRAS_SELECTION_BSS;237238RSDK.SetScene("Blue Spheres", "Random");239RSDK.LoadScene();240}241242void ExtrasMenu_BSS_S3_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_BSS_3K, 32); }243244void ExtrasMenu_Start_BSS_Mania(void)245{246EntityMenuParam *param = MenuParam_GetParam();247248TimeAttackData_Clear();249250param->bssSelection = BSS_SELECTION_EXTRAS;251strcpy(param->menuTag, "Extras");252param->menuSelection = EXTRAS_SELECTION_BSS;253254RSDK.SetScene("Blue Spheres", "Random 2");255RSDK.LoadScene();256}257258void ExtrasMenu_BSS_Mania_ActionCB(void) { MenuSetup_StartTransition(ExtrasMenu_Start_BSS_Mania, 32); }259260#if GAME_INCLUDE_EDITOR261void ExtrasMenu_EditorDraw(void) {}262263void ExtrasMenu_EditorLoad(void) {}264#endif265266void ExtrasMenu_Serialize(void) {}267#endif268269270