-
메탈슬러그 중간과정 3 - backgroundCode/Winapi 2020. 6. 21. 01:22
싱글톤에서부터 시작.
Mainfrm 파일에서 InputManager, DBManager, RendManager 을 불러와서 관리할 수 있도록 함.
각 Manager 는 static 정의되어 모든 곳에서 사용할 수 있는 instance를 가져오는 함수(GetInstance)로 관리함.
※ static 정의된 함수는 전역변수처럼 쓸 수 있으므로 어디에서든 사용이 가능.
그러므로 하단과 같이 사용할 수 있다.
(Mainfrm.cpp)그러므로 Mainfrm 파일에서 RendManager 를 Rend 해주어서 Background를 실행하도록 하는 Scene class 를 실행하도록 함.
RendManger.cpp RendManager 에서 더블 버퍼링과 Object 를 담은 vector 내부에 접근하여 하나씩 출력할 수 있도록 함.
m_vecRendObjce 안에는 Object 들이 종류별로 담겨있다.
enum의 정의는 하단과 같다.
Object 종류를 표시하는 enum (define.h) m_vecRendObj 라는 vector 내부의 Render 함수는 Object class의 Rend 함수를 가리키는데, 이를 ObjectImage class와 Background class가 상속받는다. 그래서 Rend 함수 정의를 피킹하면 하단과 같이 나타남.
RendManager.cpp Background class 의 Render 함수로 가보면 하단과 같이 짜여져있음.
Background.cpp 실질적으로 이미지를 그려주고 움직이기 위한 과정들이 들어있음.
m_obimg1,m_obimg2 는 Background class 안에 들어있는 ObjectImage class(이미지를 직접 담고있는 class)로, 하단과 같이Background의 멤버 변수로 정의되어 있음.
여기에 들어있는 ImageLoading 함수는 이미지를 뿌려주는 함수가 들어있음.
이 과정을 진행하기 위해 metalslug.cpp 의 wWinMain 함수에 하단과 같이 메세지 루프에 넣는다.
metalslug.cpp 메세지 루프를 돌기 전에 Mainfrm 을 생성하고 초기화한 뒤, 기본 메세지 루프에서는 run 만 해주는 것.
이렇게 하면 계속해서 Mainfrm을 돌리면서 프로그램을 실행하게 된다.
'Code > Winapi' 카테고리의 다른 글
메탈슬러그 중간과정 5 - background (0) 2020.07.07 메탈슬러그 중간과정 4 - background (0) 2020.07.01 메탈슬러그 중간과정 2 - background (0) 2020.06.03 메탈슬러그 중간과정 1 - background (0) 2020.06.01 win api 구조 (0) 2020.04.05