75. 타일맵 에디터 6: 빈 타일, 배경화면 설정
*** 공부 방법 ***
1. 코딩을 해야 하는 부분은 첫 부분에 변수나 함수, 메소드에 대한 선언이 코드블럭으로 표시되어 있다. //ex) MakeFunction(); 2. 코드블럭 하단에는 해당 선언에 대한 구현 로직이 작성되어 있다. 처
hyrule.tistory.com
- Save & Load를 완성하기 전에, 기본 기능을 전부 완성해놓자.
class CTile
- ERenderRayer::Tile 추가하고 CTile의 Layer을 전부 Tile로 변경
{ bool m_Render }
- 빈 공간에는 타일을 표시하지 않기 해 선언하는 변수. 기본 true
< SetTileRender() >
- 위치 좌표를 받아서 해당 좌표에 있는 타일의 출력 여부를 결정하는 메소드.
{ bool m_SideCollision }
- 측면 충돌을 할 타일인지 여부를 저장하는 변수. 기본 false
< SetSideCollision() >
class CTileMap
< Render() >
- m_Render 변수가 false인 타일은 출력하지 않도록 코드를 추가한다.
[ 다이얼로그 창 ]
- m_Render 변수를 에디트 모드에서 설정하는 체크박스를 배치한다.
- SideCollision 여부를 설정하는 체크박스를 추가한다.
- 배경화면 로드 버튼도 배치한다.
class CSceneEditDlg;
- CTileMap은, CGameObject를 상속받고 있다.
- CGameObject는 각자 자신이 출력할 이미지를 가지고 있다
-> 커다란 CTileMap에 텍스처를 지정하게 되면, 배경화면으로써의 역할이 충분히 가능할 것이다.
< void LoadBkTexture() >
- 다이얼로그에서 이미지를 선택하면, 바로 백그라운드 이미지로 설정해준다.
< Init() >
{ HWND m_hRenderCheck }: 방금 만든 체크박스의 핸들을 받아놓는다.
SendMessage(m_hRenderCheck, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); 을 다이얼로그 창에 보내주면 기본값으로 체크되어있는 상태가 된다.
< GetCheckRender() >
- SendMessage(m_hRenderCheckBox, BM_GETCHECK, 0, 0) == BST_CHECKED; 를 하면, 체크되어 있는지 아닌지를 확인할 수 있다.
- 선택된 Brush가 Frame이던 Option이던 간에 마우스로 드래그를 하면 Render 여부도 같이 설정한다.
{ HWND m_SideCollisionCheckBox }
- 측면 충돌을 감지할 타일. (ex. 메이플스토리)
- 위와 마찬가지로 어떤 브러쉬타입이던 상관없이 동시에 설정되도록 해준다.
- 여기까지 코드를 짜고, SideCollision 여부와 Render여부 변경이 잘 적용되는지 확인해보았다.
1. Render 적용 여부 확인
2. SideCollision 여부 적용 확인 - 아직 시각적으로 확인이 불가능해서 디버그를 통해 확인하였음.