Path: blob/master/SonicMania/Objects/Cutscene/ChaosEmerald.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: ChaosEmerald Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectChaosEmerald *ChaosEmerald;1011void ChaosEmerald_Update(void)12{13RSDK_THIS(ChaosEmerald);1415StateMachine_Run(self->state);16}1718void ChaosEmerald_LateUpdate(void) {}1920void ChaosEmerald_StaticUpdate(void) {}2122void ChaosEmerald_Draw(void)23{24RSDK_THIS(ChaosEmerald);2526for (int32 c = 0; c < 36; ++c) {27ChaosEmerald->colorStorage[c] = RSDK.GetPaletteEntry(0, c + 128);28RSDK.SetPaletteEntry(0, c + 128, ChaosEmerald->emeraldColors[c]);29}3031RSDK.DrawSprite(&self->animator, NULL, false);3233for (int32 c = 0; c < 36; ++c) {34RSDK.SetPaletteEntry(0, c + 0x80, ChaosEmerald->colorStorage[c]);35}36}3738void ChaosEmerald_Create(void *data)39{40RSDK_THIS(ChaosEmerald);4142self->active = ACTIVE_BOUNDS;43self->drawGroup = Zone->objectDrawGroup[1];44self->originPos = self->position;45self->visible = true;46self->drawFX = FX_FLIP;47self->updateRange.x = 0x800000;48self->updateRange.y = 0x800000;49self->state = ChaosEmerald_State_None;50RSDK.SetSpriteAnimation(ChaosEmerald->aniFrames, 0, &self->animator, true, self->type);51}5253void ChaosEmerald_StageLoad(void) { ChaosEmerald->aniFrames = RSDK.LoadSpriteAnimation("Cutscene/Emeralds.bin", SCOPE_STAGE); }5455void ChaosEmerald_State_None(void)56{57// hello58}59void ChaosEmerald_State_Rotate(void)60{61RSDK_THIS(ChaosEmerald);6263self->angle += self->groundVel;64self->position.x = self->radius * RSDK.Cos256(self->angle >> 8) + self->originPos.x;65self->position.y = self->radius * RSDK.Sin256(self->angle >> 8) + self->originPos.y;66}6768#if GAME_INCLUDE_EDITOR69void ChaosEmerald_EditorDraw(void)70{71RSDK_THIS(ChaosEmerald);7273RSDK.SetSpriteAnimation(ChaosEmerald->aniFrames, 0, &self->animator, true, self->type);74RSDK.DrawSprite(&self->animator, NULL, false);75}7677void ChaosEmerald_EditorLoad(void)78{79ChaosEmerald->aniFrames = RSDK.LoadSpriteAnimation("Cutscene/Emeralds.bin", SCOPE_STAGE);8081RSDK_ACTIVE_VAR(ChaosEmerald, type);82RSDK_ENUM_VAR("Green", CHAOSEMERALD_GREEN);83RSDK_ENUM_VAR("Yellow", CHAOSEMERALD_YELLOW);84RSDK_ENUM_VAR("Blue", CHAOSEMERALD_BLUE);85RSDK_ENUM_VAR("Purple", CHAOSEMERALD_PURPLE);86RSDK_ENUM_VAR("Gray", CHAOSEMERALD_GRAY);87RSDK_ENUM_VAR("Cyan", CHAOSEMERALD_CYAN);88RSDK_ENUM_VAR("Red", CHAOSEMERALD_RED);89}90#endif9192void ChaosEmerald_Serialize(void) { RSDK_EDITABLE_VAR(ChaosEmerald, VAR_UINT8, type); }939495