Path: blob/master/SonicMania/Objects/MSZ/PaintingEyes.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: PaintingEyes Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectPaintingEyes *PaintingEyes;1011void PaintingEyes_Update(void)12{13RSDK_THIS(PaintingEyes);1415foreach_active(Player, player)16{17if ((player->direction && player->position.x >= self->position.x - 0x80000)18|| (!player->direction && player->position.x <= self->position.x + 0x80000)) {19if (player->onGround)20self->hideEyes = false;21else if (self->timer < 30)22self->timer = 0;23}24else25self->hideEyes = true;26}2728if (self->hideEyes) {29if (self->coverPos < 0x80000)30self->coverPos += 0x20000;3132self->timer = 0;33}34else {35if (self->timer >= 30) {36if (self->coverPos > 0)37self->coverPos -= 0x20000;38}39else {40self->timer++;41}42}43}4445void PaintingEyes_LateUpdate(void) {}4647void PaintingEyes_StaticUpdate(void) {}4849void PaintingEyes_Draw(void)50{51RSDK_THIS(PaintingEyes);5253Vector2 drawPos;54drawPos.x = self->position.x + CLAMP(((ScreenInfo->position.x + ScreenInfo->center.x) << 10) - (self->position.x >> 6), -0x10000, 0x10000);55drawPos.y = self->position.y + CLAMP(((ScreenInfo->position.y + ScreenInfo->center.y) << 10) - (self->position.y >> 6), -0x10000, 0x10000);56RSDK.DrawSprite(&self->irisAnimator, &drawPos, false);5758drawPos.x = self->position.x + CLAMP(((ScreenInfo->position.x + ScreenInfo->center.x) << 11) - (self->position.x >> 5), -0x20000, 0x20000);59drawPos.y = self->position.y + CLAMP(((ScreenInfo->position.y + ScreenInfo->center.y) << 11) - (self->position.y >> 5), -0x20000, 0x20000);60RSDK.DrawSprite(&self->pupilAnimator, &drawPos, false);6162drawPos.x = self->position.x;63drawPos.y = self->position.y + self->coverPos;64RSDK.DrawSprite(&self->coverAnimator, &drawPos, false);65}6667void PaintingEyes_Create(void *data)68{69RSDK_THIS(PaintingEyes);7071if (!SceneInfo->inEditor) {72RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->coverAnimator, true, 0);73RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->irisAnimator, true, 1);74RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->pupilAnimator, true, 2);7576self->active = ACTIVE_BOUNDS;77self->updateRange.x = 0x100000;78self->updateRange.y = 0x100000;79self->visible = true;80self->drawGroup = Zone->objectDrawGroup[0] - 1;81}82}8384void PaintingEyes_StageLoad(void) { PaintingEyes->aniFrames = RSDK.LoadSpriteAnimation("MSZ/PaintingEyes.bin", SCOPE_STAGE); }8586#if GAME_INCLUDE_EDITOR87void PaintingEyes_EditorDraw(void)88{89RSDK_THIS(PaintingEyes);9091RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->coverAnimator, false, 0);92RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->irisAnimator, false, 1);93RSDK.SetSpriteAnimation(PaintingEyes->aniFrames, 0, &self->pupilAnimator, false, 2);9495RSDK.DrawSprite(&self->irisAnimator, NULL, false);96RSDK.DrawSprite(&self->pupilAnimator, NULL, false);97RSDK.DrawSprite(&self->coverAnimator, NULL, false);98}99100void PaintingEyes_EditorLoad(void) { PaintingEyes->aniFrames = RSDK.LoadSpriteAnimation("MSZ/PaintingEyes.bin", SCOPE_STAGE); }101#endif102103void PaintingEyes_Serialize(void) {}104105106