114 lines
3.8 KiB
C++
114 lines
3.8 KiB
C++
#include "stdafx.h"
|
|
#include "AgentParty/AgentPartyOperator.h"
|
|
#include "Zone/PortalManager.h"
|
|
#include "UserSessions/User.h"
|
|
|
|
VOID
|
|
MemberQueryResultOperator::PortalCreate(User* pUser)
|
|
{
|
|
PortalUserInfo& portalInfo = pUser->GetPortalUserInfo();
|
|
PORTALKEY prevPortalKey = INVALID_PORTAL_KEY;
|
|
const PortalUserInfo::eState state =
|
|
portalInfo.TryChangeState(portalInfo.eCommand_CreatePortal, m_PortalKey, &prevPortalKey);
|
|
UserState userState = { pUser, state, prevPortalKey };
|
|
m_UserStateList.push_back(userState);
|
|
|
|
if (m_IsTempPortal)
|
|
{
|
|
BOOLEAN isSendClosePortal = (state == portalInfo.eState_ChangedPortal);
|
|
BOOLEAN isSendCreatePortal = (state == portalInfo.eState_Success || isSendClosePortal);
|
|
|
|
if(isSendClosePortal)
|
|
{
|
|
MSG_CG_ZONE_EX_QUEST_PORTAL_CLOSE_CMD msg;
|
|
msg.portalKey = prevPortalKey;
|
|
pUser->SendPacket(&msg, sizeof(msg));
|
|
}
|
|
|
|
if(isSendCreatePortal)
|
|
{
|
|
MSG_CG_ZONE_EX_QUEST_PORTAL_CREATE_CMD msg;
|
|
msg.questPortalInfo = *m_pQuestPortalInfo;
|
|
msg.questPortalInfo.portalKey = m_PortalKey;
|
|
//party loop
|
|
pUser->SendPacket(&msg, sizeof(msg));
|
|
};
|
|
}
|
|
#ifdef _NA003129_QUEST_PORTAL_CONVENIENCE_EXTENTION
|
|
else
|
|
{
|
|
MSG_CG_ZONE_EX_QUEST_PORTAL_FIXEDPORTAL_STATEINFO_CMD msg_cmd;
|
|
msg_cmd.portal_key = m_PortalKey;
|
|
msg_cmd.open_state = msg_cmd.eOpenState_Created;
|
|
msg_cmd.portal_lifetime = this->m_pQuestPortalInfo->portalLifetime;
|
|
pUser->SendPacket(&msg_cmd, sizeof(msg_cmd));
|
|
};
|
|
#endif
|
|
}
|
|
|
|
VOID
|
|
MemberQueryResultOperator::PortalChange(User* pUser)
|
|
{
|
|
PortalUserInfo& portalInfo = pUser->GetPortalUserInfo();
|
|
PORTALKEY prevPortalKey = INVALID_PORTAL_KEY;
|
|
const PortalUserInfo::eState state =
|
|
portalInfo.TryChangeState(portalInfo.eCommand_ChangePortal, m_PortalKey, &prevPortalKey);
|
|
UserState userState = { pUser, state, prevPortalKey };
|
|
m_UserStateList.push_back(userState);
|
|
|
|
// current not used
|
|
}
|
|
|
|
VOID
|
|
MemberQueryResultOperator::PortalClose(User* pUser)
|
|
{
|
|
PortalUserInfo& portalInfo = pUser->GetPortalUserInfo();
|
|
PORTALKEY prevPortalKey = INVALID_PORTAL_KEY;
|
|
const PortalUserInfo::eState state =
|
|
portalInfo.TryChangeState(portalInfo.eCommand_ClosePortal, m_PortalKey, &prevPortalKey);
|
|
UserState userState = { pUser, state, prevPortalKey };
|
|
m_UserStateList.push_back(userState);
|
|
|
|
if(m_IsTempPortal)
|
|
{
|
|
MSG_CG_ZONE_EX_QUEST_PORTAL_CLOSE_CMD msg;
|
|
msg.portalKey = m_PortalKey;
|
|
pUser->SendPacket(&msg, sizeof(msg));
|
|
}
|
|
#ifdef _NA003129_QUEST_PORTAL_CONVENIENCE_EXTENTION
|
|
else
|
|
{
|
|
MSG_CG_ZONE_EX_QUEST_PORTAL_FIXEDPORTAL_STATEINFO_CMD msg_cmd;
|
|
msg_cmd.portal_key = m_PortalKey;
|
|
msg_cmd.open_state = msg_cmd.eOpenState_Closed;
|
|
msg_cmd.portal_lifetime = 0;
|
|
pUser->SendPacket(&msg_cmd, sizeof(msg_cmd));
|
|
}
|
|
#endif
|
|
}
|
|
|
|
VOID
|
|
MemberQueryResultOperator::PortalGetState(User* pUser)
|
|
{
|
|
PortalUserInfo& portalInfo = pUser->GetPortalUserInfo();
|
|
PORTALKEY prevPortalKey = INVALID_PORTAL_KEY;
|
|
const PortalUserInfo::eState state =
|
|
portalInfo.TryChangeState(portalInfo.eCommand_GetState, m_PortalKey, &prevPortalKey);
|
|
UserState userState = { pUser, state, prevPortalKey };
|
|
m_UserStateList.push_back(userState);
|
|
}
|
|
|
|
VOID
|
|
MemberQueryResultOperator::MigrateTowerOfCurse(User* pUser)
|
|
{
|
|
ZONEKEY zoneKey = ZONEKEY(pUser->GetZoneKey());
|
|
|
|
UserState userState = { pUser, zoneKey != 0, INVALID_PORTAL_KEY };
|
|
m_UserStateList.push_back(userState);
|
|
|
|
//pFromZone->LeaveUser( pUser, eSEND_SYN, m_pZone->GetType(), m_pZone->GetLinkedServerIndex() );
|
|
//pUser->BeginTransaction( (eBEHAVE_TRANSACTION)m_Param1 );
|
|
//pUser->SetTRRoomKey( m_pZone->GetKey() );
|
|
}
|
|
|