Hey guys im using VS2012 im trying to make a clean v16 source based on the v15 one , im adding item link but when i compile i get this error :
i searched on google didn't find solution , and here's my WndCommunication :
maybe it's a misssing brace.
Code:
1>..\_Interface\WndCommunication.cpp(1830): fatal error C1075: end of file found before the left brace '{' at '..\_Interface\WndCommunication.cpp(1644)' was matched
Code:
#include "stdafx.h"
#include "defineText.h"
#include "AppDefine.h"
#include "WndCommand.h"
#include "party.h"
#include "WndManager.h"
#include "WndChatFilter.h"
#include "DPClient.h"
extern CDPClient g_DPlay;
#define MAX_HISTORY_STRING 20
CWndEditChat::CWndEditChat()
{
}
CWndEditChat::~CWndEditChat()
{
}
void CWndEditChat::OnLButtonDown(UINT nFlags, CPoint point)
{
CWndChat* pWndChat = (CWndChat*) m_pParentWnd;
if( pWndChat->m_pWndCommand )
pWndChat->m_pWndCommand->Destroy();
CWndEdit::OnLButtonDown( nFlags, point );
}
void CWndEditChat::OnSetFocus(CWndBase* pOldWnd)
{
if( m_string.IsEmpty() )
{
CWndChat* pWndChat = (CWndChat*) m_pParentWnd;
if( pWndChat->m_pWndCommand == NULL )
{
if( pWndChat->m_nChatChannel == CHATSTY_GENERAL )
{
}
else
if( pWndChat->m_nChatChannel == CHATSTY_WHISPER )
{
CString string;
if( pWndChat->m_strCharName.IsEmpty() )
string.Format( "/w " );
else
string.Format( "/w %s ", pWndChat->m_strCharName );
SetString( string );
}
else
if( pWndChat->m_nChatChannel == CHATSTY_SHOUT )
{
SetString( "/s " );
}
else
if( pWndChat->m_nChatChannel == CHATSTY_PARTY )
{
SetString( "/p " );
}
else
if( pWndChat->m_nChatChannel == CHATSTY_GUILD )
{
SetString( "/g " );
}
}
}
CWndEdit::OnSetFocus( pOldWnd );
}
void CWndEditChat::OnKillFocus(CWndBase* pNewWnd)
{
CWndChat* pWndChat = (CWndChat*) m_pParentWnd;
if( pWndChat->m_pWndCommand && this!= pNewWnd )
pWndChat->m_pWndCommand->Destroy();
CWndEdit::OnKillFocus( pNewWnd );
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// äÆÃ À©µµ
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////
CWndMacroChat::CWndMacroChat()
{
}
CWndMacroChat::~CWndMacroChat()
{
}
void CWndMacroChat::OnDraw( C2DRender* p2DRender )
{
CWndChat* pWndChat = (CWndChat*)g_WndMng.GetApplet( APP_COMMUNICATION_CHAT );
CWndEditChat* pWndEdit = &pWndChat->m_wndEdit;//GetDlgItem( WIDC_EDIT );
if( pWndEdit->m_string.IsEmpty() == FALSE )
p2DRender->RenderTexture( CPoint( 0, 0 ), &m_texMacroChat );
}
void CWndMacroChat::OnLButtonDown(UINT nFlags, CPoint point)
{
CWndChat* pWndChat = (CWndChat*)g_WndMng.GetApplet( APP_COMMUNICATION_CHAT );
CWndEditChat* pWndEdit = &pWndChat->m_wndEdit;//GetDlgItem( WIDC_EDIT );
if( pWndEdit->m_string.IsEmpty() == FALSE )
{
CWndChat* pWndChat = (CWndChat*)g_WndMng.GetApplet( APP_COMMUNICATION_CHAT );
m_GlobalShortcut.m_dwShortcut = SHORTCUT_CHAT;
m_GlobalShortcut.m_pFromWnd = this;
m_GlobalShortcut.m_pTexture = m_pTexMacro; //.m_pFromWnd = this;
m_GlobalShortcut.m_dwData = 0;
//CWndEdit* pWndEdit = (CWndEdit*)pWndChat->GetDlgItem( WIDC_EDIT );
//strcpy( m_GlobalShortcut.m_szString, pWndEdit->m_string );
CString strFormat;
strFormat = pWndEdit->m_string;
pWndEdit->m_string.GetTextFormat(strFormat);
if( pWndEdit->m_string.GetLength() >= MAX_SHORTCUT_STRING-1 )
{
memcpy( m_GlobalShortcut.m_szString, strFormat, MAX_SHORTCUT_STRING-1 );
}
else
{
strcpy( m_GlobalShortcut.m_szString, strFormat );
}
}
}
void CWndMacroChat::OnMouseMove(UINT nFlags, CPoint point)
{
}
void CWndMacroChat::OnInitialUpdate()
{
//m_ptexMacroe.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_ICON, "icon_MacroChat.dds" ), 0xffff00ff );
m_pTexMacro = m_textureMng.AddTexture( m_pApp->m_pd3dDevice, MakePath( DIR_ICON, "icon_MacroChat.dds" ), 0xffff00ff );//, bMyLoader );
m_texMacroChat.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "wndButtMacroChat.bmp" ), 0xffff00ff );
}
CWndTextChat::CWndTextChat()
{
}
CWndTextChat::~CWndTextChat()
{
}
BOOL CWndTextChat::IsPickupSpace( CPoint point )
{
return FALSE;
}
int CWndChat::m_nChatChannel = CHATSTY_GENERAL;
CWndChat::CWndChat()
{
m_pWndCommand = NULL;
// m_timerInsMsg.Set( MIN( 1 ) );
m_timerInsMsg.Set( MIN( 2 ) ); // µµ¿ò¸» Ç¥½Ã °£°Ý Áõ°¡
#ifdef __CSC_GAME_GRADE
m_timerAlertGGrade.Set( MIN(60) );
#endif //__CSC_GAME_GRADE
m_nInsMsgCnt = 0;
m_bChatLock = FALSE;
m_bMoveLock = FALSE;
m_pWndChatFilter = NULL;
m_nHistoryIndex = 0;
#if __VER >= 8 //__CSC_VER8_1
m_bChatLog = FALSE;
#endif //__CSC_VER8_1
#ifdef __ITEM_LINK
m_pWndLinkedItem = NULL;
#endif
}
CWndChat::~CWndChat()
{
SAFE_DELETE( m_pWndCommand );
SAFE_DELETE( m_pWndChatFilter );
#ifdef __ITEM_LINK
SAFE_DELETE(m_pWndLinkedItem);
#endif
}
void CWndChat::OnDraw(C2DRender* p2DRender)
{
if( g_pPlayer == NULL )
return;
//if( timer.IsTimeOut() )
//{
// timer.Set( SEC( 10 ) );
// if( szMessage[ nMsgCnt ][0] )
// PutString( szMessage[ nMsgCnt ++ ] );
//}
if( g_Option.m_nInstantHelp )
{
CString string;
if( m_strArray.GetSize() && m_timerInsMsg.TimeOut() )
{
m_timerInsMsg.Reset();
//string = "[µµ¿ò¸»] ";
string = prj.GetText(TID_SYS_HELP);
string += " ";
string += m_strArray.GetAt( m_nInsMsgCnt );
g_WndMng.PutString( string, NULL, 0xffffff00, CHATSTY_HELP );
m_nInsMsgCnt++;
if( m_nInsMsgCnt == m_strArray.GetSize() )
m_nInsMsgCnt = 0;
}
}
#ifdef __CSC_GAME_GRADE
if(m_timerAlertGGrade.TimeOut())
{
m_timerAlertGGrade.Reset();
//PK¼*¹ö ±¸ºÐ 12¼¼ or 15¼¼
if(g_eLocal.GetState( EVE_PK ))
g_WndMng.PutString( prj.GetText(TID_SYS_ALERTGGRADE_PK), NULL, 0xffffff00, CHATSTY_HELP );
else
g_WndMng.PutString( prj.GetText(TID_SYS_ALERTGGRADE_NONPK), NULL, 0xffffff00, CHATSTY_HELP );
}
#endif //__CSC_GAME_GRADE
CWndButton* pWndRadio4 = (CWndButton*)GetDlgItem( WIDC_RADIO4 ); // party
CWndButton* pWndRadio5 = (CWndButton*)GetDlgItem( WIDC_RADIO5 ); // guild
pWndRadio4->EnableWindow( g_Party.IsMember( g_pPlayer->m_idPlayer ) );
pWndRadio5->EnableWindow( g_pPlayer->GetGuild() == NULL ? FALSE : TRUE );
if( ::GetLanguage() == LANG_KOR || ::GetLanguage() == LANG_TWN || ::GetLanguage() == LANG_HK )
{
static TCHAR text[12] = { 0 };
static wchar_t* wText = g_imeMgr.GetStringIndicator();
if( wText )
{
CWndStatic* pWndStatic = (CWndStatic*)GetDlgItem( WIDC_STATIC1 );
if( pWndStatic )
{
WideCharToMultiByteEx(g_imeMgr.m_codePage, 0, wText, wcslen(wText), text, 12, NULL, NULL);
pWndStatic->m_dwColor = D3DCOLOR_ARGB( 255, 50, 50, 220 );
if( PRIMARYLANGID(g_imeMgr.m_hkl)==LANG_KOREAN )
{
if( g_imeMgr.GetImeState() == 0 )
{
_tcscpy( text, "En" );
}
}
else
if( PRIMARYLANGID(g_imeMgr.m_hkl)==LANG_CHINESE )
{
static wchar_t wTextCh[3][3] =
{
L"\x6CE8",
L"\x65B0",
L"\x5176",
};
if( g_imeMgr.IsNewPhonetic() )
{
if( g_imeMgr.GetImeState() == 2 )
_tcscpy( text, "En" );
else
WideCharToMultiByteEx(g_imeMgr.m_codePage, 0, wTextCh[1], wcslen(wTextCh[1]), text, 12, NULL, NULL);
}
else
if( g_imeMgr.IsPhonetic() )
{
if( g_imeMgr.GetImeState() == 0 )
_tcscpy( text, "En" );
else
WideCharToMultiByteEx(g_imeMgr.m_codePage, 0, wTextCh[0], wcslen(wTextCh[0]), text, 12, NULL, NULL);
}
else
{
if( g_imeMgr.GetImeState() == 0 )
_tcscpy( text, "En" );
else
WideCharToMultiByteEx(g_imeMgr.m_codePage, 0, wTextCh[2], wcslen(wTextCh[2]), text, 12, NULL, NULL);
}
}
pWndStatic->SetTitle( text );
}
}
}
}
void CWndChat::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
//AddWndStyle( WBS_THICKFRAME );
m_timerDobe.Set( SEC( 5 ) );
LPWNDCTRL lpWndCtrl = GetWndCtrl( WIDC_MACRO_CHAT );
LPWNDCTRL lpWndText = GetWndCtrl( WIDC_CUSTOM1 );
m_wndMacroChat.Create( "g", WBS_NODRAWFRAME, lpWndCtrl->rect, this, WIDC_MACRO_CHAT );
m_wndMacroChat.AddWndStyle( WBS_NODRAWFRAME );
lpWndCtrl = GetWndCtrl( WIDC_EDIT );
m_wndEdit.Create( g_Neuz.GetSafeHwnd(), WBS_NODRAWFRAME, lpWndCtrl->rect, this, WIDC_EDIT );
m_wndText.Create( WBS_NOFRAME | WBS_NODRAWFRAME | WBS_VSCROLL, lpWndText->rect, this, WIDC_TEXT );
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
CWndEdit* pWndHead = (CWndEdit*)GetDlgItem( WIDC_HEAD );
CWndEdit* pWndEdit = (CWndEdit*)GetDlgItem( WIDC_EDIT );
if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) )
{
pWndText->m_bEnableClipboard = TRUE;
pWndHead->m_bEnableClipboard = TRUE;
pWndEdit->m_bEnableClipboard = TRUE;
}
pWndEdit->SetNativeMode();
#if __VER >= 11 // __CSC_VER11_1
CRect rectEdit = m_wndEdit.GetWndRect();
rectEdit.left = rectEdit.left - 90;
m_wndEdit.SetWndRect( rectEdit );
CRect customRect = lpWndCtrl->rect;
CWndCustom* pCustom = (CWndCustom*)GetDlgItem(WIDC_MACRO_CHAT);
if(pCustom)
pCustom->Move(customRect.TopLeft().x - 119, customRect.TopLeft().y);
if(pWndHead)
{
pWndHead->EnableWindow(FALSE);
pWndHead->SetVisible(FALSE);
}
#endif //__CSC_VER11_1
if( g_Option.m_nInstantHelp )
{
CScript s;
s.Load( MakePath( DIR_CLIENT, "InstantHelp.inc" ) );
s.GetToken();
while( s.tok != FINISHED )
{
m_strArray.Add( s.Token );
s.GetToken();
}
}
//m_strArray.
/*
CRect rect = GetClientRect();
rect.top = rect.bottom - 20;
rect.right = 70;
rect.left += 5;
rect.DeflateRect( 1, 1 );
m_wndBeginning.Create( g_Neuz.GetSafeHwnd(), WBS_NODRAWFRAME, rect, this, 1000);
rect = GetClientRect();
rect.top = rect.bottom - 20;
rect.left = 75;
rect.right -= 134;
rect.DeflateRect( 1, 1 );
//rect.left = rect.Width() * 20 / 100;
//m_wndEdit.AddWndStyle( WBS_NODRAWFRAME );
m_wndEdit.Create( g_Neuz.GetSafeHwnd(), WBS_NODRAWFRAME, rect, this, 1001 );
*/
// m_texEdit.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "WndChat2.bmp" ), 0xffff00ff, TRUE );
/*
rect = GetClientRect();
rect.top = rect.bottom - 20;
rect.left = rect.right - 134;
rect.right = r mnnnnft + 15;
rect.DeflateRect( 1, 1 );
m_wndShout.Create( " ", 0, rect, this, 1010 );
rect = GetClientRect();
rect.top = rect.bottom - 20;
rect.left = rect.right - 117;
rect.right = rect.left + 15;
rect.DeflateRect( 1, 1 );
m_wndParty.Create( " ", 0, rect, this, 1011 );
*/
/*
m_wndText.AddWndStyle( WBS_VSCROLL );
m_wndText.AddWndStyle( WBS_NOFRAME );
m_wndText.AddWndStyle( WBS_NODRAWFRAME );
m_wndText.Create( 0, rect, this, 1003 );
m_wndText.SetFont( g_Neuz.m_Theme.m_pFontChat );
m_wndText.m_string.Reset( m_pFont, &rect);
*/
/*
rect = GetClientRect();
rect.left = rect.right - 100;
//rect.bottom -= 80;
rect.DeflateRect( 1, 1 );
m_wndReceiver.AddWndStyle( WBS_VSCROLL );
m_wndReceiver.AddWndStyle( WBS_NOFRAME );
m_wndReceiver.Create( EBS_AUTOVSCROLL, rect, this, 1002 );
m_wndReceiver.AddString( "Vampyre\n" );
m_wndReceiver.AddString( "Xuzhu\n" );
m_wndReceiver.AddString( "Zodiacus\n" );
m_wndReceiver.AddString( "Jeff\n" );
m_wndReceiver.m_string.Reset( m_pFont, &rect);
*/
//CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
SetChannel();
CWndButton* pWndRadio1 = (CWndButton*)GetDlgItem( WIDC_RADIO1 );
CWndButton* pWndRadio2 = (CWndButton*)GetDlgItem( WIDC_RADIO2 );
CWndButton* pWndRadio3 = (CWndButton*)GetDlgItem( WIDC_RADIO3 );
CWndButton* pWndRadio4 = (CWndButton*)GetDlgItem( WIDC_RADIO4 );
CWndButton* pWndRadio5 = (CWndButton*)GetDlgItem( WIDC_RADIO5 );
if( m_nChatChannel == CHATSTY_GENERAL ) pWndRadio1->SetCheck( TRUE ); else
if( m_nChatChannel == CHATSTY_WHISPER ) pWndRadio2->SetCheck( TRUE ); else
if( m_nChatChannel == CHATSTY_SHOUT ) pWndRadio3->SetCheck( TRUE ); else
if( m_nChatChannel == CHATSTY_PARTY ) pWndRadio4->SetCheck( TRUE ); else
if( m_nChatChannel == CHATSTY_GUILD ) pWndRadio5->SetCheck( TRUE );
//pWndText->m_string.Init(
//pWndText->m_string = g_WndMng.m_ChatString;
pWndText->m_nLineSpace = 2;
//pWndText->m_string.Reset( m_pFont, &pWndText->GetClientRect() );
//pWndText->
/*
CRect rect = GetClientRect();
rect.bottom -= 20;
rect.right -= 0;//100;
rect.DeflateRect( 1, 1);
m_wndText.SetWndRect( rect );
*/
//LPBYTE m_wndChatEdit[3];
//CSize sizeWndChatEdit[3];
#if __VER >= 11 // __CSC_VER11_1
LoadTGA( MakePath( DIR_THEME, "WndChatEdit00_1.tga" ), &m_wndChatEdit[0] );
#else //__CSC_VER11_1
LoadTGA( MakePath( DIR_THEME, "WndChatEdit00.tga" ), &m_wndChatEdit[0] );
#endif //__CSC_VER11_1
LoadTGA( MakePath( DIR_THEME, "WndChatEdit01.tga" ), &m_wndChatEdit[1] );
#ifdef __LANG_IME_0327
LoadTGA( MakePath( "Theme\\", ::GetLanguage(), "WndChatEdit02.tga" ), &m_wndChatEdit[2] );
#else // __LANG_IME_0327
LoadTGA( MakePath( DIR_THEME, "WndChatEdit02.tga" ), &m_wndChatEdit[2] );
#endif // __LANG_IME_0327
if( m_wndChatEdit[2].lpData == NULL )
{
Error( "CWndChat::OnInitialUpdate() m_wndChatEdit[2].lpData = NULL" );
return;
}
/*
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CRect rectWindow = GetWindowRect();
CPoint point( 154, rectRoot.bottom - rectWindow.Height() );
Move( point );
*/
CWndButton* pWndLock = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
pWndLock->SetCheck( m_bChatLock );
CWndButton* pWndMoveLock = (CWndButton*)GetDlgItem( WIDC_MOVELOCK );
pWndMoveLock->SetCheck( m_bMoveLock );
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CRect rect = GetWindowRect();
int nWidth = rect.Width();
int nHeight = rect.Height();
int x = 0;//rectRoot.left + (rectRoot.Width() / 2) - (nWidth / 2);
int y = rectRoot.bottom - nHeight;
CPoint point( x, y );
Move( point );
m_timerInputTimeOut.Set( SEC( 300 ) );
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
if( g_WndMng.m_pWndChatLog == NULL )
{
g_WndMng.m_pWndChatLog = new CWndChatLog;
if( g_WndMng.m_pWndChatLog )
{
g_WndMng.m_pWndChatLog->Initialize( NULL, APP_CHAT_LOG );
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CRect rect = GetWindowRect(TRUE);
CRect rect2 = g_WndMng.m_pWndChatLog->GetClientRect(TRUE);
int x = 0;
int y = rect.top;
if( (rect.right+rect2.Width()) < rectRoot.right )
x = rect.right;
else
x = (rect.left - rect2.Width() );
CPoint point( x, y );
g_WndMng.m_pWndChatLog->Move( point );
g_WndMng.m_pWndChatLog->SetVisible(FALSE);
}
}
if( g_WndMng.m_pWndChatLog )
{
CWndButton* pWndCheck3 = (CWndButton*)GetDlgItem( WIDC_CHECK3 );
if( pWndCheck3 )
pWndCheck3->SetCheck(g_WndMng.m_pWndChatLog->m_bVisible);
}
#endif //__Y_CHAT_SYSTEM_8
}
BOOL CWndChat::Process ()
{
if( m_timerInputTimeOut.IsTimeOut() )
{
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
pWndText->m_string.SetAlpha( 0 );
}
if( 0 < strlen( g_Neuz.m_szWhisperName ) )
{
LPCTSTR lpstr = m_wndEdit.GetString();
BOOL bCommand = FALSE;
if( strcmp( lpstr, "/r " ) == 0 || strcmp( lpstr, "/R " ) == 0 || ( GetLanguage() == LANG_KOR && strcmp( lpstr, "/¤¡ " ) == 0 ) )
{
CString strWhisper;
strWhisper.Format( "/whisper %s ", g_Neuz.m_szWhisperName );
m_wndEdit.SetString( strWhisper );
m_wndEdit.SetFocus();
}
}
return TRUE;
}
void CWndChat::SetChannel()
{
m_wndText.SetString( "" );
int nChannel = 0;
switch( CWndChat::m_nChatChannel )
{
case CHATSTY_GENERAL: nChannel = 0; break;
case CHATSTY_WHISPER: nChannel = 1; break;
case CHATSTY_SHOUT : nChannel = 2; break;
case CHATSTY_PARTY : nChannel = 3; break;
case CHATSTY_GUILD : nChannel = 4; break;
}
DWORD dwChatFilter = g_Option.m_dwChatFilterEtc | g_Option.m_dwChatFilter[ nChannel ];
for( int i = 0; i < g_WndMng.m_aChatString.GetSize(); i++ )
{
if( g_WndMng.m_aChatStyle.GetAt( i ) & dwChatFilter )
{
CString string = g_WndMng.m_aChatString.GetAt( i );
m_wndText.m_string.AddParsingString( string, g_WndMng.m_aChatColor.GetAt( i ), 0x00000000, 0, PS_NOT_MACRO );
m_wndText.m_string.AddString( "\n" );
}
}
m_wndText.ResetString();
m_wndText.m_wndScrollBar.SetMaxScrollPos();
}
void CWndChat::OnSetFocus(CWndBase* pOldWnd)
{
}
void CWndChat::OnKillFocus(CWndBase* pNewWnd)
{
//if( m_pWndCommand && pNewWnd != m_pWndCommand )
// m_pWndCommand->Destroy();
}
BOOL CWndChat::Initialize(CWndBase* pWndParent,DWORD dwWndId)
{
CRect rectWindow = m_pWndRoot->GetWindowRect();
CRect rect( 154, rectWindow.Height() - 100, 154 + rectWindow.Width() - 300, rectWindow.Height() );
SetTitle( GETTEXT( TID_APP_COMMUNICATION_CHAT ) );
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), dwWndId, WBS_KEY| WBS_THICKFRAME, CPoint( 792, 130 ), pWndParent );
//return CWndNeuz::Create( 0|WBS_MOVE|/*WBS_DOCKABLE|*/WBS_SOUND|WBS_CAPTION|WBS_THICKFRAME|WBS_MAXIMIZEBOX, rect, &g_WndMng, dwWndId);
}
/*
"applet" TY_CLIENT 0
"to" TY_SERVER 0
"to" TY_SERVER 0
"to" TY_SERVER 0
*/
extern CDPClient g_DPlay;
void CWndChat::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}
void CWndChat::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}
void CWndChat::OnDestroyChildWnd( CWndBase* pWndChild )
{
if( m_pWndCommand == pWndChild )
{
SAFE_DELETE( m_pWndCommand );
}
if( m_pWndChatFilter == pWndChild )
{
SAFE_DELETE( m_pWndChatFilter );
//ChatFilter Wnd DestroyÈÄ Focus°¡ World·Î µÇ¾îÀÖÁö ¾Ê¾Æ À̵¿Å°°¡ ¸ÔÁö ¾Ê±â ¶§¹®¿¡ SetFocusÇØÁÜ.
CWndWorld* pWndWorld = (CWndWorld*)g_WndMng.GetApplet( APP_WORLD );
if( pWndWorld )
pWndWorld->SetFocus();
}
}
void CWndChat::SerializeRegInfo( CAr& ar, DWORD& dwVersion )
{
CWndNeuz::SerializeRegInfo( ar, dwVersion );
if( ar.IsLoading() )
{
if( dwVersion == 0 )
{
}
else
{
ar >> m_bChatLock;
}
CWndButton* pWndLock = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
pWndLock->SetCheck( m_bChatLock );
}
else
{
dwVersion = 1;
ar << m_bChatLock;
}
}
BOOL CWndChat::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
m_timerInputTimeOut.Reset();
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
if( pWndText )
pWndText->m_string.SetAlpha( 255 );
switch(nID)
{
case WIDC_CLOSE:
nID = WTBID_CLOSE;
break;
case WIDC_HELP:
nID = WTBID_HELP;
break;
case WIDC_BUTTON1:
{
if( m_pWndChatFilter == NULL )
{
m_pWndChatFilter = new CWndChatFilter;
m_pWndChatFilter->Initialize( this );
}
}
break;
case WIDC_CHECK1: // äÆÃ ÀÔ·Ââ Àᱸ±â
{
CWndButton* pWndCheck = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
m_bChatLock = pWndCheck->GetCheck();
}
break;
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
case WIDC_CHECK3: // ½Ã½ºÅ½Ã¢
{
CWndButton* pWndCheck = (CWndButton*)GetDlgItem( WIDC_CHECK3 );
BOOL bChatLog = pWndCheck->GetCheck();
#if __VER >= 8 //__CSC_VER8_1 ¸ðµç À©µµ¿ì¸¦ Áö¿ï¶§ ChatLogÀÇ À¯¹« ±¸º°À» À§ÇØ Ãß°¡.
m_bChatLog = bChatLog;
#endif //_CSC_VER8_1
if( g_WndMng.m_pWndChatLog )
{
if( bChatLog )
{
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CRect rect = GetWindowRect(TRUE);
CRect rect2 = g_WndMng.m_pWndChatLog->GetClientRect(TRUE);
int x = 0;
int y = rect.top;
if( (rect.right+rect2.Width()) < rectRoot.right )
x = rect.right;
else
x = (rect.left - rect2.Width() );
CPoint point( x, y );
g_WndMng.m_pWndChatLog->Move( point );
}
g_WndMng.m_pWndChatLog->SetVisible( bChatLog );
}
}
break;
#endif //__Y_CHAT_SYSTEM_8
case WIDC_MOVELOCK: // À̵¿ Àá±×±â
{
CWndButton* pWndCheck = (CWndButton*)GetDlgItem( WIDC_MOVELOCK );
m_bMoveLock = pWndCheck->GetCheck();
DWORD dwStyle = GetWndStyle();
if( m_bMoveLock )
dwStyle &= (~WBS_MOVE);
else
dwStyle |= WBS_MOVE;
SetWndStyle( dwStyle );
}
break;
case WIDC_RADIO1:
m_nChatChannel = CHATSTY_GENERAL;
m_wndEdit.SetString( "" );
m_wndEdit.SetFocus();
SetChannel();
break;
case WIDC_RADIO2:
m_nChatChannel = CHATSTY_WHISPER;
m_wndEdit.SetString( "/w " );
m_wndEdit.SetFocus();
SetChannel();
break;
case WIDC_RADIO3:
m_nChatChannel = CHATSTY_SHOUT;
m_wndEdit.SetString( "/s " );
m_wndEdit.SetFocus();
SetChannel();
break;
case WIDC_RADIO4:
m_nChatChannel = CHATSTY_PARTY;
m_wndEdit.SetString( "/p " );
m_wndEdit.SetFocus();
SetChannel();
break;
case WIDC_RADIO5:
m_nChatChannel = CHATSTY_GUILD;
m_wndEdit.SetString( "/g " );
m_wndEdit.SetFocus();
SetChannel();
break;
case APP_COMMAND:
{
if( message == WNM_DBLCLK )
{
CString string;
m_pWndCommand->GetText( m_pWndCommand->GetCurSel(), string );
string += " ";
m_wndEdit.SetString( "/" );
m_wndEdit.AddString( string );
m_wndEdit.ResetString();
m_pWndCommand->Destroy();
}
SetFocus();
}
case WIDC_HEAD: // ¸»¸Ó¸®
if( message == EN_RETURN )
{
g_WndMng.SetFocus();
}
break;
case WIDC_EDIT: // º»¹®
if( message == EN_UP )
{
if( m_strHistory.size() == 0 )
return FALSE;
if( m_nHistoryIndex >= (int)( m_strHistory.size() ) )
{
m_strHistory.front();
m_nHistoryIndex = 0;
}
m_nHistoryIndex++;
#ifdef __ITEM_LINK
m_wndEdit.SetString(m_strHistory[m_strHistory.size()-m_nHistoryIndex]);
#else
m_wndEdit.m_string = m_strHistory[m_strHistory.size()-m_nHistoryIndex];
#endif
return TRUE;
}
if( message == EN_RETURN )
{
BOOL bFinished = TRUE;
if( m_pWndCommand )
{
CString str1, str2;
str1 = m_wndEdit.m_string.Right( m_wndEdit.m_string.GetLength() - 1 );
if( m_pWndCommand->GetCurSel() != -1 )
{
m_pWndCommand->GetText( m_pWndCommand->GetCurSel(), str2 );
if( str1 != str2 )
{
str2 += " ";
m_wndEdit.SetString( "/" );
m_wndEdit.AddString( str2 );
m_wndEdit.ResetString();
bFinished = FALSE;
}
}
m_pWndCommand->Destroy();
}
if( bFinished == TRUE )
{
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
CWndEdit* pWndHead = (CWndEdit*)GetDlgItem( WIDC_HEAD );
CString string;
if( pWndHead->m_string.IsEmpty() == FALSE &&
( pWndHead->m_string[ 0 ] == '/' ||
( m_wndEdit.m_string.IsEmpty() == FALSE && pWndHead->m_string[ 0 ] != '/' && m_wndEdit.m_string[ 0 ] != '/' ) )
)
string = pWndHead->m_string + " ";
WORD wCodePage = g_codePage;
const char* begin = m_wndEdit.m_string;
const char* end = begin + m_wndEdit.m_string.GetLength();
const char* iter = begin;
while(*iter && iter < end)
{
if(*((BYTE*)iter) >= 0x80)
{
if(wCodePage != m_wndEdit.m_string.m_awCodePage[iter-begin])
{
wCodePage = m_wndEdit.m_string.m_awCodePage[iter-begin];
char temp[16];
if(wCodePage == g_codePage)
{
wsprintf(temp, "#nl");
}
else
{
wsprintf(temp, "#l%04d", wCodePage);
}
string += temp;
}
}
const char* next = CharNextEx(iter, wCodePage);
char temp[16];
memcpy(temp, iter, next-iter);
temp[next-iter] = 0;
string += temp;
iter = next;
}
if( m_strHistory.size() >= MAX_HISTORY_STRING )
{
m_nHistoryIndex = 0;
m_strHistory.erase( m_strHistory.begin() );
}
m_strHistory.push_back(string);
int a = string.GetLength();
if( !m_wndEdit.m_string.IsEmpty() )
m_wndEdit.m_string.GetTextFormat(string);
#ifdef __ITEM_LINK
m_strHistory.push_back(string);
#endif
g_WndMng.ParsingChat( string );
CScanner scanner;
scanner.SetProg( m_wndEdit.m_string.LockBuffer() );
scanner.GetToken(); //
if( scanner.Token == "/" )
{
scanner.GetToken();
if( scanner.Token == "w" || scanner.Token == "whisper" )
{
scanner.GetToken();
m_strCharName = scanner.Token;
}
}
m_wndEdit.m_string.UnlockBuffer();
m_wndEdit.Empty();
if( m_bChatLock == FALSE )
{
if( IsWndStyle( WBS_MODAL ) == TRUE )
{
DelWndStyle( WBS_MODAL );
if( g_Neuz.pOldModalWindow )
{
g_Neuz.pOldModalWindow->SetFocus();
}
}
else
{
CWndWorld* pWndWorld = ( CWndWorld* )g_WndMng.GetApplet( APP_WORLD );
if( pWndWorld )
{
pWndWorld->SetFocus();
}
else
{
g_WndMng.SetFocus();
}
}
}
else
m_wndEdit.SetFocus();
}
}
else
if( message == EN_CHANGE )
{
if( m_wndEdit.m_string.IsEmpty() == FALSE )
{
if( m_wndEdit.m_string[ 0 ] == '/' && m_wndEdit.GetOffset() == 1 && m_pWndCommand == NULL )
{
m_pWndCommand = new CWndCommand;
m_pWndCommand->m_pWndEdit = this;
m_pWndCommand->Initialize( this );
CRect rect = m_wndEdit.GetScreenRect();
CPoint point = rect.TopLeft();
point.y -= m_pWndCommand->GetWndRect().Height();
m_pWndCommand->Move( point );
}
else
if( m_pWndCommand )
{
CString string;
string = m_wndEdit.m_string.Right( m_wndEdit.m_string.GetLength() - 1 );
// Áß°£¿¡ ½ºÆäÀ̽º°¡ ²¸ ÀÖÀ¸¸é ´Ý¾Æ¹ö¸°´Ù.
if( string.Find( ' ' ) == -1 )
m_pWndCommand->SelectString( 0, string );
else
m_pWndCommand->Destroy();
if( ::GetLanguage() == LANG_KOR )
{
if( m_wndEdit.m_string == "/¤¾ " )
{
m_wndEdit.SetString( "/g " );
}
else if( m_wndEdit.m_string == "/¤Ä " )
{
m_wndEdit.SetString( "/p " );
}
else if( m_wndEdit.m_string == "/¤¤ " )
{
m_wndEdit.SetString( "/s " );
}
#if __VER >= 11 // __CSC_VER11_1
else if( m_wndEdit.m_string == "/¤¸ " )
{
m_wndEdit.SetString( "/w " );
}
#endif //__CSC_VER11_1
}
}
}
else
if( m_pWndCommand )
m_pWndCommand->Destroy();
}
break;
case 10000: // ÃÖ¼ÒÈ*
break;
case 10001: // ÃÖ´ëÈ*
break;
case 10002: // Á¾·á
Destroy();
break;
}
//¾Æ·¡ ƯÁ¤ ¹öư ´©¸¦ °æ¿ì Focus°¡ World·Î µÇ¾îÀÖÁö ¾Ê¾Æ À̵¿Å°°¡ ¸ÔÁö ¾Ê±â ¶§¹®¿¡ SetFocusÇØÁÜ.
if(nID == WIDC_CHECK1 || nID == WIDC_CHECK3 || nID == WIDC_MOVELOCK)
{
CWndWorld* pWndWorld = (CWndWorld*)g_WndMng.GetApplet( APP_WORLD );
if( pWndWorld )
pWndWorld->SetFocus();
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
BOOL CWndChat::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand(nID,dwMessage,pWndBase);
}
void CWndChat::Parsing( CString string )
{
/*
MotionProp* pProp;
for( int i = 0; i < prj.m_aMotionProp.GetSize(); i++ )
{
pProp = prj.GetMotionProp( i );
if( pProp && pProp->dwRequireLv )
{
if( string.Find( pProp->szLink ) != -1 )
{
// g_pPlayer->SendActMsg( OBJMSG_MOTION, pProp->dwID );
}
}
}
*/
}
void CWndChat::PutString( LPCTSTR lpszString, DWORD dwColor, DWORD dwPStyle )
{
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
if( dwColor != 0xffffff00 )
{
m_timerInputTimeOut.Reset();
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
pWndText->m_string.SetAlpha( 255 );
}
BOOL bLineEnd = FALSE;
if( pWndText->m_wndScrollBar.GetScrollPos() == ( pWndText->m_wndScrollBar.GetMaxScrollPos() - pWndText->m_wndScrollBar.GetScrollPage() ) )
bLineEnd = TRUE;
pWndText->AddString( lpszString, dwColor, dwPStyle );
pWndText->AddString( "\n", dwColor );// += '\n';
// ±Û ³»¿ëÀÌ 1000ÁÙÀ» ³Ñ¾î°¡¸é 500¶óÀÎÀ» Àß¶ó³½´Ù.
if( pWndText->m_string.GetLineCount() >= 1000 )
{
pWndText->m_string.DeleteLine( 0, 500 );
pWndText->UpdateScrollBar();
}
if( bLineEnd )
pWndText->m_wndScrollBar.SetMaxScrollPos();
}
void CWndChat::OnDestroy()
{
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
g_WndMng.m_ChatString = pWndText->m_string;
}
void CWndChat::SetWndRect( CRect rectWnd, BOOL bOnSize )
{
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
AdjustMinRect( &rectWnd, 16 * 29, 16 * 3 );
#else // __Y_CHAT_SYSTEM_8
AdjustMinRect( &rectWnd, 16 * 26, 16 * 3 );
#endif //__Y_CHAT_SYSTEM_8
CRect rectOld = m_rectClient;
m_rectWindow = rectWnd;
m_rectClient = m_rectWindow;
m_rectClient.DeflateRect( 4, 4, 6, 6 );
m_rectLayout = m_rectClient;
if( bOnSize && ( rectOld.Width() != m_rectClient.Width() || rectOld.Height() != m_rectClient.Height() ) )
OnSize( 0, m_rectClient.Width(), m_rectClient.Height() );
MakeVertexBuffer();
}
void CWndChat::OnSize(UINT nType, int cx, int cy)
{
//#ifdef __NEWINTERFACE
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
CWndEdit* pWndHead = (CWndEdit*)GetDlgItem( WIDC_HEAD );
CWndEdit* pWndEdit = (CWndEdit*)GetDlgItem( WIDC_EDIT );
CRect rectEdit;
CRect rect = GetClientRect();
//rect.left = 60;
rect.top = 0;
rect.left = 0;
rect.right -= 0;
rect.bottom -= 39;
pWndText->SetWndRect( rect );
pWndText->m_wndScrollBar.SetMaxScrollPos();
rect = GetClientRect();
rectEdit = pWndHead->GetWndRect();
rectEdit.top = rect.bottom - 18;
rectEdit.bottom = rect.bottom;
rect.DeflateRect( 1, 1 );
pWndHead->SetWndRect( rectEdit );
rect = GetClientRect();
rectEdit = m_wndEdit.GetWndRect();
rectEdit.top = rect.bottom - 18;
rectEdit.bottom = rect.bottom;
rectEdit.right = rect.right - 20;
rect.DeflateRect( 1, 1 );
m_wndEdit.SetWndRect( rectEdit );
rect = GetClientRect();
rectEdit = m_wndMacroChat.GetWndRect();
rectEdit.top = rect.bottom - 19;
rectEdit.bottom = rect.bottom;
m_wndMacroChat.SetWndRect( rectEdit );
CWndButton* pWndRadio1 = (CWndButton*)GetDlgItem( WIDC_RADIO1 );
CWndButton* pWndRadio2 = (CWndButton*)GetDlgItem( WIDC_RADIO2 );
CWndButton* pWndRadio3 = (CWndButton*)GetDlgItem( WIDC_RADIO3 );
CWndButton* pWndRadio4 = (CWndButton*)GetDlgItem( WIDC_RADIO4 );
CWndButton* pWndRadio5 = (CWndButton*)GetDlgItem( WIDC_RADIO5 );
CWndButton* pWndCheck = (CWndButton*)GetDlgItem( WIDC_CHECK1 );
CWndButton* pWndCheck2 = (CWndButton*)GetDlgItem( WIDC_MOVELOCK );
CWndButton* pWndButton1 = (CWndButton*)GetDlgItem( WIDC_BUTTON1 );
CWndButton* pWndButton2 = (CWndButton*)GetDlgItem( WIDC_HELP );
CWndButton* pWndButton3 = (CWndButton*)GetDlgItem( WIDC_CLOSE );
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
CWndButton* pWndCheck3 = (CWndButton*)GetDlgItem( WIDC_CHECK3 );
#else //__Y_CHAT_SYSTEM_8
CWndButton* pWndCheck3 = (CWndButton*)GetDlgItem( WIDC_CHECK3 );
pWndCheck3->SetVisible(FALSE);
#endif //__Y_CHAT_SYSTEM_8
rect = GetClientRect();
rectEdit = pWndRadio1->GetWndRect();
rectEdit.top = rect.bottom - 38;
rectEdit.left = 0;
pWndRadio1->Move( rectEdit.TopLeft() );
rectEdit.left = 50;
pWndRadio2->Move( rectEdit.TopLeft() );
rectEdit.left = 100;
pWndRadio3->Move( rectEdit.TopLeft() );
rectEdit.left = 150;
pWndRadio4->Move( rectEdit.TopLeft() );
rectEdit.left = 200;
pWndRadio5->Move( rectEdit.TopLeft() );
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
rectEdit.left = rect.right - 200;
pWndCheck->Move( rectEdit.TopLeft() );
rectEdit.left = rect.right - 150;
pWndButton1->Move( rectEdit.TopLeft() );
rectEdit.left = rect.right - 100;
pWndCheck3->Move( rectEdit.TopLeft() );
#else //__Y_CHAT_SYSTEM_8
rectEdit.left = rect.right - 150;
pWndCheck->Move( rectEdit.TopLeft() );
rectEdit.left = rect.right - 100;
pWndButton1->Move( rectEdit.TopLeft() );
#endif //__Y_CHAT_SYSTEM_8
rectEdit.left = rect.right - 49;
CRect rectEdit2 = rectEdit;
rectEdit2.top += 1;
pWndCheck2->Move( rectEdit2.TopLeft() );
rectEdit.left = rect.right - 32;
rectEdit.top += 1;
pWndButton2->Move( rectEdit.TopLeft() );
rectEdit.left = rect.right - 15;
pWndButton3->Move( rectEdit.TopLeft() );
CWndStatic* pWndStatic = (CWndStatic*)GetDlgItem( WIDC_STATIC1 );
if( pWndStatic )
{
rectEdit.top += 20;
rectEdit.left -= 5;
pWndStatic->Move( rectEdit.TopLeft() );
}
CWndNeuz::OnSize(nType,cx,cy);
}
void CWndChat::OnLButtonUp(UINT nFlags, CPoint point)
{
if(IsWndRoot())
return;
//if(IsWndStyle(WBS_CAPTION) && m_bPickup)
{//
// m_wndTitleBar.m_wndMinimize.SetVisible(TRUE);
//m_wndTitleBar.m_wndMaximize.SetVisible(TRUE);
}
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
// g_WndMng.m_pWndWorld->m_bLButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnLButtonUp( nFlags, p );
}
}
void CWndChat::OnLButtonDown(UINT nFlags, CPoint point)
{
if( m_pWndCommand )
m_pWndCommand->Destroy();
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
g_WndMng.m_pWndWorld->m_bLButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnLButtonDown( nFlags, p );
}
}
void CWndChat::OnRButtonDown(UINT nFlags, CPoint point)
{
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
g_WndMng.m_pWndWorld->m_bRButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnRButtonDown( nFlags, p );
}
int nLineCount = m_wndText.m_string.GetLineCount();
int nPos = m_wndText.IsWndStyle( WBS_VSCROLL ) ? m_wndText.m_wndScrollBar.GetScrollPos() : 0;
DWORD dwMaxHeight = m_wndText.GetFontHeight();
for( int i = nPos ; i < nLineCount ; ++i )
{
if( (int)( ((i-nPos) * dwMaxHeight) ) <= point.y && point.y < (int)( (dwMaxHeight * (i-nPos + 1)) ) )
{
CString str = m_wndText.m_string.GetLine( i );
#ifdef __ITEM_LINK
CString strTmp = str;
#endif
char szFind[MAX_NAME] = {0,};
BOOL bChat = FALSE;
// ÀÏ¹Ý Ã¤ÆÃ °Ë»ö
int nFindName = str.Find( " :" );
if( 0 < nFindName && nFindName < MAX_NAME )
{
int nFindSpace = str.Find( ' ' );
if( nFindSpace == -1 || nFindName <= nFindSpace )
{
#ifdef __ITEM_LINK
int nExtent = m_wndText.m_pFont->GetTextExtent(str.Mid(0,nFindName)).cx;
if(point.x < nExtent)
{
#endif
strncpy( szFind, str, nFindName );
if( strcmp( szFind, g_pPlayer->GetName() ) != 0 )
bChat = TRUE;
#ifdef __ITEM_LINK
}
#endif
}
}
// ±Ó¼Ó¸» °Ë»ö
if( bChat == FALSE )
{
int nFindName1 = str.Find( "<- [" );
int nFindName2 = str.Find( "]" );
if( 0 == nFindName1 )
{
str.Replace( "<- [", "" );
}
else
{
nFindName1 = str.Find( "-> [" );
str.Replace( "-> [", "" );
}
if( 0 == nFindName1 && 0 < nFindName2 && nFindName2 - nFindName1 < MAX_NAME + 4 )
{
nFindName2 = str.Find( "]" );
strncpy( szFind, str, nFindName2 );
int nFindSpace = strspn( " ", szFind );
#ifdef __ITEM_LINK
int nFindName3 = strTmp.Find("]");
int nExtent = m_wndText.m_pFont->GetTextExtent(strTmp.Mid(0,nFindName3)).cx;
if(point.x < nExtent)
{
#endif
if( nFindSpace < 1 && strcmp( szFind, g_pPlayer->GetName() ) != 0 )
bChat = TRUE;
#ifdef __ITEM_LINK
}
#endif
}
}
// ¿ÜÄ¡±â °Ë»ö( ¾Ë¸²Àº ºüÁü )
if( bChat == FALSE )
{
int nFindName1 = str.Find( "[" );
int nFindName2 = str.Find( "]" );
if( 0 == nFindName1 && 0 < nFindName2 && nFindName2 - nFindName1 < MAX_NAME + 1 )
{
str.Replace( "[", "" );
nFindName2 = str.Find( "]" );
strncpy( szFind, str, nFindName2 );
int nFindSpace = strspn( " ", szFind );
#ifdef __ITEM_LINK
int nFindName3 = strTmp.Find("]");
int nExtent = m_wndText.m_pFont->GetTextExtent(strTmp.Mid(0,nFindName3)).cx;
if(point.x < nExtent)
{
#endif
if( nFindSpace < 1 && strcmp( szFind, g_pPlayer->GetName() ) != 0 )
bChat = TRUE;
#ifdef __ITEM_LINK
}
#endif
CString strSystem = prj.GetText(TID_ADMIN_ANNOUNCE);
strSystem.Replace( "[", "" );
int nFindSystem = strSystem.Find("]");
if( 0 < nFindSystem )
{
char szFindSystem[MAX_NAME] = {0,};
strncpy( szFindSystem, strSystem, nFindSystem );
if( strcmp( szFind, szFindSystem ) == 0 )
bChat = FALSE;
}
}
}
#ifdef __ITEM_LINK
{
if(!bChat)
{
int nFindBeg = strTmp.Find("<");
int nFindEnd = strTmp.Find(">");
while(nFindBeg != -1 || nFindEnd != -1)
{
int nExtentEnd;
int nExtentBeg;
if(nFindBeg != -1)// check line changed
nExtentBeg = m_wndText.m_pFont->GetTextExtent(strTmp.Mid(0,nFindBeg)).cx;
else
nExtentBeg = 0;
if(nFindEnd != -1) // check line changed
nExtentEnd = m_wndText.m_pFont->GetTextExtent(strTmp.Mid(nFindBeg,nFindEnd-nFindBeg)).cx+nExtentBeg;
else{
nExtentEnd = m_wndText.m_pFont->GetTextExtent(strTmp.Mid(nFindBeg,str.GetLength()-nFindBeg)).cx+nExtentBeg;
}
if(point.x > nExtentBeg && point.x < nExtentEnd) // clicked on link
{
DWORD dwLinkID = m_wndText.m_string.m_adwLinkedID.GetAt(nFindBeg+m_wndText.m_string.GetLineOffset(i));
if(dwLinkID) //check if is linked item or normal string
g_DPlay.SendGetLinkedItem(dwLinkID);
Error("%d",dwLinkID);
}
nFindBeg = strTmp.Find("<",nFindEnd);
nFindEnd = strTmp.Find(">",nFindEnd+1);
}
}
}
#endif
if( bChat )
{
CString strWhisper;
strWhisper.Format( "/whisper %s ", szFind );
m_wndEdit.SetString( strWhisper );
m_wndEdit.SetFocus();
}
break;
}
}
}
void CWndChat::OnRButtonUp(UINT nFlags, CPoint point)
{
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
// g_WndMng.m_pWndWorld->m_bRButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnRButtonUp( nFlags, p );
}
}
void CWndChat::OnMouseMove(UINT nFlags, CPoint point)
{
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
// g_WndMng.m_pWndWorld->m_bRButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnMouseMove( nFlags, p );
}
}
BOOL CWndChat::OnEraseBkgnd(C2DRender* p2DRender)
{
return TRUE;
}
//void CWndNeuz::PaintTexture( LPBYTE pDest, LPBYTE pSrc, CPoint pt,
// CSize sizeTexture, CSize sizeSurface )
void CWndChat::AdditionalSkinTexture( LPWORD pDest, CSize size, D3DFORMAT d3dFormat )
{
CWndNeuz::AdditionalSkinTexture( pDest, size, d3dFormat );
CRect rect = GetWindowRect();
CPoint point = CPoint( 0, rect.Height() - m_wndChatEdit[0].size.cy );
PaintTexture( pDest, &m_wndChatEdit[0], point, size );
int nWidth = ( rect.Width() - m_wndChatEdit[0].size.cx ) / m_wndChatEdit[1].size.cx;
point.x += m_wndChatEdit[0].size.cx;
for( int i = 0; i < nWidth; i++ )
{
if( i == nWidth - 2 )
PaintTexture( pDest, &m_wndChatEdit[2], point, size );
else
if( i < nWidth - 2 )
PaintTexture( pDest, &m_wndChatEdit[1], point, size );
point.x += m_wndChatEdit[1].size.cx;
}
}
#if __VER >= 8 //__Y_CHAT_SYSTEM_8
CWndChatLog::CWndChatLog()
{
}
CWndChatLog::~CWndChatLog()
{
}
/*
void CWndChatLog::OnDraw(C2DRender* p2DRender)
{
}
*/
void CWndChatLog::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
LPWNDCTRL lpWndText = GetWndCtrl( WIDC_CUSTOM1 );
m_wndText.Create( WBS_NOFRAME | WBS_NODRAWFRAME | WBS_VSCROLL, lpWndText->rect, this, WIDC_TEXT );
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) )
{
pWndText->m_bEnableClipboard = TRUE;
}
pWndText->m_nLineSpace = 2;
CRect rectRoot = m_pWndRoot->GetLayoutRect();
CRect rect = GetWindowRect();
int nWidth = rect.Width();
int nHeight = rect.Height();
int x = 0;//rectRoot.left + (rectRoot.Width() / 2) - (nWidth / 2);
int y = rectRoot.bottom - nHeight;
CPoint point( x, y );
Move( point );
m_wndMenuPlace.CreateMenu( this );
m_wndMenuPlace.AppendMenu( 0, 0 , prj.GetText(TID_GAME_GUIDE_HIDE) );
}
BOOL CWndChatLog::Process ()
{
return TRUE;
}
void CWndChatLog::OnSetFocus(CWndBase* pOldWnd)
{
}
void CWndChatLog::OnKillFocus(CWndBase* pNewWnd)
{
}
BOOL CWndChatLog::Initialize(CWndBase* pWndParent,DWORD dwWndId)
{
CRect rectWindow = m_pWndRoot->GetWindowRect();
CRect rect( 154, rectWindow.Height() - 100, 154 + rectWindow.Width() - 300, rectWindow.Height() );
SetTitle( GETTEXT( TID_APP_COMMUNICATION_CHAT ) );
return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), dwWndId, WBS_THICKFRAME, CPoint( 792, 130 ), pWndParent );
// return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), dwWndId, 0, CPoint( 792, 130 ), pWndParent );
}
void CWndChatLog::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}
void CWndChatLog::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
}
void CWndChatLog::OnDestroyChildWnd( CWndBase* pWndChild )
{
}
BOOL CWndChatLog::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
CWndBase* pWndBase = (CWndBase*) pLResult;
if( pWndBase->m_pParentWnd == &m_wndMenuPlace )
{
SetFocus();
switch( nID )
{
case 0:
{
CWndChat* pWndChat = (CWndChat*)g_WndMng.GetWndBase( APP_COMMUNICATION_CHAT );
if( pWndChat )
{
CWndButton* pWndCheck = (CWndButton*)pWndChat->GetDlgItem( WIDC_CHECK3 );
if( pWndCheck )
pWndCheck->SetCheck(FALSE);
}
SetVisible(FALSE);
}
break;
}
}
return CWndNeuz::OnChildNotify( message, nID, pLResult );
}
BOOL CWndChatLog::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
{
return CWndNeuz::OnCommand(nID,dwMessage,pWndBase);
}
void CWndChatLog::PutString( LPCTSTR lpszString, DWORD dwColor, DWORD dwPStyle )
{
CWndText* pWndText = (CWndText*)GetDlgItem( WIDC_TEXT );
BOOL bLineEnd = FALSE;
if( pWndText->m_wndScrollBar.GetScrollPos() == ( pWndText->m_wndScrollBar.GetMaxScrollPos() - pWndText->m_wndScrollBar.GetScrollPage() ) )
bLineEnd = TRUE;
pWndText->AddString( lpszString, dwColor, dwPStyle );
pWndText->AddString( "\n", dwColor );// += '\n';
// ±Û ³»¿ëÀÌ 1000ÁÙÀ» ³Ñ¾î°¡¸é 500¶óÀÎÀ» Àß¶ó³½´Ù.
if( pWndText->m_string.GetLineCount() >= 1000 )
{
pWndText->m_string.DeleteLine( 0, 500 );
pWndText->UpdateScrollBar();
}
if( bLineEnd )
pWndText->m_wndScrollBar.SetMaxScrollPos();
}
void CWndChatLog::OnDestroy()
{
}
void CWndChatLog::OnSize(UINT nType, int cx, int cy)
{
CRect rectEdit;
CRect rect = GetClientRect();
//rect.left = 60;
rect.top = 0;
rect.left = 0;
rect.right -= 0;
rect.bottom -= 0;
m_wndText.SetWndRect( rect );
m_wndText.m_wndScrollBar.SetMaxScrollPos();
CWndNeuz::OnSize(nType,cx,cy);
}
void CWndChatLog::OnLButtonUp(UINT nFlags, CPoint point)
{
}
void CWndChatLog::OnLButtonDown(UINT nFlags, CPoint point)
{
if( g_WndMng.m_pWndWorld )
{
CRect rect = GetWindowRect( TRUE );
CPoint p;
p.x = point.x + rect.left;
p.y = point.y + rect.top;
g_WndMng.m_pWndWorld->m_bLButtonDown = TRUE;
g_WndMng.m_pWndWorld->OnLButtonDown( nFlags, p );
}
}
void CWndChatLog::OnRButtonDown(UINT nFlags, CPoint point)
{
CRect rect = GetWindowRect( TRUE );
CRect menurect = m_wndMenuPlace.GetWindowRect();
rect.top += point.y;
rect.left += point.x;
m_wndMenuPlace.Move( CPoint( rect.left, rect.top ) );
m_wndMenuPlace.SetVisible( !m_wndMenuPlace.IsVisible() );
m_wndMenuPlace.SetFocus();
}
void CWndChatLog::OnRButtonUp(UINT nFlags, CPoint point)
{
}
void CWndChatLog::OnMouseMove(UINT nFlags, CPoint point)
{
}
/*
BOOL CWndChatLog::OnEraseBkgnd(C2DRender* p2DRender)
{
return TRUE;
}
*/
void CWndChatLog::AdditionalSkinTexture( LPWORD pDest, CSize size, D3DFORMAT d3dFormat )
{
CWndNeuz::AdditionalSkinTexture( pDest, size, d3dFormat );
}
void CWndChatLog::SetWndRect( CRect rectWnd, BOOL bOnSize )
{
AdjustMinRect( &rectWnd, 16 * 17, 16 * 3 );
CRect rectOld = m_rectClient;
m_rectWindow = rectWnd;
m_rectClient = m_rectWindow;
m_rectClient.DeflateRect( 4, 4, 6, 6 );
m_rectLayout = m_rectClient;
if( bOnSize && ( rectOld.Width() != m_rectClient.Width() || rectOld.Height() != m_rectClient.Height() ) )
OnSize( 0, m_rectClient.Width(), m_rectClient.Height() );
MakeVertexBuffer();
}
#endif //__Y_CHAT_SYSTEM_8
#ifdef __ITEM_LINK
CWndLinkedItem::CWndLinkedItem()
{
m_pItem = NULL;
CString strPath;
if(::GetLanguage() == LANG_FRE)
strPath = MakePath( "Theme\\", ::GetLanguage(), "Icon_Ultimate.dds");
else
strPath = MakePath( DIR_ICON, "Icon_Ultimate.dds");
m_pUltimateTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
strPath = MakePath( DIR_ICON, "icon_Baruna01.dds" );
m_pBarunaTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, strPath, 0xffff00ff );
m_pJewelBgTexture = CWndBase::m_textureMng.AddTexture( g_Neuz.m_pd3dDevice, MakePath( DIR_THEME, "WndChgElemItem.bmp"), 0xffff00ff );
}
CWndLinkedItem::~CWndLinkedItem()
{
SAFE_DELETE(m_pItem);
}
BOOL CWndLinkedItem::Initialize(CWndBase *pWndParent,DWORD dwStyle)
{
return CWndNeuz::InitDialog(g_Neuz.GetSafeHwnd(),APP_TOOLTIP_LINKEDITEM,dwStyle,CPoint(0,0),pWndParent);
}
void CWndLinkedItem::OnInitialUpdate()
{
CWndNeuz::OnInitialUpdate();
MoveParentCenter();
rectItem = GetWndCtrl(WIDC_CUSTOM1)->rect;
}
void CWndLinkedItem::OnMouseWndSurface(CPoint point)
{
/*
if(m_pItem && rectItem.PtInRect(point))
{
CRect hitrect = rectItem;
CPoint point2 = point;
ClientToScreen(&point2);
ClientToScreen(&hitrect);
g_WndMng.PutToolTip_Item(m_pItem,point2,&hitrect);
}
*/
}
void CWndLinkedItem::OnDraw(C2DRender *p2DRender)
{
if(m_pItem)
{
CMover* pMover = g_pPlayer;
m_pItem->GetTexture()->Render(p2DRender,rectItem.TopLeft(),255);
CEditString strEdit;
ItemProp* pItemProp = m_pItem->GetProp();
strEdit.SetParsingString("");
strEdit.Init( CWndBase::m_Theme.m_pFontText, &CRect( 0, 0, 240, 0 ) );
DWORD dwColorBuf = g_WndMng.PutItemName(m_pItem, &strEdit);
g_WndMng.PutItemAbilityPiercing( m_pItem, &strEdit, dwColorBuf );
if( m_pItem->GetProp() && m_pItem->GetProp()->dwFlag & IP_FLAG_EQUIP_BIND )
{
strEdit.AddString("\r\n");
if( m_pItem->IsFlag( CItemElem::binds ) )
strEdit.AddString( GETTEXT( TID_TOOLTIP_EQUIPBIND_AFTER ), GETTEXTCOLOR( TID_TOOLTIP_EQUIPBIND_AFTER ) );
else
strEdit.AddString( GETTEXT( TID_TOOLTIP_EQUIPBIND_BEFORE ), GETTEXTCOLOR( TID_TOOLTIP_EQUIPBIND_BEFORE ) );
}
g_WndMng.PutWeapon( m_pItem, &strEdit );
CString strExp;
#ifdef __MODEL_CHANGE
g_WndMng.PutSex( pMover, m_pItem, &strEdit );
switch( pItemProp->dwItemKind2 )
{
case IK2_WEAPON_DIRECT:
case IK2_WEAPON_MAGIC:
case IK2_ARMORETC:
case IK2_CLOTHETC:
case IK2_ARMOR:
case IK2_CLOTH:
case IK2_BLINKWING:
{
g_WndMng.PutItemMinMax( pMover, m_pItem, &strEdit );
g_WndMng.PutItemSpeed( m_pItem, &strEdit );
if( pItemProp->dwItemKind3 == IK3_ELECARD )
g_WndMng.PutItemResist( m_pItem, &strEdit );
else if( m_pItem->m_nResistAbilityOption && ( pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwItemKind1 == IK1_ARMOR ) )
g_WndMng.PutItemResist( m_pItem, &strEdit );
g_WndMng.PutBaseResist( m_pItem, &strEdit ); // ¼Ó¼º ÀúÇ×·Â
g_WndMng.PutBaseItemOpt( m_pItem, &strEdit );
g_WndMng.PutJob( pMover, m_pItem, &strEdit );
g_WndMng.PutLevel( pMover, m_pItem, &strEdit );
g_WndMng.PutCommand( m_pItem, &strEdit );
g_WndMng.PutItemGold( pMover, m_pItem, &strEdit, 0 ); // °¡°Ý
g_WndMng.PutSetItemOpt( pMover, m_pItem, &strEdit );
g_WndMng.PutPiercingOpt( m_pItem, &strEdit );
g_WndMng.PutRandomOpt( m_pItem, &strEdit );
g_WndMng.PutEnchantOpt( pMover, m_pItem, &strEdit, 0 );
break;
}
case IK2_REFRESHER:
case IK2_FOOD:
case IK2_POTION:
{
g_WndMng.PutMedicine( m_pItem, m_pItem->GetProp()->dwDestParam1, pItemProp->nAdjParamVal1, &strEdit );
g_WndMng.PutMedicine( m_pItem, m_pItem->GetProp()->dwDestParam2, pItemProp->nAdjParamVal2, &strEdit );
break;
}
case IK2_JEWELRY:
{
g_WndMng.PutBaseItemOpt( m_pItem, &strEdit );
break;
}
case IK2_SYSTEM:
{
if( pItemProp->dwItemKind3 == IK3_VIS )
{
g_WndMng.PutNeededVis( m_pItem, &strEdit );
g_WndMng.PutBaseItemOpt( m_pItem, &strEdit );
}
if( m_pItem->m_dwItemId == II_SYS_SYS_SCR_SEALCHARACTER )
{
g_WndMng.PutSealChar( m_pItem, &strEdit );
}
break;
}
case IK2_GMTEXT:
{
if( pItemProp->dwItemKind3 == IK3_TEXT_DISGUISE )
{
g_WndMng.PutDestParam( pItemProp->dwDestParam[0], pItemProp->dwDestParam[1],
pItemProp->nAdjParamVal[0], pItemProp->nAdjParamVal[1], strEdit );
if( pItemProp->dwActiveSkill != NULL_ID )
{
ItemProp *pSkillProp;
AddSkillProp* pAddSkillProp;
pMover->GetSkillProp( &pSkillProp, &pAddSkillProp, pItemProp->dwActiveSkill, 1, "CWndMgr::PutToolTip_Item" );
if( pAddSkillProp )
{
g_WndMng.PutDestParam( pAddSkillProp->dwDestParam[0], pAddSkillProp->dwDestParam[1],
pAddSkillProp->nAdjParamVal[0], pAddSkillProp->nAdjParamVal[1], strEdit );
}
}
}
break;
}
default:
{
break;
}
}
if( m_pItem->IsEatPet() )
{
if( pItemProp->dwActiveSkill != NULL_ID )
{
ItemProp *pSkillProp;
AddSkillProp* pAddSkillProp;
pMover->GetSkillProp( &pSkillProp, &pAddSkillProp, pItemProp->dwActiveSkill, 1, "CWndMgr::PutToolTip_Item" );
if( pAddSkillProp )
{
g_WndMng.PutDestParam( pAddSkillProp->dwDestParam[0], pAddSkillProp->dwDestParam[1],
pAddSkillProp->nAdjParamVal[0], pAddSkillProp->nAdjParamVal[1], strEdit );
}
}
}
if( m_pItem->IsVisPet( ) )
g_WndMng.PutVisPetInfo( m_pItem, &strEdit );
g_WndMng.PutCoolTime( pMover, m_pItem, &strEdit ); // ÄðŸÀÓ
g_WndMng.PutEndurance( m_pItem, &strEdit, 0 ); // ³»±¸·Â
g_WndMng.PutKeepTime( m_pItem, &strEdit ); // »ç¿ëÇÒ¼ö ÀÖ´Â ½Ã°£
if( pItemProp->dwItemKind3 == IK3_EGG && m_pItem->m_pPet )//&& pItemElem->m_pPet->GetLevel() != PL_EGG )
g_WndMng.PutPetInfo( m_pItem, &strEdit );
if( pItemProp->dwID == II_SYS_SYS_SCR_PET_FEED_POCKET ) //¸ÔÀÌ ÁÖ¸Ó´Ï ÅøÆÁ
g_WndMng.PutPetFeedPocket( m_pItem, &strEdit );
//g_WndMng.PutPiercingOpt( m_pItem, &strEdit );
g_WndMng.PutAwakeningBlessing( m_pItem, &strEdit );
if( (pItemProp->dwItemKind2 == IK2_WEAPON_DIRECT || pItemProp->dwItemKind2 == IK2_WEAPON_MAGIC) && m_pItem->GetProp()->dwReferStat1 == WEAPON_ULTIMATE )
g_WndMng.PutAddedOpt( m_pItem, &strEdit );
if( (pItemProp->dwItemKind2 == IK2_WEAPON_DIRECT || pItemProp->dwItemKind2 == IK2_WEAPON_MAGIC) && pItemProp->IsUltimate() )
m_pUltimateTexture->Render( p2DRender, CPoint( 10, 55) );
// else if( (pItemProp->dwItemKind2 == IK2_WEAPON_DIRECT || pItemProp->dwItemKind2 == IK2_WEAPON_MAGIC) && pItemProp->IsBaruna() )
// m_pBarunaTexture->Render( p2DRender, CPoint( 10, 55) );
m_p2DRender->TextOut_EditString(rectItem.left - 80, rectItem.bottom + 15, strEdit);
this->SetWndSize(90 + p2DRender->m_pFont->GetTextExtent(strEdit).cx, 100 + p2DRender->m_pFont->GetTextExtent(strEdit).cy);
}
}
void CWndLinkedItem::SetItem(CItemElem *pItem)
{
if( pItem && pItem->GetProp() )
this->m_pItem = pItem;
}
#endif //__MODEL_CHANGE
#endif