SwitchGame/source_game/Scene/Scene_Loading_UI.cpp

83 lines
2.3 KiB
C++
Raw Normal View History

2025-09-15 11:28:54 +08:00
#include "Scene/Scene_Loading_UI.h"
#include "Scene/Scene_SelectCharacter_UI.hpp"
#include "Scene/Scene_Test.h"
#include "Scene_Loading_UI.h"
#include "EngineFrame/Component/Sprite.h"
#include "EngineFrame/Component/Text.h"
#include "Global/Global_Game.h"
#include "EngineCore/Asset_Script.h"
Scene_Loading_UI::Scene_Loading_UI(/* args */)
{
}
Scene_Loading_UI::~Scene_Loading_UI()
{
}
void Scene_Loading_UI::Enter()
{
// 加载OGG文件
music = Mix_LoadMUS("Music/characterSelectStage.ogg");
if (music)
{
Mix_PlayMusic(music, 1);
}
RefPtr<Actor> actor = new Actor;
AddChild(actor);
2025-09-19 12:18:57 +08:00
RefPtr<Sprite> BackGroundSp = new Sprite("ImagePacks2/Loading1.png");
2025-09-15 11:28:54 +08:00
actor->AddComponent(BackGroundSp);
2025-09-19 12:18:57 +08:00
RefPtr<Sprite> BackGround2Sp = new Sprite("ImagePacks2/Loading0.png");
BackGround2Sp->SetPos(VecPos{0, 686});
2025-09-15 11:28:54 +08:00
actor->AddComponent(BackGround2Sp);
2025-09-19 12:18:57 +08:00
RefPtr<Sprite> LoadCircleSp = new Sprite("ImagePacks2/Loading2.png");
2025-09-15 11:28:54 +08:00
LoadCircleSp->SetName("LoadCircle");
2025-09-19 12:18:57 +08:00
LoadCircleSp->SetPos(VecPos{1280 - 60, 686 - 60});
2025-09-15 11:28:54 +08:00
LoadCircleSp->SetBlendMode(SDL_BLENDMODE_ADD);
2025-09-19 12:18:57 +08:00
LoadCircleSp->SetAnchor(VecFPos{0.5, 0.5});
2025-09-15 11:28:54 +08:00
actor->AddComponent(LoadCircleSp);
actor->SetCallbackOnUpdate([LoadCircleSp](float deltaTime) mutable
{
float angle = LoadCircleSp->GetAngle();
LoadCircleSp->SetAngle(angle + 180.0f * deltaTime); });
// 文字测试
// RefPtr<Text> text = new Text("测试文字加载中...", Global_Game::GetInstance().Fonts[0], SDL_Color{255, 255, 255, 255}, SDL_Color{0, 0, 0, 255}, 4);
// actor->AddComponent(text);
}
void Scene_Loading_UI::HandleEvents(SDL_Event *e)
{
}
void Scene_Loading_UI::Update(float deltaTime)
{
Scene::Update(deltaTime);
2025-09-19 12:18:57 +08:00
if (Global_Game::GetInstance().InitFlag)
2025-09-15 11:28:54 +08:00
{
// 设定游戏层场景
RefPtr<Scene_Test> scene = new Scene_Test;
Game::GetInstance().ChangeScene(scene);
// 设定UI层场景
RefPtr<Scene_SelectCharacter_UI> sceneUI = new Scene_SelectCharacter_UI;
Game::GetInstance().ChangeUIScene(sceneUI);
}
}
void Scene_Loading_UI::Render(float deltaTime)
{
Scene::Render(deltaTime);
}
void Scene_Loading_UI::Exit()
{
if (music)
{
Mix_FreeMusic(music);
music = nullptr;
}
}