// AkhanChrCreate.h: interface for the CAkhanChrCreate class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_AKHANCHRCREATE_H__8BA5391E_7C4E_4470_B081_868014DD3261__INCLUDED_) #define AFX_AKHANCHRCREATE_H__8BA5391E_7C4E_4470_B081_868014DD3261__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "GUIWindow.h" static const unsigned short ALLOW_HAN_NUM = 39; static unsigned short AllowHans[ALLOW_HAN_NUM] = { '°¦', '°§', '°Ê', '°þ', '³ê', '´Ó', '·×', '·Ü', '·Ý', '·Þ', '·à', '·ñ', '·õ', '·ö', '·÷', '·ø', '·þ', '¸¡', '¸«', '¸¬', '¸×', '¸õ', '¹¾', '¹Å', '¹Ü', '¹õ', '»Î', '¾·', 'Áâ', 'Áé', '¨', 'Ãñ', 'Äú', 'ǧ', 'Ǩ', 'ǵ', 'ÇÓ', 'ȧ', 'Èè' }; static const unsigned short ALLOW_LETTER_NUM = 2; static char AllowLetters[ALLOW_LETTER_NUM] = { '-', '_' }; class CAkhanChrCreate : public CGUIWindow { unsigned short m_wClass; unsigned long m_dwStr; unsigned long m_dwDex; unsigned long m_dwCon; unsigned long m_dwInt; unsigned long m_dwWis; unsigned long m_dwIP; char m_strName[16]; unsigned long m_dwEndTimer; unsigned long m_dwSex; unsigned long m_dwHair; unsigned long m_dwFace; inline bool CheckCharCreateName(char *Name_In) { const unsigned short MIN_CHAR_NAME = 4; const unsigned short MAX_CHAR_NAME = 15; if(Name_In == NULL) return false; // ±æÀÌ Á¦ÇÑ size_t Len = strlen(Name_In); if(Len < MIN_CHAR_NAME || Len > MAX_CHAR_NAME) return false; LPBYTE CheckName = (LPBYTE)Name_In; // Á¦ÇÑ ¹®ÀÚ °Ë»ç int ACount = 0; for(unsigned short LCount = 0; LCount < Len; LCount++) { if((CheckName[LCount] & 0x80) == 0x80) { // 2Byte ¹®ÀÚ Ã¼Å© if(CheckName[LCount + 1] == NULL) return false; // Çã¿ë ¹üÀ§ üũ (ÇѱÛ) if(CheckName[LCount] < 0xB0 || CheckName[LCount] > 0xC9) return false; if(CheckName[LCount + 1] < 0xA1 || CheckName[LCount + 1] > 0xFE) return false; // ÇÑ±Û ºÎºÐ ºÒ Çã¿ë for(ACount = 0; ACount < ALLOW_HAN_NUM; ACount++) { if(MAKEWORD(CheckName[LCount + 1], CheckName[LCount]) == AllowHans[ACount]) break; } if(ACount != ALLOW_HAN_NUM) return false; LCount += 1; continue; } else { // ¿µ¹®ÀÚ Çã¿ë if((CheckName[LCount] >= 'A' && CheckName[LCount] <= 'Z') || (CheckName[LCount] >= 'a' && CheckName[LCount] <= 'z')) continue; // ¼ýÀÚ Çã¿ë if(CheckName[LCount] >= '0' && CheckName[LCount] <= '9') continue; // Ư¼ö ±âÈ£ ºÎºÐ Çã¿ë for(ACount = 0; ACount < ALLOW_LETTER_NUM; ACount++) { if(CheckName[LCount] == AllowLetters[ACount]) break; } if(ACount == ALLOW_LETTER_NUM) return false; } } return true; } public: void CreateCancel(void); CAkhanChrCreate(); ~CAkhanChrCreate(); BOOL Init(unsigned short x, unsigned short y); void InitValue(void); BOOL Update(BOOL &bClick, BOOL &bEdge); void ShowWindow(BOOL bShow) { } void Render(LPDIRECT3DDEVICE8 lpD3DDevice); }; #endif // !defined(AFX_AKHANCHRCREATE_H__8BA5391E_7C4E_4470_B081_868014DD3261__INCLUDED_)