CrossCode 모작 1일차

민혁 공부방·2024년 8월 22일
post-thumbnail

C00_LoadingScene.cpp


#include  "framework.h"
#include  "C00_LoadingScene.h"
#include  "ISAAC/Objects/CProgressBar.h"

C00_LoadingScene::C00_LoadingScene()
{

    Vector2 a = Vector2(1, 0);
    Vector2 b = Vector2(0, 1);
    float dot = Vector2::Dot(a, b);




    SetActive(true);
    Name = "C00_LoadingScene";

    Background = new CSprite(L"Image/CrossCode/UI/black.png");
    Background->Scale() = Vector2(0.6f, 0.6f);
    Background->Pos() = Vector2(0.0f, 100.f);

    wstring foreground = L"Image/CrossCode/UI/progress.png";
    wstring background = L"Image/CrossCode/UI/progress_back.png";
    ProgressBar = new CProgressBar(foreground, background);
    ProgressBar->Pos() = Vector2(5, 0);
    ProgressBar->Scale() = Vector2(0.5f, 0.5f);

    SOUND->AddSound("BGM", L"Sounds/m_chest room chapter 6.ogg",true);
    SOUND->Play("BGM",1.0f);  // 최대 크기는 1.0
}

C00_LoadingScene::~C00_LoadingScene()
{
    SAFE_DELETE(Background);
}

void C00_LoadingScene::Update()
{
    static int no = 0;
    static float delta;

    delta = delta + TIMER->Delta();
    if (delta >= 0.2f)
    {
        no=no+10;
        if (no >= 100)
        {


            no = 100;
        }
        delta = 0.0f;
    }

    if (no == 100)
    {
        if (KEYBOARD->Down(VK_RETURN))
        {
            SOUND->Stop("BGM");
            CSceneManager::GetInstance()->ChangeScene("C01_SelectScene");
            return;
        }


    }


    Vector2 pos = Vector2(200, 200);
    CAMERA->WCtoVC(pos);



    Background->Update();
    ProgressBar->SetHP(no);
    ProgressBar->Update();
}

void C00_LoadingScene::Render()
{
    Background->Render();
    ProgressBar->Render();

}

void C00_LoadingScene::Enter()
{
}

void C00_LoadingScene::Exit()
{
}

void C00_LoadingScene::GUIRender()
{
    ProgressBar->GUIRender();
}

void C00_LoadingScene::PostRender()
{
    wstring temp = L"글자 Test";
    DIRECT->GetDC()->BeginDraw();
    {
        DIRECT->RenderText(temp, Vector2(0, 0), 255, 0, 0, 40.0f);
    }
    DIRECT->GetDC()->EndDraw();

    ProgressBar->PostRender();


}

C00_LoadingScene.h

#pragma once
class CProgressBar;
class C00_LoadingScene : public CScene
{
public:
	C00_LoadingScene();
	~C00_LoadingScene();
public:
	void Update()  override;  
	void Render()  override;
	void Enter()   override;
	void Exit()    override;
	void GUIRender() override;
	void PostRender() override;
private:
	CSprite* Background  = nullptr;
	CProgressBar* ProgressBar = nullptr;
};

C01_SelectScene.cpp

#include "framework.h"
#include "C01_SelectScene.h"

C01_SelectScene::C01_SelectScene()
{
    SetActive(false);
    SetName("C01_SelectScene");
    CreateAnimation();

    Clouds1 = new CSprite(L"Image/CrossCode/title/clouds-1.png");
    Clouds2 = new CSprite(L"Image/CrossCode/title/clouds-2.png");
    Ground = new CSprite(L"Image/CrossCode/title/ground.png");
    Planet = new CSprite(L"Image/CrossCode/title/planet.png");
    Railings = new CSprite(L"Image/CrossCode/title/railings.png");
    Sky = new CSprite(L"Image/CrossCode/title/sky.png");
    Logo = new CSprite(L"Image/CrossCode/title/logo.png");

    

    // Lea Animation
    {
        wstring imgFile = L"Image/CrossCode/title/lea.png";

        Lea = new CAnimation(imgFile);

        Lea->AddClip(CAnimation::Loop, "Loading");
        for (int i = 0; i < 6; i++)
        {
            Lea->AddFrame(imgFile, i * 553, 0, (i + 1) * 553, 735, 0.1f);
        }
        for (int k = 5; k >= 0; k--)
        {
            Lea->AddFrame(imgFile, k * 553, 0, (k + 1) * 553, 735, 0.1f);
        }
    }


    Sky->Pos() = Vector2(0.0f, 0.0f);        // 하늘 이미지 위치
    Clouds1->Pos() = Vector2(100.0f, -250.0f);   // 첫 번째 구름 위치
    Clouds2->Pos() = Vector2(0.0f, -50.0f);  // 두 번째 구름 위치
    Planet->Pos() = Vector2(-500.0f, 150.0f);   // 행성 위치
    Railings->Pos() = Vector2(0.0f, -395.0f); // 난간 위치
    Ground->Pos() = Vector2(0.0f, -355.0f);   // 지면 위치
    Logo->Pos() = Vector2(80.0f, 180.0f);     // 로고 위치
    Lea->Pos() = Vector2(570.0f, -150.0f);

    Logo->Scale() = Vector2(0.7f, 0.7f);

    CreateButtons();
}

