#include "StdAfx.h" #include "GuildWindow.h" #include "ChatManager.h" #include "ObjectManager.h" #include "Hero.h" #include "GameResourceManager.h" // #include "ListBox.h" #include "Label.h" #include "EditBox.h" #include "Button.h" #include "GuildManager.h" #include "GameUIManager.h" #include "UIImage.h" #include "FilterManager.h" #include "HeroInfoWindow.h" cGuildWindow::cGuildWindow() : mpName(0) , mpMasterName(0) , mpPosition(0) , mpTotal(0) , mpConnectCount(0) , mpList(0) , mpNoticeEdit(0) , mpGuildAdd(0) , mpGuildMemDrop(0) , mpGuildOut(0) , mpGuildBreak(0) , mpGuildGivePosition(0) , mpNotice(0) , mpMarkChange(0) , mpMarkImage(0) , mpMarkSkin(0) , mShowMark(false) { } cGuildWindow::~cGuildWindow() { SAFE_DELETE( mpMarkImage ); } void cGuildWindow::Toggle() { if( IsVisible() == false ) { if( HERO->GetGuildIndex() == 0 ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1205 ) ); return; } } cUIWindow::Toggle(); } void cGuildWindow::Clear() { if( mpName ) mpName->Clear(); if( mpMasterName ) mpMasterName->Clear(); if( mpTotal ) mpTotal->Clear(); if( mpConnectCount ) mpConnectCount->Clear(); if( mpPosition ) mpPosition->Clear(); if( mpList ) mpList->Clear(); if( mpNoticeEdit ) mpNoticeEdit->Clear(); /// ¹öư ÃʱâÈ­ if( mpGuildAdd ) mpGuildAdd->SetEnabled( false ); if( mpGuildGivePosition ) mpGuildGivePosition->SetEnabled( false ); if( mpGuildOut ) mpGuildOut->SetEnabled( false ); if( mpGuildMemDrop ) mpGuildMemDrop->SetEnabled( false ); if( mpMarkChange ) mpMarkChange->SetEnabled( false ); if( mpGuildBreak ) mpGuildBreak->SetEnabled( false ); } void cGuildWindow::HideMark() { mShowMark = false; } void cGuildWindow::ClearList() { if( mpList ) mpList->Clear(); } void cGuildWindow::Open() { } void cGuildWindow::Close() { cUIWindow::Close(); UIMAN->HideTip(); } void cGuildWindow::OnShow() { cUIWindow::OnShow(); if( HERO->GetGuildIndex() > 0 ) { if( mpNoticeEdit ) { mpNoticeEdit->Clear(); UpdateGuildNotice( GUILDMAN->GetGuildNotice() ); } } } void cGuildWindow::OnHide() { cUIWindow::OnHide(); UIMAN->HideTip(); cGuildButtonWindow* win = GAMEUI->GetGuildButtonWindow(); if( win ) win->Hide(); } bool cGuildWindow::OnCreate( cUINodeProperty* pproperty ) { if( cUIWindow::OnCreate( pproperty ) == false ) return false; mpName = (cLabel*)GetChild( eUIID_GUILD_NAME ); mpMasterName = (cLabel*)GetChild( eUIID_GUILD_MASTERNAME ); mpPosition = (cLabel*)GetChild( eUIID_GUILD_POSITION ); mpTotal = (cLabel*)GetChild( eUIID_GUILD_TOTAL ); mpConnectCount = (cLabel*)GetChild( eUIID_GUILD_CONNECTCOUNT ); mpList = (cListBox*)GetChild( eUIID_GUILD_MEMBERLIST ); mpNoticeEdit = (cEditBox*)GetChild( eUIID_GUILD_NOTICEEDIT ); mpGuildAdd = (cButton*)GetChild( eUIID_GUILD_ADD ); mpGuildGivePosition = (cButton*)GetChild( eUIID_GUILD_GIVEPOSITION ); mpGuildMemDrop = (cButton*)GetChild( eUIID_GUILD_MEMBERDROP ); mpGuildOut = (cButton*)GetChild( eUIID_GUILD_OUT ); mpMarkChange = (cButton*)GetChild( eUIID_GUILD_MARKCHANGE ); mpGuildBreak = (cButton*)GetChild( eUIID_GUILD_BREAK ); mpNotice = GetChild( eUIID_GUILD_NOTICE ); /// cUISkin* pSkin = UIMAN->GetSkin(); if( !pSkin ) { assert(0); return 0; } mpMarkSkin = pSkin->GetNodeSkin( "Guild_Mark" ); if( mpMarkSkin ) { mpMarkImage = new cUIImage; if( mpMarkImage ) { unsigned int x = mpMarkSkin->mSkinInfo->mX + GetAbsoluteRect().mLeft; unsigned int y = mpMarkSkin->mSkinInfo->mY + GetAbsoluteRect().mTop; mpMarkImage->SetScreenRect( cUIRect(x, y, x+MARK_WIDTH, y+MARK_HEIGHT) ); } } /// Clear(); return true; } void cGuildWindow::UpdateRect() { cUIWindow::UpdateRect(); cUIWindow* win = (cUIWindow*)GAMEUI->GetGuildButtonWindow(); if( mpGuildGivePosition && win ) { int x = mpGuildGivePosition->GetAbsoluteRect().mLeft; int y = mpGuildGivePosition->GetAbsoluteRect().mBottom; win->SetRelativePos( cUIPos(x, y) ); } if( mpMarkSkin && mpMarkImage ) { int x = mpMarkSkin->mSkinInfo->mX + GetAbsoluteRect().mLeft; int y = mpMarkSkin->mSkinInfo->mY + GetAbsoluteRect().mTop; mpMarkImage->SetScreenRect( cUIRect(x, y, x+MARK_WIDTH, y+MARK_HEIGHT) ); } } void cGuildWindow::OnRender( cUIFontItemKeeper* pKeeper ) { cUIWindow::OnRender( pKeeper ); if( mpMarkImage && mShowMark ) mpMarkImage->Draw(); } void cGuildWindow::OnCommand( cUINode* , unsigned int id ) { switch( id ) { case eUIID_GUILD_CLOSE: { Hide(); } break; case eUIID_GUILD_NOTICE: { if( mpNoticeEdit ) { /// ±æµå °øÁö ¼öÁ¤ LPCTSTR notice = mpNoticeEdit->GetText(); int len = ::_tcslen( notice ); if( len > 0 ) { if( FILTERMAN->CheckPartMatch( notice ) == false ) { GUILDMAN->GuildNotice( notice ); mpNoticeEdit->Clear(); } else { /// ÇÊÅ͸µ µÊ CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 336 ) ); } } else { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1249 ) ); } } else { assert(0); } } break; case eUIID_GUILD_ADD: { if( GUILDMAN->GetTotalCount() >= MAX_GUILD ) { /// ±æµåÀοø Ãʰú CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1210 ) ); } else { /// ±æµå¿ø ÃÊ´ë UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_GUILD_ADDUSERNAME, eSKIN_EDIT, GAMERESOURCEMAN->GetGameText( 1258 ), GAMERESOURCEMAN->GetGameText( 1243 ), 0, 0, 0, false, false, 2, MAX_NAME_SIZE ); } } break; case eUIID_GUILD_MARKCHANGE: { if( HERO->GetGuildIndex() == 0 ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1205 ) ); return; } /// ±æµåÀåÀÎÁö °Ë»ç if( GUILDMAN->GetMasterIndex() != HERO->GetObjectID() ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1253 ) ); return; } /// ±æµå ¸¶Å© º¯°æ NiTexture* texture = GUILDMAN->LoadPreviewGuildMark( REGIST_GUILDMARK ); if( texture ) { /// ±æµå¸¶Å© ¹Ì¸®º¸±â HERO->PreviewGuildMark( texture ); cGuildMarkWindow* win = GAMEUI->GetGuildMarkWindow(); if( win ) { win->ChangeMarkRegist( texture ); win->Show(); } GUILDMAN->ClearPreviewGuildMark(); } else { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1255 ) ); } } break; case eUIID_GUILD_GIVEPOSITION: { /// ±æµå Á÷À§ ºÎ¿© cUIWindow* win = (cUIWindow*)GAMEUI->GetGuildButtonWindow(); if( win ) { if( win->IsVisible() ) win->Hide(); else win->Show(); } } break; case eUIID_GUILD_MEMBERDROP: { if( HERO->GetGuildIndex() == 0 ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1205 ) ); return; } /// ±æµåÀåÀÎÁö °Ë»ç if( GUILDMAN->GetMasterIndex() != HERO->GetObjectID() ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1224 ) ); return; } // ¸â¹ö Á¦¸í sGuildUserInfo* data = GetSelectUserInfo(); if( data ) { if( HERO->GetObjectID() == data->characterIdx ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1223 ) ); return; } TCHAR str[128]={0,}; ::_stprintf_s( str, GAMERESOURCEMAN->GetGameText( 1239 ), data->name ); UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_GUILD_MEMBERDROP, eSKIN_YESNO, str, GAMERESOURCEMAN->GetGameText( 301 ), (void*)data->characterIdx ); } else { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1242 ) ); } } break; case eUIID_GUILD_OUT: { if( HERO->GetGuildIndex() == 0 ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1205 ) ); return; } UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_GUILD_OUT, eSKIN_YESNO, GAMERESOURCEMAN->GetGameText( 1240 ), GAMERESOURCEMAN->GetGameText( 301 ) ); } break; case eUIID_GUILD_BREAK: { if( HERO->GetGuildIndex() == 0 ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1205 ) ); return; } // ±æµåÀå°Ë»ç if( GUILDMAN->GetMasterIndex() != HERO->GetObjectID() ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1227 ) ); return; } UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_GUILD_BREAK, eSKIN_YESNO, GAMERESOURCEMAN->GetGameText( 1241 ), GAMERESOURCEMAN->GetGameText( 301 ) ); } break; } } /// void cGuildWindow::OnListBoxRowHovered( cUINode* , unsigned int , const cUIPos& pos, void* extraData ) { sGuildUserInfo* data = (sGuildUserInfo*)extraData; if( data ) { UIMAN->HideTip(); if( data->channelNum > 0 ) { // µ¿ÀÏ Ã¤³Î½Ã. if( HERO->GetChannelNum() == data->channelNum ) { UIMAN->ShowCommunityTip( GAMEUI->GetSimpleTip(), pos, GAMERESOURCEMAN->GetMapName( data->mapnum ) ); } else { // Ÿä³ÎÀÇ ÀÏ¹Ý ¸ÊÀΰæ¿ì if( data->mapnum >= MAP_MIN && data->mapnum <= MAP_MAX ) { TCHAR temp[128]={0,}; ::_stprintf_s( temp, GAMERESOURCEMAN->GetGameText( 1260 ), data->channelNum ); UIMAN->ShowCommunityTip( GAMEUI->GetSimpleTip(), pos, temp ); } else { // Ÿä³ÎÀÇ ´øÀü ¸ÊÀΰæ¿ì UIMAN->ShowCommunityTip( GAMEUI->GetSimpleTip(), pos, GAMERESOURCEMAN->GetMapName( data->channelNum ) ); } } } else { UIMAN->ShowCommunityTip( GAMEUI->GetSimpleTip(), pos, GAMERESOURCEMAN->GetGameText( 1236 ) ); } } } void cGuildWindow::OnListBoxRowLeft(cUINode* , unsigned int ) { UIMAN->HideTip(); } /// ±æµå À¯Àú Ãß°¡ void cGuildWindow::AddGuildPlayer( sGuildUserInfo* data ) { if( !mpList ) { assert(0); return; } LPCTSTR posText = GUILDMAN->GetTextIndex( data->position ); unsigned long color = mDefaultColor; if( data->channelNum > 0 ) { /// ´Ù¸¥Ã¤³Î¿¡ Á¢¼ÓÁßÀÌ À¯Àú if( HERO->GetChannelNum() != data->channelNum ) color = COLOR_OLIVE; } else { color = COLOR_DARKGRAY; } /// Á÷À§ int row = mpList->AddRow( posText, color, (void*)data ); if( row > -1 ) { /// À̸§ mpList->AddColume( row, data->name, color ); /// ·¹º§ cStringT str; str.Format( _T("%dLv"), data->level ); mpList->AddColume( row, (LPCTSTR)str.Cstr(), color ); /// Á÷¾÷ LPCTSTR jobName = GAMERESOURCEMAN->GetJobName( data->job ); mpList->AddColume( row, jobName, color ); } else { // assert(0); } } void cGuildWindow::SetGuildName( LPCTSTR name ) { if( mpName ) mpName->SetText( name ); } void cGuildWindow::SetMasterName( LPCTSTR name ) { if( mpMasterName ) mpMasterName->SetText( name ); } void cGuildWindow::SetTotalCount( unsigned int count ) { if( mpTotal ) mpTotal->SetValue( count ); } void cGuildWindow::SetConnectCount( unsigned int count ) { if( mpConnectCount ) mpConnectCount->SetValue( count ); } /// Á÷À§º¯°æ¿¡ µû¸¥ ±â´É ¼¼ÆÃ void cGuildWindow::SetPosition( unsigned char position ) { if( mpPosition ) { LPCTSTR str = GUILDMAN->GetTextIndex( position ); mpPosition->SetText( str ); cHeroInfoWindow* pHeroInfoWin = GAMEUI->GetHeroInfoWindow(); if( pHeroInfoWin ) { pHeroInfoWin->SetPosition( str ); } cGuildButtonWindow* win = GAMEUI->GetGuildButtonWindow(); if( win ) win->SetPosition( position ); /// 1. ±æµåÃÊ´ë¹öư - Àå·Î ÀÌ»ó. bool set = ( position == eGUILD_MASTER || position == eGUILD_SUBMASTER || position == eGUILD_ELDER ); if( mpGuildAdd ) mpGuildAdd->SetEnabled( set ); /// 2. Á÷À§ºÎ¿©¹öư - ±æµåÀå, ºÎ±æµåÀå set = ( position == eGUILD_MASTER || position == eGUILD_SUBMASTER ); if( mpGuildGivePosition ) mpGuildGivePosition->SetEnabled( set ); /// 3. ±æµåÅ»Åð¹öư - ±æµåÀå Á¦¿Ü set = ( position != eGUILD_MASTER ); if( mpGuildOut ) mpGuildOut->SetEnabled( set ); /// 4. ±æµå¿øÃß¹æ¹öư - ±æµåÀ常 °¡´É set = ( position == eGUILD_MASTER ); if( mpGuildMemDrop ) mpGuildMemDrop->SetEnabled( set ); /// 5. ¸¶Å©º¯°æ¹öư - ±æµåÀ常 °¡´É set = ( position == eGUILD_MASTER ); if( mpMarkChange ) mpMarkChange->SetEnabled( set ); /// 6. ±æµåÇØÃ¼¹öư - ±æµåÀ常 °¡´É set = ( position == eGUILD_MASTER ); if( mpGuildBreak ) mpGuildBreak->SetEnabled( set ); // ±æµåÀåÀϰæ¿ì set = ( position == eGUILD_MASTER ); if( mpNoticeEdit ) mpNoticeEdit->SetEnabled( set ); if( mpNotice ) mpNotice->SetEnabled( set ); } } bool cGuildWindow::ChangeMark( NiTexture* tex ) { if( tex && mpMarkImage ) { mpMarkImage->SetTexture( tex ); mpMarkImage->SetTextureRect( 0, 0, MARK_WIDTH, MARK_HEIGHT ); mShowMark = true; } else { assert(0); return false; } return true; } cUIRect cGuildWindow::GetGivePositionBtnRect() { cUIRect rc(0, 0, 0, 0); if( mpGuildGivePosition ) rc = mpGuildGivePosition->GetAbsoluteRect(); return rc; } /// ¼±ÅÃµÈ À¯ÀúÁ¤º¸ sGuildUserInfo* cGuildWindow::GetSelectUserInfo() { if( !mpList ) { assert(0); return 0; } int row = mpList->GetSelectIndex(); sGuildUserInfo* data = (sGuildUserInfo*)mpList->GetExtraData( row ); return data; } unsigned int cGuildWindow::GetSelectRow() { if( mpList ) return mpList->GetSelectIndex(); return 0; } void cGuildWindow::SetSelectRow( unsigned int row ) { if( mpList ) mpList->ChangeSelectRow( row ); } void cGuildWindow::UpdateGuildNotice( LPCTSTR notice ) { if( mpNoticeEdit ) mpNoticeEdit->SetText( notice ); } void cGuildWindow::SetEnableMarkChange( bool enable ) { if( mpMarkChange ) mpMarkChange->SetEnabled( enable ); } void cGuildWindow::OnNetLock( int lockTry ) { if( mpGuildAdd ) mpGuildAdd->NetLock( lockTry ); if( mpGuildMemDrop ) mpGuildMemDrop->NetLock( lockTry ); if( mpGuildOut ) mpGuildOut->NetLock( lockTry ); if( mpGuildBreak ) mpGuildBreak->NetLock( lockTry ); } void cGuildWindow::OnNetUnLock( int lockTry ) { if( mpGuildAdd ) mpGuildAdd->NetUnLock( lockTry ); if( mpGuildMemDrop ) mpGuildMemDrop->NetUnLock( lockTry ); if( mpGuildOut ) mpGuildOut->NetUnLock( lockTry ); if( mpGuildBreak ) mpGuildBreak->NetUnLock( lockTry ); } ////////////////////////////////////////////////////////////////// //// ¹öư À©µµ¿ì cGuildButtonWindow::cGuildButtonWindow() : mpMaster(0) , mpSubMaster(0) , mpElder(0) , mpUpperHouse(0) , mpLowerHouse(0) , mpGeneral(0) { } cGuildButtonWindow::~cGuildButtonWindow() { } bool cGuildButtonWindow::OnCreate( cUINodeProperty* pproperty ) { if( cUIWindow::OnCreate( pproperty ) == false ) return false; UIMAN->AddEventOtherClick( this ); mpMaster = GetChild( eUIID_GUILDPOSITION_MASTER ); mpSubMaster = GetChild( eUIID_GUILDPOSITION_SUBMASTER ); mpElder = GetChild( eUIID_GUILDPOSITION_ELDER ); mpUpperHouse = GetChild( eUIID_GUILDPOSITION_UPPERHOUSE ); mpLowerHouse = GetChild( eUIID_GUILDPOSITION_LOWERHOUSE ); mpGeneral = GetChild( eUIID_GUILDPOSITION_GENERAL ); return true; } void cGuildButtonWindow::OnCommand( cUINode* , unsigned int id ) { cGuildWindow* win = GAMEUI->GetGuildWindow(); if( !win ) { assert(0); return; } //char heroPos = HERO->GetGuildPosition(); TCHAR str[128]={0,}; char position = eGUILD_NONE; switch( id ) { case eUIID_GUILDPOSITION_MASTER: /// ±æµåÀå if( HERO->GetGuildPosition() == eGUILD_MASTER ) position = eGUILD_MASTER; break; case eUIID_GUILDPOSITION_SUBMASTER: /// ºÎ±æµåÀå if( HERO->GetGuildPosition() == eGUILD_MASTER ) position = eGUILD_SUBMASTER; break; case eUIID_GUILDPOSITION_ELDER: /// Àå·Î if( HERO->GetGuildPosition() == eGUILD_MASTER || HERO->GetGuildPosition() == eGUILD_SUBMASTER ) position = eGUILD_ELDER; break; case eUIID_GUILDPOSITION_UPPERHOUSE: /// »ó¿ø ÀÇ¿ø if( HERO->GetGuildPosition() == eGUILD_MASTER || HERO->GetGuildPosition() == eGUILD_SUBMASTER ) position = eGUILD_UPPERHOUSE; break; case eUIID_GUILDPOSITION_LOWERHOUSE: /// ÇÏ¿ø ÀÇ¿ø if( HERO->GetGuildPosition() == eGUILD_MASTER || HERO->GetGuildPosition() == eGUILD_SUBMASTER ) position = eGUILD_LOWERHOUSE; break; case eUIID_GUILDPOSITION_GENERAL: /// ÀÏ¹Ý if( HERO->GetGuildPosition() == eGUILD_MASTER || HERO->GetGuildPosition() == eGUILD_SUBMASTER ) position = eGUILD_GENERAL; break; default: Hide(); return; } /// ¾Ë¸²Ã¢ ¶ç¿ì±â if( position != eGUILD_NONE ) { sGuildUserInfo* info = win->GetSelectUserInfo(); if( info ) { /// ÀÚ±âÀڽŠºÒ°¡ if( HERO->GetObjectID() != info->characterIdx ) { LPCTSTR positionStr = GUILDMAN->GetTextIndex( position ); ::_stprintf_s( str, GAMERESOURCEMAN->GetGameText( 1247 ), info->name, positionStr ); UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_GUILD_GIVEPOSITION, eSKIN_YESNO, str, GAMERESOURCEMAN->GetGameText( 301 ), (void*)position ); } else { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1248 ) ); } } } else { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 1245 ) ); } Hide(); } void cGuildButtonWindow::OnMouseOtherClick( const cUIPos& pos ) { cGuildWindow* win = GAMEUI->GetGuildWindow(); if( win ) { cUIRect rect = win->GetGivePositionBtnRect(); if( mAbsoluteRect.ContainPoint( pos ) == false && rect.ContainPoint( pos ) == false ) { Hide(); } } } void cGuildButtonWindow::UpdateSkin() { cUIWindow::UpdateSkin(); cGuildWindow* win = GAMEUI->GetGuildWindow(); if( win ) { cUIRect rect = win->GetGivePositionBtnRect(); int x = rect.mLeft; int y = rect.mBottom; SetRelativePos( cUIPos(x, y) ); } } void cGuildButtonWindow::SetPosition( unsigned char position ) { bool otherSet = false; if( position == eGUILD_MASTER ) { if( mpMaster ) mpMaster->SetEnabled( true ); if( mpSubMaster ) mpSubMaster->SetEnabled( true ); otherSet = true; } else if( position == eGUILD_SUBMASTER ) { if( mpMaster ) mpMaster->SetEnabled( false ); if( mpSubMaster ) mpSubMaster->SetEnabled( false ); otherSet = true; } else { Hide(); } if( mpElder ) mpElder->SetEnabled( otherSet ); if( mpUpperHouse ) mpUpperHouse->SetEnabled( otherSet ); if( mpLowerHouse ) mpLowerHouse->SetEnabled( otherSet ); if( mpGeneral ) mpGeneral->SetEnabled( otherSet ); } /////////////////////////////////////////////////////////////////////// // ±æµå¸¶Å© µî·Ï UI cGuildMarkWindow::cGuildMarkWindow() : mpMarkImage(0) , mpMarkSkin(0) { } cGuildMarkWindow::~cGuildMarkWindow() { SAFE_DELETE( mpMarkImage ); } void cGuildMarkWindow::OnShow() { cGuildWindow* win = GAMEUI->GetGuildWindow(); if( win ) { win->SetEnableMarkChange( false ); } } void cGuildMarkWindow::OnHide() { SAFE_DELETE( mpMarkImage ); cGuildWindow* win = GAMEUI->GetGuildWindow(); if( win ) { win->SetEnableMarkChange( true ); } } void cGuildMarkWindow::HideESC( bool onsound ) { /// ¹Ì¸®º¸±â Ãë¼Ò HERO->UpdateGuildMark(); cUIWindow::HideESC( onsound ); } bool cGuildMarkWindow::OnCreate( cUINodeProperty* pproperty ) { if( cUIWindow::OnCreate( pproperty ) == false ) return false; cUISkin* pSkin = UIMAN->GetSkin(); if( !pSkin ) { assert(0); return 0; } mpMarkSkin = pSkin->GetNodeSkin( "GuildMark_Mark" ); if( !mpMarkSkin ) { assert(0); return 0; } return true; } void cGuildMarkWindow::OnRender( cUIFontItemKeeper* pKeeper ) { cUIWindow::OnRender( pKeeper ); if( mpMarkImage ) mpMarkImage->Draw(); } void cGuildMarkWindow::OnCommand( cUINode* , unsigned int id ) { if( id == eUIID_GUILDMARK_YES ) { GUILDMAN->GuildMarkUpdate(); } /// ¹Ì¸®º¸±â Ãë¼Ò HERO->UpdateGuildMark(); Hide(); } void cGuildMarkWindow::UpdateRect() { cUIWindow::UpdateRect(); if( mpMarkSkin && mpMarkImage ) { unsigned int x = mpMarkSkin->mSkinInfo->mX + GetAbsoluteRect().mLeft; unsigned int y = mpMarkSkin->mSkinInfo->mY + GetAbsoluteRect().mTop; mpMarkImage->SetScreenRect( cUIRect(x, y, x+MARK_WIDTH, y+MARK_HEIGHT) ); } } bool cGuildMarkWindow::ChangeMarkRegist( NiTexture* tex ) { if( mpMarkSkin && tex ) { /// ÅØ½ºÃ³ ¼³Á¤ mpMarkImage = new cUIImage( tex ); unsigned int x = mpMarkSkin->mSkinInfo->mX + GetAbsoluteRect().mLeft; unsigned int y = mpMarkSkin->mSkinInfo->mY + GetAbsoluteRect().mTop; mpMarkImage->SetTextureRect( 0, 0, MARK_WIDTH, MARK_HEIGHT ); mpMarkImage->SetScreenRect( cUIRect(x, y, x+MARK_WIDTH, y+MARK_HEIGHT) ); } else { assert(0); return false; } return true; }