CE : 하랑 2024. 2. 17. 16:18

 

Game_Core.h

#pragma once
#include <EngineCore\EngineCore.h>

class UGame_Core : public UEngineCore // 상속
{
public:
	
	// 클래스 디폴트
	UGame_Core(); // 디폴트 생성자
	~UGame_Core(); // 디폴트 소멸자

	UGame_Core(const UGame_Core& _Other) = delete;
	UGame_Core(UGame_Core&& _Other) noexcept = delete;
	UGame_Core& operator=(const UGame_Core& _Other) = delete;
	UGame_Core& operator=(UGame_Core&& _Other) noexcept = delete;

protected:
	// 오버라이드 
	void BeginPlay() override; // 시작
	void Tick(float _DeltaTime) override; // 업데이트
	void End() override; // 종료

private:

	// 윈도우창 크기 (X,Y)
	int windowX = 1000;
	int windowY = 700;

	// 윈도우창 위치 (X,Y)
	int positionX = 200;
	int positionY = 100;

};

 


(1) 복사 생성자, 대입 연산자

// 디폴트 복사 생성자
UGame_Core(const UGame_Core& _Other) = delete;
UGame_Core(UGame_Core&& _Other) noexcept = delete;

// 디폴트 대입 연산자
UGame_Core& operator=(const UGame_Core& _Other) = delete;
UGame_Core& operator=(UGame_Core&& _Other) noexcept = delete;

 

-> noexcept

- 내부에서 터지면 외부가 아닌 내부에서 오류 체크

- 예외를 외부로 넘기지 않는다.

 

-> delete

함수를 사용하지 못하게 하기위한 역할

-> 디폴트 복사 생성자(깊은 복사)와 디폴트 대입 연산자(얕은 복사)를 무의식적으로 사용할 수 있기에 사용

 


 

(2) EngineCore 상속

- 레벨 생성 가능

- 윈도우 크기, 위치, 이름 설정 가능

// 오버라이드 
	void BeginPlay() override; // 시작
	void Tick(float _DeltaTime) override; // 업데이트
	void End() override; // 종료

 

 

(3) BeginePlay()

- 윈도우 창 설정

	MainWindow.SetWindowPosition({ positionX,positionY }); // 윈도우창이 뜨는 위치 Set
	MainWindow.SetWindowScale({ windowX, windowY}); // 윈도우창 크기 Set
	MainWindow.SetWindowTitle("Kirby Star"); // 윈도우창 타이틀 Set

 

- Level 생성

// Level 생성에 필요한 헤더
#include "TitleLevel.h"

// EngineCore에서 std::map<std::string, ULevel*> AllLevel; map으로 관리
CreateLevel<UTitleLevel>("TitleLevel"); // 타이틀 Level 생성
ChangeLevel("TitleLevel"); // 레벨 변경