Path: blob/master/SonicMania/Objects/AIZ/AIZEggRobo.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: AIZEggRobo Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectAIZEggRobo *AIZEggRobo;1011void AIZEggRobo_Update(void)12{13RSDK_THIS(AIZEggRobo);1415if (self->oscillate)16self->position.y += RSDK.Sin256(4 * (self->oscillateOffset + Zone->timer)) << 7;1718if (self->movePos.x != self->position.x) {19int32 distance = self->position.x - self->movePos.x;20if (distance < 0)21self->direction = FLIP_X;22else if (distance > 0)23self->direction = FLIP_NONE;24}2526self->movePos = self->position;27RSDK.ProcessAnimation(&self->animatorBody);28RSDK.ProcessAnimation(&self->animatorLegs);29RSDK.ProcessAnimation(&self->animatorArm);30}3132void AIZEggRobo_LateUpdate(void) {}3334void AIZEggRobo_StaticUpdate(void) {}3536void AIZEggRobo_Draw(void)37{38RSDK_THIS(AIZEggRobo);3940RSDK.DrawSprite(&self->animatorLegs, NULL, false);41RSDK.DrawSprite(&self->animatorBody, NULL, false);42RSDK.DrawSprite(&self->animatorArm, NULL, false);43}4445void AIZEggRobo_Create(void *data)46{47RSDK_THIS(AIZEggRobo);48self->active = ACTIVE_BOUNDS;49self->drawGroup = Zone->objectDrawGroup[0];50self->rotation = self->angle;51self->startPos = self->position;52self->movePos.x = self->position.x;53self->movePos.y = self->position.y;54self->visible = true;55self->drawFX = FX_ROTATE | FX_FLIP;56self->updateRange.x = 0x800000;57self->updateRange.y = 0x800000;58self->oscillateOffset = RSDK.Rand(0, 256);5960RSDK.SetSpriteAnimation(AIZEggRobo->aniFrames, 0, &self->animatorBody, true, 0);61RSDK.SetSpriteAnimation(AIZEggRobo->aniFrames, 1, &self->animatorArm, true, 0);62RSDK.SetSpriteAnimation(AIZEggRobo->aniFrames, 2, &self->animatorLegs, true, 0);63}6465void AIZEggRobo_StageLoad(void) { AIZEggRobo->aniFrames = RSDK.LoadSpriteAnimation("AIZ/AIZEggRobo.bin", SCOPE_STAGE); }6667#if GAME_INCLUDE_EDITOR68void AIZEggRobo_EditorDraw(void) { AIZEggRobo_Draw(); }6970void AIZEggRobo_EditorLoad(void)71{72AIZEggRobo->aniFrames = RSDK.LoadSpriteAnimation("AIZ/AIZEggRobo.bin", SCOPE_STAGE);7374RSDK_ACTIVE_VAR(AIZEggRobo, direction);75RSDK_ENUM_VAR("Right", FLIP_NONE);76RSDK_ENUM_VAR("Left", FLIP_X);77}78#endif7980void AIZEggRobo_Serialize(void)81{82RSDK_EDITABLE_VAR(AIZEggRobo, VAR_UINT8, direction);83RSDK_EDITABLE_VAR(AIZEggRobo, VAR_BOOL, oscillate);84RSDK_EDITABLE_VAR(AIZEggRobo, VAR_ENUM, angle);85RSDK_EDITABLE_VAR(AIZEggRobo, VAR_BOOL, forKnux);86}878889