204 lines
3.9 KiB
C++
204 lines
3.9 KiB
C++
#include "SunClientPrecompiledHeader.h"
|
|
#include "CreateCharRotateButton.h"
|
|
#include "characterscene.h"
|
|
#include "Object.h"
|
|
#include "Objectmanager.h"
|
|
#include "Camera.h"
|
|
#include "Mouse.h"
|
|
|
|
#define ZOOM_SPEED 10
|
|
|
|
WzID CreateCharRotateButton::m_wzId[MAX_BUTTON] =
|
|
{
|
|
#ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
StrToWzID("BT04"),
|
|
StrToWzID("BT05"),
|
|
StrToWzID("BT00"),
|
|
StrToWzID("B002"),
|
|
#else
|
|
StrToWzID("BT01"),
|
|
StrToWzID("BT02"),
|
|
StrToWzID("BT00"),
|
|
StrToWzID("B002"),
|
|
#endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
};
|
|
|
|
CreateCharRotateButton::CreateCharRotateButton(InterfaceManager * pUIman)
|
|
:uiBase(pUIman)
|
|
{
|
|
}
|
|
|
|
CreateCharRotateButton::~CreateCharRotateButton()
|
|
{
|
|
}
|
|
|
|
VOID CreateCharRotateButton::Init( CDrawBase * pDrawBase )
|
|
{
|
|
uiBase::Init(pDrawBase);
|
|
|
|
m_RotateType = NONE_BUTTON;
|
|
#ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
#else
|
|
pZoomInBtn = getControl( ZOOM_IN_BUTTON );
|
|
pZoomOutBtn = getControl( ZOOM_OUT_BUTTON );
|
|
#endif//#ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
}
|
|
|
|
#ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
#else
|
|
void CreateCharRotateButton::SetZoomButton( BOOL bShow )
|
|
{
|
|
if (bShow)
|
|
{
|
|
pZoomInBtn->ShowWindowWZ(WZ_SHOW);
|
|
pZoomOutBtn->ShowWindowWZ(WZ_SHOW);
|
|
}
|
|
else
|
|
{
|
|
pZoomInBtn->ShowWindowWZ(WZ_HIDE);
|
|
pZoomOutBtn->ShowWindowWZ(WZ_HIDE);
|
|
}
|
|
}
|
|
#endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
|
|
VOID CreateCharRotateButton::Release()
|
|
{
|
|
|
|
}
|
|
|
|
VOID CreateCharRotateButton::MessageProc(SI_MESSAGE * pMessage)
|
|
{
|
|
switch (pMessage->eResultMsg)
|
|
{
|
|
case RT_MSG_LBUTTONDOWN:
|
|
{
|
|
if(m_RotateType == NONE_BUTTON)
|
|
{
|
|
switch (getCtrlIDToPos(pMessage->dwCtrlID))
|
|
{
|
|
case LEFT_BUTTON:
|
|
m_RotateType = LEFT_BUTTON;
|
|
break;
|
|
|
|
case RIGHT_BUTTON:
|
|
m_RotateType = RIGHT_BUTTON;
|
|
break;
|
|
case ZOOM_IN_BUTTON:
|
|
m_RotateType = ZOOM_IN_BUTTON;
|
|
break;
|
|
|
|
case ZOOM_OUT_BUTTON:
|
|
m_RotateType = ZOOM_OUT_BUTTON;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case RT_MSG_LBUTTONUP:
|
|
{
|
|
m_RotateType = NONE_BUTTON;
|
|
}
|
|
break;
|
|
|
|
case RT_MSG_LBUTTONCLICK:
|
|
{
|
|
m_RotateType = NONE_BUTTON;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
SolarDialog::MessageProc(pMessage);
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
VOID CreateCharRotateButton::OnUpdateSolarDialog()
|
|
{
|
|
|
|
if (m_RotateType == NONE_BUTTON)
|
|
{
|
|
return;
|
|
}
|
|
|
|
bool isOut = true;
|
|
int mosueX = Mouse::Instance()->GetMouseX();
|
|
int mosuey = Mouse::Instance()->GetMouseY();
|
|
|
|
CControlWZ* controlRect = getControl(m_RotateType);
|
|
if(controlRect)
|
|
{
|
|
RECT consize = controlRect->GetSizeRect();
|
|
|
|
if(consize.left < mosueX && consize.right > mosueX &&
|
|
consize.top < mosuey && consize.bottom > mosuey)
|
|
{
|
|
isOut = false;
|
|
}
|
|
}
|
|
|
|
if(isOut)
|
|
{
|
|
return;
|
|
}
|
|
|
|
float temp = 0.0f;
|
|
if (m_RotateType == LEFT_BUTTON)
|
|
{
|
|
temp = 0.03f;
|
|
}
|
|
else if (m_RotateType == RIGHT_BUTTON)
|
|
{
|
|
temp = -0.03f;
|
|
}
|
|
g_CharSelectScene.RotateCinematicCharacter(temp);
|
|
|
|
int dis = 0;
|
|
|
|
#ifdef _NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
if (m_RotateType == ZOOM_IN_BUTTON)
|
|
{
|
|
g_CharSelectScene.ZoomCamera(0.05f);
|
|
}
|
|
else if (m_RotateType == ZOOM_OUT_BUTTON)
|
|
{
|
|
g_CharSelectScene.ZoomCamera(-0.05f);
|
|
}
|
|
#else
|
|
if (m_RotateType == ZOOM_IN_BUTTON)
|
|
{
|
|
dis = ZOOM_SPEED;
|
|
}
|
|
else if (m_RotateType == ZOOM_OUT_BUTTON)
|
|
{
|
|
dis = -ZOOM_SPEED;
|
|
}
|
|
|
|
g_Camera.MoveFrontBack(dis);
|
|
#endif//_NA_005003_20120612_NEW_CHARACTER_MYSTIC_FOR_CLIENT
|
|
g_Camera.UpdateCamera();
|
|
|
|
}
|
|
|
|
CControlWZ * CreateCharRotateButton::getControl( POSTYPE AtPos )
|
|
{
|
|
assert( AtPos < MAX_BUTTON );
|
|
|
|
return GetControlWZ( m_wzId[AtPos] );
|
|
}
|
|
|
|
POSTYPE CreateCharRotateButton::getCtrlIDToPos( WzID wzId )
|
|
{
|
|
for( POSTYPE i = 0 ; i < MAX_BUTTON; ++i )
|
|
{
|
|
if( m_wzId[i] == wzId )
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return MAX_BUTTON;
|
|
|
|
} |