📄 munpamanager.cpp
字号:
// MunpaManager.cpp: implementation of the CMunpaManager class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MunpaManager.h"
#include "Munpa.h"
#include "MapDBMsgParser.h"
#include "Player.h"
#include "UserTable.h"
#include "Network.h"
#include "..\[CC]Header\GameResourceManager.h"
#include "MHFile.h"
#include "FameManager.h"
#include "PackedData.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMunpaManager::CMunpaManager()
{
m_MunpaHashTable.Initialize(256);
m_ItemOptionList.Initialize(MAX_ITEM_OPTION_NUM*100);
}
CMunpaManager::~CMunpaManager()
{
void* pInfo;
m_MunpaHashTable.SetPositionHead();
while(pInfo = m_MunpaHashTable.GetData())
delete pInfo;
m_MunpaHashTable.RemoveAll();
ITEM_OPTION_INFO * pOInfo = NULL;
m_ItemOptionList.SetPositionHead();
while(pOInfo = m_ItemOptionList.GetData())
delete pOInfo;
m_ItemOptionList.RemoveAll();
}
void CMunpaManager::AddItemOption(ITEM_OPTION_INFO * pInfo)
{
if(m_ItemOptionList.GetData(pInfo->dwOptionIdx))
{
ASSERTMSG(0, "AddItemOption - Already Has Info");
return;
}
ITEM_OPTION_INFO * pNewInfo = new ITEM_OPTION_INFO;
memcpy(pNewInfo, pInfo, sizeof(ITEM_OPTION_INFO));
m_ItemOptionList.Add(pNewInfo, pNewInfo->dwOptionIdx);
}
void CMunpaManager::RemoveItemOption(DWORD dwOptionIdx)
{
ASSERT(m_ItemOptionList.GetData(dwOptionIdx));
ITEM_OPTION_INFO * pNewInfo = m_ItemOptionList.GetData(dwOptionIdx);
SAFE_DELETE( pNewInfo );
m_ItemOptionList.Remove(dwOptionIdx);
}
ITEM_OPTION_INFO * CMunpaManager::GetItemOption(DWORD dwOptionIdx)
{
return m_ItemOptionList.GetData(dwOptionIdx);
}
CMunpa* CMunpaManager::GetMunpa(DWORD MunpaIDx)
{
CMunpa* pMunpa = (CMunpa*)m_MunpaHashTable.GetData(MunpaIDx);
return pMunpa;
}
void CMunpaManager::RegistMunpa(MUNPALISTINFO_MAP* pMunpaInfo)
{
CMunpa* pMunpa = new CMunpa(pMunpaInfo);
ASSERT(m_MunpaHashTable.GetData(pMunpa->GetMunpaID()) == NULL);
m_MunpaHashTable.Add(pMunpa,pMunpaInfo->MunpaID);
}
void CMunpaManager::RegistMunpaItem(DWORD MunpaID, ITEMBASE* munpaitem)
{
CMunpa* pMunpa = GetMunpa(MunpaID);
ASSERT(pMunpa);
if( pMunpa )
pMunpa->InitMunpaItem(munpaitem);
}
void CMunpaManager::LoadMunpaListSyn(SEND_MUNPALIST_SYN* pInfo)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pInfo->dwObjectID);
if(!pPlayer)
return;
MAPTYPE MapNum = (MAPTYPE)GAMERESRCMNGR->GetLoadMapNum();
MunpaLoadSyn(pInfo->dwObjectID, MapNum, pInfo->GotoPage, MAX_MUNPA_LIST, pInfo->OrderType); //db
}
void CMunpaManager::CreateMunpa(MUNPA_CREATE_INFO* pmsg)
{
return;
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
{
ASSERT(0);
return;
}
if(pPlayer->GetMunpaIdx() != 0)
{
ASSERTMSG(0, "巩颇啊 捞固 乐嚼聪促");
return;
}
MunpaCreate(pmsg, pPlayer->GetObjectName()); //db
}
void CMunpaManager::CreateMunpaResult(MUNPALISTINFO_MAP* pMunpaInfo)
{
CMunpa* pMunpa = new CMunpa(pMunpaInfo);
ASSERT(m_MunpaHashTable.GetData(pMunpa->GetMunpaID()) == NULL);
m_MunpaHashTable.Add(pMunpa,pMunpaInfo->MunpaID);
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pMunpaInfo->MasterID);
if(!pPlayer)
return;
pPlayer->SetMunpaIdx(pMunpaInfo->MunpaID);
pPlayer->SetMunpaMemberRank(MUNPA_MASTER);
pPlayer->SetMunpaName(pMunpaInfo->MunpaName);
SEND_MUNPA_CREATE_INFO send_msg;
send_msg.Category = MP_MUNPA;
send_msg.Protocol = MP_MUNPA_CREATE_ACK;
send_msg.dwObjectID = pMunpaInfo->MasterID;
send_msg.dwData = pMunpaInfo->MunpaID;
SafeStrCpy(send_msg.MunpaName, pMunpaInfo->MunpaName, MAX_MUNPA_NAME+1);
pPlayer->SendMsg(&send_msg,sizeof(send_msg));
}
void CMunpaManager::BreakUpMunpa(MSG_DWORD* pmsg)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pmsg->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(pmsg->dwData);
ASSERT(pMunpa);
*/ if(pPlayer->GetMunpaMemberRank() != MUNPA_MASTER)
{
ASSERTMSG(0, "巩颇厘捞 酒凑聪促.");
return;
}
MunpaBreakUp(pmsg->dwObjectID, pmsg->dwData); //db
}
void CMunpaManager::BreakUpMunpaResult(DWORD MunpaID)
{
CMunpa* pMunpa = m_MunpaHashTable.GetData(MunpaID);
if(pMunpa)
{
m_MunpaHashTable.Remove(MunpaID);
delete pMunpa;
}
}
void CMunpaManager::ChangeRank(DWORD FromPlayerID, DWORD ToPlayerID, int Position, DWORD MunpaID)
{
CPlayer* pFromPlayer = (CPlayer*)g_pUserTable->FindUser(FromPlayerID);
if(pFromPlayer == NULL)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!(pMunpa->IsMaster(pFromPlayer)))
{
ASSERT(0);
return;
}
*/ if(Position == MUNPA_MASTER)
{
ASSERTMSG(0, "巩林肺 瘤困 函版窍妨窃");
return;
}
CPlayer* pTargetPlayer = (CPlayer*)g_pUserTable->FindUser(ToPlayerID);
if(pTargetPlayer) //捞 甘俊 乐绰 敲饭捞绢扼档 八荤甫 秦具瘤.
{
if(pTargetPlayer->GetMunpaMemberRank() == Position)
return;
}
MunpaChangeMemberRank(FromPlayerID, ToPlayerID, Position, MunpaID); //DB
}
void CMunpaManager::BanMember(DWORD MasterID, DWORD MunpaID, DWORD TargetID, BOOL bLast)
{
CPlayer* pMaster = (CPlayer*)g_pUserTable->FindUser(MasterID);
if(!pMaster)
{
ASSERT(0);
return;
}
/* CMunpa* pMunpa = GetMunpa(MunpaID);
ASSERT(pMunpa);
if(!pMunpa->IsMaster(pMaster))
{
ASSERTMSG(0,"巩颇狼 规厘捞 酒囱单夸!");
return;
}
*/
MunpaBanMember(MasterID, TargetID, MunpaID, bLast); //DB
}
void CMunpaManager::SecedeMunpa(DWORD PlayerID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(pPlayer == NULL)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
//NACK 贸府
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_SECEDE_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
*/ if(pPlayer->GetMunpaMemberRank() == MUNPA_MASTER)
{
ASSERT(0);
return;
}
MunpaSecede(PlayerID, pPlayer->GetMunpaIdx());
}
void CMunpaManager::AcceptMember(DWORD MasterID, DWORD SendMunpaID, DWORD TargetID,BOOL bLast)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(MasterID);
if(pPlayer == NULL)
return;
/* CMunpa* pMunpa = GetMunpa(SendMunpaID);
ASSERT(pMunpa);
if(!pMunpa->IsMaster(pPlayer))
{
ASSERT(0);
return;
}
*/
MunpaAcceptMember(MasterID, TargetID, SendMunpaID, bLast); //db
}
void CMunpaManager::DenyMember(DWORD MasterID, DWORD SendMunpaID, DWORD TargetID,BOOL bLast)
{
CPlayer* pMaster = (CPlayer*)g_pUserTable->FindUser(MasterID);
if(pMaster == NULL)
return;
/* DWORD MunpaID = pMaster->GetMunpaIdx();
CMunpa* pMunpa = GetMunpa(MunpaID);
ASSERT(pMunpa);
if(pMunpa->IsMaster(pMaster) == FALSE)
{
ASSERT(0);
return;
}
*/
MunpaDenyMember(MasterID, TargetID, SendMunpaID, bLast); //db
}
void CMunpaManager::ModifyIntroMsg(MUNPA_MODIFY_INTRO* pInfo)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(pInfo->dwObjectID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = (CMunpa*)GetMunpa(pInfo->MunpaID);
if(!pMunpa)
{
ASSERTMSG(0, "巩颇 沥焊啊 绝绰单 家俺臂 荐沥 夸没阑 窍看嚼聪促.");
return;
}
if(!pMunpa->IsMaster(pPlayer))
{
//nack贸府
return;
}
*/
MunpaModifyIntro(pInfo->dwObjectID, pInfo->MunpaID, pInfo->MunpaIntro); //db
}
void CMunpaManager::JoinMember(DWORD PlayerID, DWORD TargetMunpaID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(pPlayer == NULL)
return;
DWORD MunpaID = pPlayer->GetMunpaIdx();
DWORD Rank = pPlayer->GetMunpaMemberRank();
if(( Rank != MUNPA_NOTMEMBER) || (GetMunpa(MunpaID)))
{
ASSERT(0);
return;
}
if(GetMunpa(TargetMunpaID) == NULL) // 泅犁 甘俊 粮犁窍绰 巩颇俊父 啊涝脚没且荐 乐促.
{
ASSERT(0);
return;
}
MunpaJoinMember(PlayerID, TargetMunpaID); //db
}
void CMunpaManager::JoinMemberCancel(DWORD PlayerID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(pPlayer == NULL)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
return;
*/
MunpaJoinMemberCancel(PlayerID, pPlayer->GetMunpaIdx()); //db
}
void CMunpaManager::MunpaHomeInfoSyn(DWORD PlayerID, DWORD MunpaID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_MUNPAHOME_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
*/
MunpaHomeInfo(PlayerID, MunpaID); //db
}
void CMunpaManager::JoinMembersInfo(DWORD PlayerID, DWORD MunpaID, DWORD GotoPage)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_JOINMEMBERS_INFO_NACK;
msg.dwObjectID = PlayerID;
pPlayer->SendMsg(&msg,sizeof(msg));
return;
}
*/
MunpaJoinMembersInfo(PlayerID, MunpaID, GotoPage); //DB
}
void CMunpaManager::MunpaBoardInfoSyn(DWORD PlayerID, DWORD MunpaID)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
/* CMunpa* pMunpa = GetMunpa(MunpaID);
if(!pMunpa)
{
MSGBASE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_BOARD_INFO_NACK;
pPlayer->SendMsg(&msg, sizeof(msg));
return;
}
*/
MunpaBoardInfo(PlayerID, MunpaID); //db
}
void CMunpaManager::NotifyChangeRank(DWORD PlayerID, DWORD MunpaID, BYTE Rank, FAMETYPE Fame)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
{
return;
}
if(pPlayer->GetMunpaIdx() != MunpaID) //皋矫瘤 罐扁 傈俊 郴啊 呕硼 脚没阑 沁阑 荐 乐促.
{
return;
}
else
{
DoChangeRank(pPlayer, Rank);
}
FAMEMGR->SetPlayerFame(pPlayer, Fame);
}
void CMunpaManager::DoChangeRank(CPlayer* pTarget, BYTE Rank)
{
pTarget->SetMunpaMemberRank(Rank);
MSG_BYTE msg;
msg.Category = MP_MUNPA;
msg.Protocol = MP_MUNPA_CHANGERANK_TO_TARGET_ACK;
msg.bData = Rank;
pTarget->SendMsg(&msg, sizeof(msg));
}
void CMunpaManager::NotifyBanMember(DWORD PlayerID, DWORD MunpaID, FAMETYPE Fame)
{
CPlayer* pPlayer = (CPlayer*)g_pUserTable->FindUser(PlayerID);
if(!pPlayer)
return;
if(pPlayer->GetMunpaIdx() != MunpaID)
{
ASSERTMSG(0, "notifybanmember:呕硼矫虐妨绊 焊聪 巩颇 酒捞叼啊 促福匙夸. ");
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -