Path: blob/main/RSDKv4/NativeObjects/FadeScreen.cpp
817 views
#include "RetroEngine.hpp"12void FadeScreen_Create(void *objPtr)3{4RSDK_THIS(FadeScreen);5self->timer = 0.0;6self->delay = 1.5;7self->fadeSpeed = 2.0;8self->state = FADESCREEN_STATE_GAMEFADEOUT;9Engine.nativeMenuFadeIn = true;10}11void FadeScreen_Main(void *objPtr)12{13RSDK_THIS(FadeScreen);1415SetRenderBlendMode(RENDER_BLEND_ALPHA);16self->timer += self->fadeSpeed * Engine.deltaTime;17switch (self->state) {18case FADESCREEN_STATE_MENUFADEIN:19self->fadeA = ((self->delay - self->timer) * 256.0f);20RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, self->fadeR, self->fadeG, self->fadeB, self->fadeA);21if (self->timer > self->delay) {22RemoveNativeObject(self);23Engine.nativeMenuFadeIn = false;24SetMusicTrack("MainMenu.ogg", 0, true, 106596);25PlayMusic(0, 0);26}27break;2829case FADESCREEN_STATE_FADEOUT:30self->fadeA = self->timer * 256.0;31RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY_F, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, self->fadeR, self->fadeG, self->fadeB,32self->fadeA);33if (self->timer > self->delay)34RemoveNativeObject(self);35break;3637case FADESCREEN_STATE_GAMEFADEOUT:38self->fadeA = self->timer * 256.0;39RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY_F, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, self->fadeR, self->fadeG, self->fadeB,40self->fadeA);41SetMusicVolume(masterVolume - 2);4243if (self->timer > self->delay) {44ClearNativeObjects();45CREATE_ENTITY(RetroGameLoop);46if (Engine.gameDeviceType == RETRO_MOBILE)47CREATE_ENTITY(VirtualDPad);48}49break;5051#if !RETRO_USE_ORIGINAL_CODE52case FADESCREEN_STATE_FADEIN:53self->fadeA = ((self->delay - self->timer) * 256.0f);54RenderRect(-SCREEN_CENTERX_F, SCREEN_CENTERY_F, 160.0, SCREEN_XSIZE_F, SCREEN_YSIZE_F, self->fadeR, self->fadeG, self->fadeB,55self->fadeA);56if (self->timer > self->delay) {57RemoveNativeObject(self);58Engine.nativeMenuFadeIn = false;59}60break;61#endif62}6364#if !RETRO_USE_ORIGINAL_CODE65NewRenderState();66MatrixScaleXYZF(&self->render, Engine.windowScale, Engine.windowScale, 1.0);67MatrixTranslateXYZF(&self->temp, 0.0, 0.0, 160.0);68MatrixMultiplyF(&self->render, &self->temp);69SetRenderMatrix(&self->render);70#endif71}727374