Path: blob/master/SonicMania/Objects/Pinball/PBL_Sector.c
338 views
// ---------------------------------------------------------------------1// RSDK Project: Sonic Mania2// Object Description: PBL_Sector Object3// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges4// Decompiled by: Rubberduckycooly & RMGRich5// ---------------------------------------------------------------------67#include "Game.h"89#if MANIA_USE_PLUS10ObjectPBL_Sector *PBL_Sector;1112void PBL_Sector_Update(void)13{14RSDK_THIS(PBL_Sector);1516if (self->timer <= 0) {17foreach_active(PBL_Player, player)18{19if (self->playerEntered) {20if (player->position.y <= self->position.y - self->size.y - 0x100000 && player->velocity.y < 0) {21foreach_active(PBL_HUD, hud) { PBL_HUD_DisplayMessage(hud, "GO! GO!", PBL_HUD_MSG_FLASH_CRANE); }2223player->position.y = self->position.y - self->size.y - 0xC0000;24player->active = ACTIVE_NEVER;25RSDK.PlaySfx(PBL_Crane->sfxBackGlass, false, 255);2627PBL_Setup_GiveScore(1000);2829if (self->craneID >= PBL_Setup->sectorCount) {30self->active = ACTIVE_NEVER;31self->timer = 60;32}33else {34destroyEntity(self);35}36}37}38else {39if (abs(player->position.x - self->position.x) < self->size.x) {40if (abs(player->position.y - self->position.y) < self->size.y) {41EntityPBL_Camera *camera = RSDK_GET_ENTITY(SLOT_PBL_CAMERA, PBL_Camera);42camera->newCamBoundaryT = self->position.y - self->size.y;43camera->newCamBoundaryB = self->position.y + self->size.y;4445self->playerEntered = true;46}47}48}49}50}51else {52self->timer--;53}54}5556void PBL_Sector_LateUpdate(void) {}5758void PBL_Sector_StaticUpdate(void) {}5960void PBL_Sector_Draw(void) {}6162void PBL_Sector_Create(void *data)63{64RSDK_THIS(PBL_Sector);6566if (!SceneInfo->inEditor) {67self->updateRange.x = self->size.x;68self->updateRange.y = self->size.y;6970if (self->craneID == PBL_Setup->sectorID) {71EntityPBL_Camera *camera = RSDK_GET_ENTITY(SLOT_PBL_CAMERA, PBL_Camera);72camera->curCamBoundaryT = self->position.y - self->size.y;73camera->newCamBoundaryT = self->position.y - self->size.y;74camera->curCamBoundaryB = self->position.y + self->size.y;75camera->newCamBoundaryB = self->position.y + self->size.y;7677self->active = ACTIVE_NORMAL;78}7980if (self->craneID > PBL_Setup->sectorCount)81PBL_Setup->sectorCount = self->craneID;82}83}8485void PBL_Sector_StageLoad(void) {}8687#if GAME_INCLUDE_EDITOR88void PBL_Sector_EditorDraw(void)89{90RSDK_THIS(PBL_Sector);9192RSDK.SetSpriteAnimation(PBL_Sector->aniFrames, 0, &self->animator, true, 8);93RSDK.DrawSprite(&self->animator, NULL, false);9495if (showGizmos()) {96RSDK_DRAWING_OVERLAY(true);9798DrawHelpers_DrawRectOutline(self->position.x, self->position.y, self->size.x << 1, self->size.y << 1, 0xFFFF00);99100RSDK_DRAWING_OVERLAY(false);101}102}103104void PBL_Sector_EditorLoad(void) { PBL_Sector->aniFrames = RSDK.LoadSpriteAnimation("Editor/EditorIcons.bin", SCOPE_STAGE); }105#endif106107void PBL_Sector_Serialize(void)108{109RSDK_EDITABLE_VAR(PBL_Sector, VAR_VECTOR2, size);110RSDK_EDITABLE_VAR(PBL_Sector, VAR_UINT8, craneID);111}112#endif113114115