WIN32API FrameWork/한단계씩 직접 구현

75. 타일맵 에디터 6: 빈 타일, 배경화면 설정

hyrule 2022. 6. 14. 20:23

http://hyrule.tistory.com/111 

 

*** 공부 방법 ***

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 여부 적용 확인 - 아직 시각적으로 확인이 불가능해서 디버그를 통해 확인하였음.

값이 잘 전달되고 있다.
GameFrameworkStepbyStep_75_TileMapRenderSideColl.zip.zip
11.01MB