C01_SelectScene::~C01_SelectScene()
{
    SAFE_DELETE(Lea);
}

void C01_SelectScene::Update()
{
    Sky->Update();        // 하늘 배경
    Clouds1->Update();    // 첫 번째 구름
    Clouds2->Update();    // 두 번째 구름
    Planet->Update();     // 행성
    Railings->Update();   // 난간
    Ground->Update();     // 땅
    Logo->Update();       // 로고
    Lea->Update();

    Button_1->Update();
    Button_2->Update();
    Button_3->Update();
    Button_4->Update();
    Button_5->Update();
}

void C01_SelectScene::Render()
{
    Sky->Render();        // 하늘 배경
    Planet->Render();     // 행성
    Clouds1->Render();    // 첫 번째 구름
    Clouds2->Render();    // 두 번째 구름
    Railings->Render();   // 난간
    Ground->Render();     // 땅
    Logo->Render();       // 로고
    Lea->Render();

    Button_1->Render();
    Button_2->Render();
    Button_3->Render();
    Button_4->Render();
    Button_5->Render();
}
// 신이 변경될때 진입되는 함수
void C01_SelectScene::Enter()
{
    SetActive(true);
}

void C01_SelectScene::Exit()
{
}

void C01_SelectScene::GUIRender()
{
}

void C01_SelectScene::PostRender()
{
}

void C01_SelectScene::CreateButtons()
{
    // 각 버튼의 좌표와 크기를 지정합니다.
    Button_1 = new CSprite(bt_Image, 0, 0, 486, 72);    // 예: x=0, y=0, width=100, height=50
    Button_2 = new CSprite(bt_Image, 0, 72, 486, 144);  // 예: x=100, y=0, width=100, height=50
    Button_3 = new CSprite(bt_Image, 0, 144, 486, 216);  // 예: x=0, y=50, width=100, height=50
    Button_4 = new CSprite(bt_Image, 0, 216, 486, 288); // 예: x=100, y=50, width=100, height=50
    Button_5 = new CSprite(bt_Image, 0, 288, 486, 360); // 예: x=0, y=100, width=100, height=50

    Button_1->Scale() = Vector2(0.7f, 0.7f);
    Button_2->Scale() = Vector2(0.7f, 0.7f);
    Button_3->Scale() = Vector2(0.7f, 0.7f);
    Button_4->Scale() = Vector2(0.7f, 0.7f);
    Button_5->Scale() = Vector2(0.7f, 0.7f);

    // 위치를 설정합니다.
    Button_1->Pos() = Vector2(-475.0f, 0.0f); // 각 버튼의 위치 설정 (화면 내에서의 위치)
    Button_2->Pos() = Vector2(-475.0f, -72.0f);
    Button_3->Pos() = Vector2(-475.0f, -144.0f);
    Button_4->Pos() = Vector2(-475.0f, -216.0f);
    Button_5->Pos() = Vector2(-475.0f, -288.0f);
}

void C01_SelectScene::CreateAnimation()
{

}

void C01_SelectScene::EndClip(string clipName)
{
    printf("%s\n", clipName.c_str());


    if (clipName == "Part5")
    {
        //CSceneManager::GetInstance()->ChangeScene("S02_InGame");

    }
  
}

C01_SelectScene.h

#pragma once
class C01_SelectScene : public CScene
{
public:
	C01_SelectScene();
	~C01_SelectScene();
public:
	void Update()  override;
	void Render()  override;
	void Enter()   override;
	void Exit()    override;
	void GUIRender() override;
	void PostRender() override;

public:
	void CreateButtons();

private:
	void CreateAnimation();
	void EndClip(string InValue);
private:
	CAnimation* Lea = nullptr;

	CSprite* Clouds1 = nullptr;
	CSprite* Clouds2 = nullptr;
	CSprite* Ground = nullptr;
	CSprite* Planet = nullptr;
	CSprite* Railings = nullptr;
	CSprite* Sky = nullptr;
	CSprite* Logo = nullptr;

private:
	CSprite* Button_1 = nullptr;
	CSprite* Button_2 = nullptr;
	CSprite* Button_3 = nullptr;
	CSprite* Button_4 = nullptr;
	CSprite* Button_5 = nullptr;
	wstring bt_Image = L"Image/CrossCode/title/button_title.png";
};


결과물


profile
한번 더 복습하기 위한 개인 공간입니다!

0개의 댓글