1. ๊ฐ์ ¶
TheWarOfGenesis2Rํ์ด์ง์ ๊ฐ์ค์ ๋ฐ๋ผ ์ฌ์ฉ๋ฒ์ ๋ชจ์๋๋ค.
2. DDUtil ¶
DXSDK์์ ์ ๊ณตํ๋ ํจ์ ๋ชจ์์ง.(ใ
ก.ใ
กa) (Direct Draw ์ Wrapping Class ๊ฐ ๋๊ฒ ์ง์.)
์๊ฐ๋ณด๋ค ์ด๊ธฐํํ๊ธฐ ๊น๋ค๋ก์ด DX์ ์ฌ์ฉ์ ๊ทธ๋๋ง ํธํ๊ฒ ํด์ฃผ๋ ๊ฒ๋ค์ด๋ค
DDUtil์์๋ ๋๊ฐ์ ํด๋์ค๊ฐ ์๋ค
2.1. CDisplay ¶
DirectDraw์ ์์ฑ๊ณผ Surface์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ Class
CDisplay์ ํจ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ค.
CDisplay์ ํจ์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด ์๋ค.
1. ์ด๊ธฐํ
~cpp CreateFullScreenDisplay(HWND hWnd, DWORD dwWidth, DWORD dwHeight, DWORD dwBPP)
DirectDraw ์ฅ์น๋ฅผ ํ์คํฌ๋ฆฐ ๋ชจ๋๋ก ์์ฑํ๋ค.
- hWnd : ํ์ฌ ์๋์ฐ์ ํธ๋ค
- dwWidth : ์์ฑํ ๊ฐ์ฒด์ ๋์ด
- dwHeight : ์์ฑํ ๊ฐ์ฒด์ ๋์ด
- dwBPP : ์์ฑํ ๊ฐ์ฒด์ ์์์ (8, 16, 24, 32..)
~cpp CreateWindowedDisplay HWND hWnd, DWORD dwWidth, DWORD dwHeight)
์์ ๊ฐ์ ์ผ์ ํ์ง๋ง ์ฐฝ๋ชจ๋๋ก ์์ฑํ๋ค. ์์์๊ฐ ์๋ ๊ฒ์ ์๋์ฐ ๋ฐํํ๋ฉด์ ์์ ์๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
2. Surface์์ฑ์ํผ์ค๋ ๊ทธ๋ฆผ์ ๋ด๋ ๊ทธ๋ฆ์ด๋ค.
~cpp CreateSurface( CSurface **ppSurface, DWORD dwWidth, DWORD dwHeight)
๋ณดํต์ ์ํผ์ค๋ฅผ ์์ฑํ๋ค.
~cpp CreateSurfaceFromBitmap(CSurface** ppSurface, TCHAR* strBMP, DWORD dwDesiredWidth, DWORD dwDesiredHeight)
๋นํธ๋งต์ผ๋ก๋ถํฐ ์ํผ์ค๋ฅผ ์์ฑํ๋ค.
- strBMP : ๋นํธ๋งต ํ์ผ์ ํ์ผ๋ช
์ ๋ฃ๋๋ค.
- ๋์ด์ ๋์ด๋ ๋นํธ๋งต์ ํฌ๊ธฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
~cpp CreateSurfaceFromText( CSurface** ppSurface, HFONT hFont, TCHAR* strText, COLORREF crBackground, COLORREF crForeground)
๋ฌธ์์ด๋ก๋ถํฐ ์ํผ์ค๋ฅผ ์์ฑํ๋ค.
3. ํ๋ ํธ์์์๊ฐ ์ ์ ๋นํธ๋งต์ ๊ฒฝ์ฐ์๋ ํ๋ ํธ๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค.
~cpp CreatePaletteFromBitmap( LPDIRECTDRAWPALETTE *ppPalette, const TCHAR *strBMP)
ํน์ ํ ๋นํธ๋งต ํ์ผ๋ก๋ถํฐ ํ๋ ํธ๋ฅผ ์ป์ด์จ๋ค.
~cpp SetPalette( LPDIRECTDRAWPALETTE pPalette)4. ์ํผ์ค(๊ทธ๋ฆผ)์ ์ถ๋ ฅ
์ํผ์ค์ ๊ทธ๋ฆผ์ ๋ฐฑ ๋ฒํผ๋ก ์ถ๋ ฅํ๋ค.
~cpp ShowBitmap(HBITMAP hbm, LPDIRECTDRAWPALETTE pPalette)
HBITMAPํ์ ๋นํธ๋งต์ ํน์ ํ ํ๋ ํธ๋ฅผ ํตํด ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
๋น์ฐํ ์ ์ ์๋ ๊ทธ๋ฆผ์ ์ง์์ง๋ค.
๋น์ฐํ ์ ์ ์๋ ๊ทธ๋ฆผ์ ์ง์์ง๋ค.
~cpp ColorKeyBlt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT *prc)
์ปฌ๋ฌํค(ํฌ๋ช
์)๋ฅผ ๊ฐ์ง ์ฑ ํ๋ฉด์ ์ถ๋ ฅํ๋ค. prc๋ ์ฌ์ฉํ์ง ์๋๋ค.
~cpp Blt(DWORD x, DWORD y, LPDIRECTDRAWSURFACE7 pdds, RECT *prc, DWORD dwFlags)
์ปฌ๋ฌํค๋ฅผ ๋บ์ฑ ํ๋ฉด์ ์ถ๋ ฅํ๋ค. ๋ง์ฝ dwFlags์ DDBLTFAST_SRCCOLORKEY๋ฅผ ๋ฃ์ด์ค๋ค๋ฉด ColorKeyBlt์ ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ธ๋ค.
์ญ์ prc๋ ์ฌ์ฉํ์ง ์๋๋ค.
์ญ์ prc๋ ์ฌ์ฉํ์ง ์๋๋ค.
~cpp Blt(DWORD x, DWORD y, CSurface *pSurface, RECT *prc)
CSurfaceํ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค. prc๋ ์ฌ์ฉํ์ง ์๋๋ค.
5. ํ๋ฉด์ ๊ฐฑ์ ์์ Bltํจ์๋ค์ ๋ฐฑ ๋ฒํผ์ ์ถ๋ ฅํ๋ ํจ์๋ค์ด๋ค. ๋ชจ๋ ๋ด์ฉ์ ๋ฐฑ ๋ฒํผ์ ์ถ๋ ฅํ์ผ๋ฉด ๋ค์ ํจ์๋ค์ ์ฌ์ฉํ์
~cpp Present()
๋ฐฑ ๋ฒํผ์ ์ถ๋ ฅ๋์ด์๋ ๋ด์ฉ์ ํ์ฌ ํ๋ฉด์ผ๋ก ์ถ๋ ฅํ๋ค. ํ๋ฉด์ ๋ชจ๋ ์์ฑํ ํ์ ์ฌ์ฉํ๋ค.
~cpp Clear()
๋ฐฑ ๋ฒํผ์ ๋ด์ฉ์ ๋ชจ๋ ์ง์ด๋ค.
~cpp UpdateBounds()
2.2. CSurface ¶
Surface์ ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ Class
1. ์ด๊ธฐํ
~cpp CSurface *surface = NULL;2. ์ปฌ๋ฌํค ์ธํ
~cpp surface->SetColorKey(DWORD dwColorKey);
์ปฌ๋ฌํค(ํฌ๋ช
์)์ผ๋ก ์ฌ์ฉํ ์์ COLORREF (RGB) ํ์ ๋ง์ถ์ด์ ์ง์ด๋ฃ์ผ๋ฉด ๋๋ค.
๋๊ฐ ์ ์ฐ์ด์ง ์๋ ์์ ์ฌ์ฉํ๋ค.
3. ๋นํธ๋งต์ผ๋ก surface๋ฅผ ๋ง๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด surface์ ์ง์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค ๋ฃ์ด์ค ์ ์๋ค.๋๊ฐ ์ ์ฐ์ด์ง ์๋ ์์ ์ฌ์ฉํ๋ค.
~cpp surface->DrawBitmap(...);