Files
2026-06-01 12:46:52 +02:00

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;
}