생각과는 다르게 하나의 이미지를 여러군데에서 사용하기 위해서는 그리기만을 여러번 하는 것이 아니라, 불러오기도 그만큼 해줘야한다.
근데 "게임 리소스"라고 하는것은 이미지만 있는게 아니다..오디오, 이팩트용 이미지, 이미지, 애니메이션용 이미지, 글꼴 등...
어느 한곳에서 모든종류의 리소스를 Load해둔뒤에 필요한 곳에서 "사용"할 수 있도록 하기위한 것이 Resource Manager이다.
먼저, 여러 종류의 리소스를 위해, 하나의 큰 개념의 Resource를 정의해준다.
리소스의 종류구분을 위해서 enum class를 이용했다.
그리고 이 Resource 클래스는 오로지 위의 리소스 종류를 위해서만 존재하고, 이 클래스 자체가 어딘가에서 객체로써 생성되어 쓸것이 아니기에, "추상 클래스" 로 만들어주려고한다.
뭐 어려운 걸 해야하는게 아니고, 클래스 내부에 모두가 공통적으로 쓸 함수만 정의한 뒤에, Resource 클래스를 상속받은 클래스들이 반드시 재정의할 함수를 "순수 가상 함수"로 선언만 해주면 된다.
나같은 경우엔 Load함수를 순수가상함수로 만들었다.
함수 옆에 단지 저렇게 " = 0 "을 추가하면된다.
다음으로, Resource를 상속받아서 만든 여러 클래스들을 한번에 처리하기 위해서 Template을 사용한다.
리소스를 상속받은 각각의 클래스들이 이 리소스 매니저의 map에 저장될것이다.
템플릿을 이용하여 map에 저장된 리소스를 Find하는 함수까지 만들어주면 된다.