Path: blob/master/SonicMania/Objects/UFO/UFO_Plasma.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: UFO_Plasma Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89ObjectUFO_Plasma *UFO_Plasma;1011void UFO_Plasma_Update(void) {}1213void UFO_Plasma_LateUpdate(void) {}1415void UFO_Plasma_StaticUpdate(void) {}1617void UFO_Plasma_Draw(void)18{19int32 y = (UFO_Setup->timer + 2 * ScreenInfo->position.y) << 14;20uint8 scanlineID = ((ScreenInfo->position.y >> 1) + 2 * UFO_Setup->timer);2122ScanlineInfo *scanline = UFO_Plasma->scanlines;23for (int32 i = 0; i < ScreenInfo->size.y; ++i) {24scanline->position.x = TO_FIXED(ScreenInfo->position.x) + UFO_Plasma->scanlineList[scanlineID].position.x;25scanline->position.y = y;26scanline->deform.x = UFO_Plasma->scanlineList[scanlineID].deform.x;27scanline->deform.y = 0;2829y += UFO_Plasma->scanlineList[(scanlineID + 1) & 0xFF].deform.y;30scanline++;31scanlineID++;32}3334RSDK.DrawDeformedSprite(UFO_Plasma->aniFrames, INK_MASKED, 0x100);35RSDK.SetClipBounds(0, 0, 0, ScreenInfo->size.x, ScreenInfo->size.y);36RSDK.SetActivePalette(0, 0, ScreenInfo->size.y);37}3839void UFO_Plasma_Create(void *data)40{41RSDK_THIS(UFO_Plasma);4243if (!SceneInfo->inEditor) {44self->active = ACTIVE_NORMAL;45self->visible = true;46self->drawGroup = 3;47}48}4950void UFO_Plasma_StageLoad(void)51{52UFO_Plasma->aniFrames = RSDK.LoadSpriteSheet("SpecialUFO/Plasma.gif", SCOPE_STAGE);53UFO_Plasma->scanlines = RSDK.GetScanlines();5455int32 angle = 0;56ScanlineInfo *scanline = (ScanlineInfo *)UFO_Plasma->scanlineList;57for (int32 i = 0; i < 0x100; ++i) {58scanline[i].deform.x = (RSDK.Sin256(angle >> 1) << 6) + 0x10000;59scanline[i].deform.y = (RSDK.Sin256(angle >> 1) << 5) + 0x10000;60scanline[i].position.x = (RSDK.Sin256(angle) << 10) - scanline[i].deform.x * ScreenInfo->center.x;61scanline[i].position.y = 0;6263angle += 2;64}6566for (int32 b = 0; b < 8; ++b) RSDK.SetPaletteEntry(b, 0xDB, 0x00F000);6768RSDK.SetPaletteMask(0x00F000);69RSDK.ResetEntitySlot(SLOT_UFO_PLASMA, UFO_Plasma->classID, NULL);70RSDK.SetDrawGroupProperties(3, false, StateMachine_None);71}7273#if GAME_INCLUDE_EDITOR74void UFO_Plasma_EditorDraw(void) {}7576void UFO_Plasma_EditorLoad(void) {}77#endif7879void UFO_Plasma_Serialize(void) {}808182