Path: blob/master/SonicMania/Objects/MMZ/VanishPlatform.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: VanishPlatform Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectVanishPlatform *VanishPlatform;1011void VanishPlatform_Update(void)12{13RSDK_THIS(VanishPlatform);1415if (!((Zone->timer + self->intervalOffset) % self->interval) && self->state == Platform_State_Fixed) {16self->active = ACTIVE_NORMAL;17self->timer = self->duration;18self->state = VanishPlatform_State_Appear;19}2021if (self->scale.x <= 336) {22self->stateCollide = Platform_Collision_None;23self->collision = PLATFORM_C_NONE;24}25else {26self->stateCollide = Platform_Collision_Platform;27self->collision = PLATFORM_C_PLATFORM;28}2930Platform_Update();31}3233void VanishPlatform_LateUpdate(void) {}3435void VanishPlatform_StaticUpdate(void) {}3637void VanishPlatform_Draw(void)38{39RSDK_THIS(VanishPlatform);4041RSDK.DrawSprite(&self->animator, &self->drawPos, false);42}4344void VanishPlatform_Create(void *data)45{46RSDK_THIS(VanishPlatform);4748self->collision = PLATFORM_C_PLATFORM;49Platform_Create(NULL);5051RSDK.SetSpriteAnimation(Platform->aniFrames, 3, &self->animator, true, 0);5253self->drawFX = FX_SCALE;54self->scale.x = 0;55self->scale.y = 0x200;56self->state = Platform_State_Fixed;57}5859void VanishPlatform_StageLoad(void) {}6061void VanishPlatform_State_Appear(void)62{63RSDK_THIS(VanishPlatform);6465if (self->scale.x < 0x200)66self->scale.x += 22;6768if (--self->timer <= 0)69self->state = VanishPlatform_State_Disappear;70}7172void VanishPlatform_State_Disappear(void)73{74RSDK_THIS(VanishPlatform);7576if (self->scale.x <= 0) {77self->active = ACTIVE_BOUNDS;78self->state = Platform_State_Fixed;79}80else {81self->scale.x -= 22;82}83}8485#if GAME_INCLUDE_EDITOR86void VanishPlatform_EditorDraw(void)87{88RSDK_THIS(VanishPlatform);8990self->drawPos = self->position;91self->drawFX = FX_NONE;9293VanishPlatform_Draw();9495if (showGizmos()) {96RSDK_DRAWING_OVERLAY(true);9798for (int32 s = SceneInfo->entitySlot + 1, i = 0; i < self->childCount; ++i) {99Entity *child = RSDK_GET_ENTITY_GEN(s + i);100if (!child)101continue;102103DrawHelpers_DrawArrow(self->position.x, self->position.y, child->position.x, child->position.y, 0xE0E0E0, INK_NONE, 0xFF);104}105106RSDK_DRAWING_OVERLAY(false);107}108}109110void VanishPlatform_EditorLoad(void) {}111#endif112113void VanishPlatform_Serialize(void)114{115RSDK_EDITABLE_VAR(VanishPlatform, VAR_ENUM, childCount);116RSDK_EDITABLE_VAR(VanishPlatform, VAR_UINT16, interval);117RSDK_EDITABLE_VAR(VanishPlatform, VAR_UINT16, intervalOffset);118RSDK_EDITABLE_VAR(VanishPlatform, VAR_UINT16, duration);119}120121122