#include "stdafx.h" #include #include "SUIDefine.h" #include "SGameManager.h" #include "SGameSystem.h" //#include "SGameMessageUI.h" #include "SNetMessage.h" #include "SGameMessage.h" #include "ErrorCode/ErrorCode.h" #include "KUIWndManager.h" #include "SStringDB.h" #include "TemplateUtil.h" #include "SUIChangeNameWnd.h" #include "SDebug_Util.h" namespace { const char* deco_old_name = "<#ffffff>%s"; AR_HANDLE gUsedItemHandleToChangeName = 0; AR_HANDLE gTargetPlayerHandleToChangeName = 0; } SUIChangeNameWnd::SUIChangeNameWnd( SGameManager* pGameManager ) : SUIWnd( pGameManager ) , mOldName( 0 ) , mNewName( 0 ) { } SUIChangeNameWnd::~SUIChangeNameWnd() { } void SUIChangeNameWnd::Process( DWORD time ) { SUIWnd::Process( time ); } bool SUIChangeNameWnd::InitControls( KPoint pos ) { mOldName = GetChild( "use_name" ); mNewName = dynamicCast< KUIControlEdit* >( GetChild( "change_name_box" ) ); return SUIWnd::InitControls( pos ); } bool SUIChangeNameWnd::InitData( bool reload ) { if( mNewName ) { mNewName->SetOnlyNumber( false ); mNewName->SetLimitation( GameRule::MAX_CHARACTER_NAME_SIZE ); } return SUIWnd::InitData( reload ); } void* SUIChangeNameWnd::Perform( KID id, KArg& msg ) { _CID( updateChangeNameWnd ); if( id == id_updateChangeNameWnd ) { mOldNameString = msg.by< const char* >( KID( "current_name" ) ); gUsedItemHandleToChangeName = msg.by< AR_HANDLE >( KID( "item_handle" ) ); gTargetPlayerHandleToChangeName = msg.by< AR_HANDLE >( KID( "target_handle" ) ); return NULL; } return SUIWnd::Perform( id, msg ); } void SUIChangeNameWnd::PumpUpMessage( LPCTSTR controlID, DWORD msg, DWORD lparam, DWORD wparam ) { switch( msg ) { case KUI_MESSAGE::KBUTTON_CLICK: { //servantes 2010.10.13 if( !::stricmp( controlID, "button_cancel" ) ) { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHANGE_NAME, false, true ) ); } //servantes 2010.10.13 else if( !::stricmp( controlID, "button_ok" ) ) { if( _isReadyToChangeName() ) { SIMSG_UI_ACT_INVENTORY* inventoryAction = new SIMSG_UI_ACT_INVENTORY(); inventoryAction->m_nActType = SIMSG_UI_ACT_INVENTORY::ACT_USE; inventoryAction->m_nHandle = gUsedItemHandleToChangeName; inventoryAction->m_ItemUseTargetHandle = gTargetPlayerHandleToChangeName; inventoryAction->m_strParameter = mNewName->GetText(); m_pGameManager->PostMsgAtDynamic( inventoryAction ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHANGE_NAME, false, true ) ); } } } break; } SUIWnd::PumpUpMessage( controlID, msg, lparam, wparam ); } void SUIChangeNameWnd::ProcMsgAtStatic( SGameMessage* msg ) { } void SUIChangeNameWnd::OnNotifyUIWindowOpen( bool open, bool limitWnd ) { if( open ) { SetFocus( true ); if( mOldName ) { std::string oldNameCaption; XStringUtil::Format( oldNameCaption, deco_old_name, mOldNameString.c_str() ); mOldName->SetCaption( oldNameCaption.c_str() ); } if( mNewName ) mNewName->SetText( "" ); } else { SetFocus( false ); } } DWORD SUIChangeNameWnd::OnMouseMessage( DWORD msg, int x, int y ) { DWORD ret = SUIWnd::OnMouseMessage( msg, x, y ); if( KMR_NO_GET & ret ) return ret; // do something ... return ret; } void SUIChangeNameWnd::OnFocusNotify() { } bool SUIChangeNameWnd::_isReadyToChangeName() const { return ( gUsedItemHandleToChangeName && gTargetPlayerHandleToChangeName && mNewName && mNewName->GetText() ) ? true : false; }