Files
Sun1602/Client/GameClient/CreateCharRotateButton.cpp
2022-10-26 12:25:11 +08:00

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