157 lines
3.5 KiB
C++
157 lines
3.5 KiB
C++
#include "stdafx.h"
|
|
|
|
#include <mmo/ArType.h>
|
|
#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 = "<size:12><hcenter><vcenter><#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;
|
|
} |