Path: blob/master/SonicMania/Objects/Global/DebugMode.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: DebugMode Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectDebugMode *DebugMode;1011void DebugMode_Update(void)12{13RSDK_THIS(DebugMode);1415API_SetAchievementsEnabled(false);1617if (Zone)18Zone->stageFinishCallback = StateMachine_None;1920bool32 moved = false;2122#if MANIA_USE_PLUS23if (ControllerInfo[CONT_P1].keyUp.down || (AnalogStickInfoL[CONT_P1].vDelta > 0.3)) {24self->position.y -= self->velocity.y;25moved = true;26}27else if (ControllerInfo[CONT_P1].keyDown.down || (AnalogStickInfoL[CONT_P1].vDelta < -0.3)) {28self->position.y += self->velocity.y;29moved = true;30}3132if (ControllerInfo[CONT_P1].keyLeft.down || (AnalogStickInfoL[CONT_P1].hDelta < -0.3)) {33self->position.x -= self->velocity.y;34moved = true;35}36else if (ControllerInfo[CONT_P1].keyRight.down || (AnalogStickInfoL[CONT_P1].hDelta > 0.3)) {37self->position.x += self->velocity.y;38moved = true;39}40#else41if (ControllerInfo[CONT_P1].keyUp.down || (AnalogStickInfoL[CONT_P1].vDeltaL > 0.3)) {42self->position.y -= self->velocity.y;43moved = true;44}45else if (ControllerInfo[CONT_P1].keyDown.down || (AnalogStickInfoL[CONT_P1].vDeltaL < -0.3)) {46self->position.y += self->velocity.y;47moved = true;48}4950if (ControllerInfo[CONT_P1].keyLeft.down || (AnalogStickInfoL[CONT_P1].hDeltaL < -0.3)) {51self->position.x -= self->velocity.y;52moved = true;53}54else if (ControllerInfo[CONT_P1].keyRight.down || (AnalogStickInfoL[CONT_P1].hDeltaL > 0.3)) {55self->position.x += self->velocity.y;56moved = true;57}58#endif5960if (!moved) {61self->velocity.y = 0;62}63else {64self->velocity.y += 0xC00;65if (self->velocity.y > TO_FIXED(16))66self->velocity.y = TO_FIXED(16);67}6869#if GAME_VERSION != VER_10070bool32 keySpawn = ControllerInfo[CONT_P1].keyY.press;71bool32 keyBack = ControllerInfo[CONT_P1].keyX.press;72#else73bool32 keySpawn = ControllerInfo[CONT_P1].keyX.press;74bool32 keyBack = ControllerInfo[CONT_P1].keyY.press;75#endif7677if (ControllerInfo[CONT_P1].keyA.press) {78++DebugMode->itemID;79DebugMode->itemID %= DebugMode->itemCount;80DebugMode->itemType = 0;81}82else if (keyBack) {83// Do this so we can access the player variables again84RSDK_THIS(Player);85self->classID = Player->classID;86self->groundVel = 0;87self->velocity.x = 0;88self->velocity.y = 0;89self->state = Player_State_Air;90self->collisionPlane = 0;91self->tileCollisions = TILECOLLISION_DOWN;92self->interaction = true;93self->visible = true;94self->drawGroup = Zone->playerDrawGroup[0];9596SceneInfo->timeEnabled = true;97if (SceneInfo->minutes == 9 && SceneInfo->seconds == 59 && SceneInfo->milliseconds == 99) {98SceneInfo->minutes = 0;99SceneInfo->seconds = 0;100SceneInfo->milliseconds = 0;101}102103DebugMode->debugActive = false;104}105else if (ControllerInfo[CONT_P1].keyA.down) {106if (ControllerInfo[CONT_P1].keyC.press || keySpawn) {107if (--DebugMode->itemID < 0)108DebugMode->itemID = DebugMode->itemCount - 1;109110DebugMode->itemType = 0;111}112113if (ControllerInfo[CONT_P1].keyB.press) {114DebugMode->itemType--;115116if (DebugMode->itemType >= DebugMode->itemTypeCount)117DebugMode->itemType = DebugMode->itemTypeCount - 1;118}119}120else if (ControllerInfo[CONT_P1].keyC.press || keySpawn) {121StateMachine_Run(DebugMode->spawn[DebugMode->itemID]);122}123else if (ControllerInfo[CONT_P1].keyB.press) {124if (DebugMode->itemType >= DebugMode->itemTypeCount - 1)125DebugMode->itemType = 0;126else127DebugMode->itemType++;128}129}130131void DebugMode_LateUpdate(void) {}132133void DebugMode_StaticUpdate(void) {}134135void DebugMode_Draw(void) { StateMachine_Run(DebugMode->draw[DebugMode->itemID]); }136137void DebugMode_Create(void *data)138{139RSDK_THIS(DebugMode);140141self->active = ACTIVE_NORMAL;142self->visible = true;143}144145void DebugMode_StageLoad(void)146{147DebugMode->itemID = 0;148DebugMode->itemCount = 0;149DebugMode->debugActive = false;150151for (int32 i = 0; i < DEBUGMODE_OBJECT_COUNT; ++i) {152DebugMode->classIDs[i] = TYPE_BLANK;153DebugMode->draw[i] = StateMachine_None;154DebugMode->spawn[i] = DebugMode_NullState;155}156}157158void DebugMode_NullState(void) {}159160void DebugMode_AddObject(uint16 id, void (*draw)(void), void (*spawn)(void))161{162if (DebugMode->itemCount < DEBUGMODE_OBJECT_COUNT) {163DebugMode->classIDs[DebugMode->itemCount] = id;164DebugMode->draw[DebugMode->itemCount] = draw;165DebugMode->spawn[DebugMode->itemCount] = spawn;166DebugMode->itemCount++;167}168}169170#if GAME_INCLUDE_EDITOR171void DebugMode_EditorDraw(void) {}172173void DebugMode_EditorLoad(void) {}174#endif175176void DebugMode_Serialize(void) {}177178179