Path: blob/master/SonicMania/Objects/Credits/CreditsSetup.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: CreditsSetup Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectCreditsSetup *CreditsSetup;1011void CreditsSetup_Update(void) {}1213void CreditsSetup_LateUpdate(void) {}1415void CreditsSetup_StaticUpdate(void)16{17if (CreditsSetup->started) {18CreditsSetup->scrollPos += 0x1000;1920EntityFXFade *fade = CreditsSetup->fxFade;2122if (!CreditsSetup->skipped) {23// Check if we should play the next track24if (!RSDK.ChannelActive(0))25Music_PlayTrack(++CreditsSetup->creditsTrack);2627if (ControllerInfo->keyStart.press || (CreditsSetup->creditsSize && CreditsSetup->creditsPos >= CreditsSetup->creditsSize)) {28CreditsSetup->skipped = true;2930fade->state = FXFade_State_FadeOut;31fade->speedIn = 8;32fade->wait = 64;33fade->speedOut = 8;34fade->timer = 0;35fade->oneWay = false;36Music_FadeOut(0.0125);37}38}39else {40if (fade->state == FXFade_State_Wait && fade->wait == 1) {41EntityMenuParam *param = MenuParam_GetParam();4243#if MANIA_USE_PLUS44if (param->creditsReturnToMenu) {45RSDK.SetScene("Presentation", "Menu");46}47else if (SaveGame_GetSaveRAM()->collectedEmeralds < 0b01111111) {48globals->gameMode == MODE_ENCORE ? RSDK.SetScene("Cutscenes", "Try Again Encore") : RSDK.SetScene("Cutscenes", "Try Again");49}50else if (globals->gameMode == MODE_ENCORE) {51RSDK.SetScene("Cutscenes", "Mirage Saloon Encore End");52}53else {54API.CheckDLC(DLC_PLUS) ? RSDK.SetScene("Presentation", "Game Summary") : RSDK.SetScene("Presentation", "Menu");55}56#else57if (param->creditsReturnToMenu)58RSDK.SetScene("Presentation", "Menu");59else if (SaveGame_GetSaveRAM()->collectedEmeralds < 0b01111111)60RSDK.SetScene("Cutscenes", "Try Again");61else62RSDK.SetScene("Presentation", "Menu");63#endif6465RSDK.LoadScene();66}67}6869int32 scrollSpeed = 0x10000;70if (ControllerInfo->keyA.down || ControllerInfo->keyB.down || ControllerInfo->keyC.down)71scrollSpeed = 0x80000;7273foreach_all(UICreditsText, text)74{75text->drawGroup = Zone->playerDrawGroup[1];76text->position.y -= scrollSpeed;77}7879CreditsSetup->creditsPos += scrollSpeed;80}81else {82foreach_all(Player, player) { destroyEntity(player); }83foreach_all(Camera, camera) { destroyEntity(camera); }8485CreditsSetup->creditsSize = 0;86CreditsSetup->creditsPos = 0;87CreditsSetup_LoadCreditsStrings();88CreditsSetup->started = true;89}90}9192void CreditsSetup_Draw(void) {}9394void CreditsSetup_Create(void *data) {}9596void CreditsSetup_StageLoad(void)97{98CreditsSetup->started = false;99100foreach_all(FXFade, fxFade) { CreditsSetup->fxFade = fxFade; }101}102103void CreditsSetup_LoadCreditsStrings(void)104{105String string;106String stringList;107108INIT_STRING(stringList);109INIT_STRING(string);110RSDK.LoadStringList(&stringList, "Credits.txt", 8);111RSDK.InitString(&string, "", 0x80);112113int32 offset = (ScreenInfo->size.y + 128) << 16;114for (int32 i = 0; RSDK.SplitStringList(&string, &stringList, i, 1); ++i) {115if (string.length <= 4) {116offset += 0x200000;117}118else {119int32 type = string.chars[1] - '0';120bool32 hasShape = string.chars[2] == 'U';121122string.length -= 3;123for (int32 c = 0; c < string.length; ++c) string.chars[c] = string.chars[c + 3];124125EntityUICreditsText *text = RSDK_GET_ENTITY(i + 0x100, UICreditsText);126RSDK.ResetEntity(text, UICreditsText->classID, 0);127text->hasShape = hasShape;128text->position.x = 0x1000000;129text->position.y = offset;130UICreditsText_SetText(type, text, &string);131132SpriteFrame *frame = RSDK.GetFrame(UICreditsText->aniFrames, type, 0);133if (frame)134offset += (frame->height + 8) << 16;135if (type == 7)136offset -= 0x200000;137}138}139140CreditsSetup->creditsSize = offset + (ScreenInfo->size.y << 15);141}142143#if GAME_INCLUDE_EDITOR144void CreditsSetup_EditorDraw(void) {}145146void CreditsSetup_EditorLoad(void) {}147#endif148149void CreditsSetup_Serialize(void) {}150151152