Path: blob/master/SonicMania/Objects/BSS/BSS_Collected.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: BSS_Collected Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectBSS_Collected *BSS_Collected;1011void BSS_Collected_Update(void)12{13RSDK_THIS(BSS_Collected);1415EntityBSS_Setup *setup = RSDK_GET_ENTITY(SLOT_BSS_SETUP, BSS_Setup);16int32 fieldPos = self->position.y + (BSS_PLAYFIELD_W * self->position.x);1718switch (self->type) {19case BSS_COLLECTED_RING:20++BSS_Setup->ringID;21BSS_Setup->ringID &= 0xF;2223if (++self->timer >= 16 && setup->state == BSS_Setup_State_GlobeMoveZ) {24BSS_Setup->playField[fieldPos] = BSS_NONE;25destroyEntity(self);26}27break;2829case BSS_COLLECTED_BLUE:30if (BSS_Setup->sphereCount <= 0) {31if (BSS_Setup->playField[fieldPos] == BSS_BLUE_STOOD)32BSS_Setup->playField[fieldPos] = BSS_SPHERE_RED;3334destroyEntity(self);35}36else {37if (setup->globeTimer < 32 || setup->globeTimer > 224)38self->type = BSS_COLLECTED_BLUE_STOOD;39}40break;4142case BSS_COLLECTED_BLUE_STOOD:43if (setup->state == BSS_Setup_State_GlobeMoveZ) {44if (setup->globeTimer > 32 && setup->globeTimer < 224) {45if (BSS_Setup->playField[fieldPos] == BSS_BLUE_STOOD)46BSS_Setup->playField[fieldPos] = BSS_SPHERE_RED;4748destroyEntity(self);49}50}51break;5253case BSS_COLLECTED_GREEN:54if (setup->globeTimer < 32 || setup->globeTimer > 224) {55self->timer = 10;56self->type = BSS_COLLECTED_GREEN_STOOD;57}58break;5960case BSS_COLLECTED_GREEN_STOOD:61if (setup->state == BSS_Setup_State_GlobeMoveZ && --self->timer <= 0) {62if (BSS_Setup->playField[fieldPos] == BSS_SPHERE_GREEN_STOOD)63BSS_Setup->playField[fieldPos] = BSS_SPHERE_BLUE;6465destroyEntity(self);66}67break;6869case BSS_COLLECTED_PINK:70if (setup->state == BSS_Setup_State_GlobeMoveZ) {71if (setup->playerPos.x != self->position.x || setup->playerPos.y != self->position.y) {72if (BSS_Setup->playField[fieldPos] == BSS_SPHERE_PINK_STOOD)73BSS_Setup->playField[fieldPos] = BSS_SPHERE_PINK;7475destroyEntity(self);76}77}78break;7980default: break;81}82}8384void BSS_Collected_LateUpdate(void) {}8586void BSS_Collected_StaticUpdate(void) {}8788void BSS_Collected_Draw(void) {}8990void BSS_Collected_Create(void *data)91{92RSDK_THIS(BSS_Collected);9394if (!SceneInfo->inEditor) {95self->active = ACTIVE_NORMAL;96self->type = VOID_TO_INT(data);97}98}99100void BSS_Collected_StageLoad(void) {}101102#if GAME_INCLUDE_EDITOR103void BSS_Collected_EditorDraw(void) {}104105void BSS_Collected_EditorLoad(void) {}106#endif107108void BSS_Collected_Serialize(void) {}109110111