Files
2022-10-26 12:25:11 +08:00

203 lines
6.2 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "uiQuestMan.h"
#include "Application.h"
#include "globalfunc.h"
#include "interfacemanager.h"
#include "uiHelpMan/uiHelpMan.h"
#include "ObjectManager.h"
#include "PacketRequestManager.h"
#include "uiGuideSystemMan/uiGuideSystemMan.h"
#include "TotalGuideParser.h"
//------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::InitPKBooleans()
{
this->m_vPKBool.clear();
for (int i=ePKBOOL_QUEST_BASE; i<ePKBOOL_QUEST_MAX; ++i)
{
uicPacketControl packetControl;
this->m_vPKBool.push_back(packetControl);
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_ACCEPT_SYN(QCODE QuestCode, BOOL IsItemAccept, POSTYPE Atpos)
{
if ( this->SafePKBool(ePKBOOL_QUEST_ACCEPT) )
{
SetPKBool(ePKBOOL_QUEST_ACCEPT);
MSG_CG_QUEST_ACCEPT_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_ACCEPT] = SendPacket.m_QuestCode = QuestCode;
SendPacket.m_byIsItemAccept = IsItemAccept;
SendPacket.m_QuestItemPos = Atpos;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
#ifdef _SCJ_REMOVE_ANNOUNCE_WINDOW
#else
uiHelpMan* helpMan = static_cast<uiHelpMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_HELP));
if (helpMan)
{
helpMan->ShowQuestHelp((int)QuestCode,eHK_QUEST);
}
#endif //_SCJ_REMOVE_ANNOUNCE_WINDOW
uiGuideSystemMan* guide_manager =
static_cast<uiGuideSystemMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_GUIDE_SYSTEM));
if (guide_manager)
{
guide_manager->CheckHelpMessage(TotalGuideNotice::kQuest, TotalGuideNotice::kAcceptQuest,QuestCode);
}
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_ACCEPT_ACK SendPacketAck;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck));
}
}
}
//------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_COMPLETE_SYN(QCODE QuestCode)
{
// if ( SafePKBool(ePKBOOL_QUEST_COMPLETE) )
if (SetPendingQuestCompletePacket(QuestCode) == false)
return;
{
SetPKBool(ePKBOOL_QUEST_COMPLETE);
MSG_CG_QUEST_COMPLETE_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_COMPLETE] = SendPacket.m_QuestCode = QuestCode;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
{
MSG_CG_QUEST_COMPLETE_SYN* syn = new MSG_CG_QUEST_COMPLETE_SYN;
MSG_CG_QUEST_COMPLETE_ACK* ack = new MSG_CG_QUEST_COMPLETE_ACK;
MSG_CG_QUEST_COMPLETE_NAK* nak = new MSG_CG_QUEST_COMPLETE_NAK;
ack->m_QuestCode = syn->m_QuestCode = SendPacket.m_QuestCode;
PacketRequestManager::Instance()->PushPacket(syn,
ack,
nak,
sizeof(MSG_CG_QUEST_COMPLETE_SYN),
PACKET_WAITING_MILLISECOND,
true);
}
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_COMPLETE_ACK SendPacketAck;
SendPacketAck.m_QuestCode = QuestCode;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck));
}
}
}
//-------------------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_REWARD_SYN(QCODE QuestCode, BYTE bSelectedItem)
{
if ( this->SafePKBool(ePKBOOL_QUEST_REWARD) )
{
SetPKBool(ePKBOOL_QUEST_REWARD);
MSG_CG_QUEST_REWARD_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_REWARD] = SendPacket.m_QuestCode = QuestCode;
SendPacket.m_SelectedItem = bSelectedItem;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_REWARD_ACK SendPacketAck;
// 󸮺κР°í½É
SendPacketAck.m_Money = 100;
SendPacketAck.m_i64Exp = 0;
SendPacketAck.m_ItemInfo.m_InvenCount = 0;
SendPacketAck.m_ItemInfo.m_TmpInvenCount = 0;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, SendPacketAck.GetSize());
}
}
}
//-------------------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_FAILED_SYN(QCODE QuestCode)
{
if ( this->SafePKBool(ePKBOOL_QUEST_FAILED) )
{
SetPKBool(ePKBOOL_QUEST_FAILED);
MSG_CG_QUEST_FAILED_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_FAILED] = SendPacket.m_QuestCode = QuestCode;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_FAILED_ACK SendPacketAck;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck));
}
}
}
//-------------------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_ABANDON_SYN(QCODE QuestCode,BOOL bForce)
{
if ( this->SafePKBool(ePKBOOL_QUEST_ABANDON) )
{
SetPKBool(ePKBOOL_QUEST_ABANDON);
MSG_CG_QUEST_ABANDON_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_ABANDON] = SendPacket.m_QuestCode = QuestCode;
SendPacket.m_Force = bForce;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_ABANDON_ACK SendPacketAck;
SendPacket.m_Force = bForce;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck));
}
}
}
//-------------------------------------------------------------------------------------------
/**
*/
void
uiQuestMan::NET_SEND_CG_QUEST_EVENT_AREA_SYN(QCODE QuestCode, DWORD AreaID)
{
if ( SafePKBool(ePKBOOL_QUEST_EVENT_AREA) )
{
SetPKBool(ePKBOOL_QUEST_EVENT_AREA);
MSG_CG_QUEST_EVENT_AREA_SYN SendPacket;
m_PendingQuestCode[ePKBOOL_QUEST_EVENT_AREA] = SendPacket.m_QuestCode = QuestCode;
m_PendingArea = SendPacket.m_AreaID = AreaID;
GlobalFunc::SendPacketToGameServer(&SendPacket, sizeof(SendPacket));
if (!GENERALPARAM->IsNet())
{
MSG_CG_QUEST_EVENT_AREA_ACK SendPacketAck;
g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck));
}
}
}