📄 gameplayerset.cpp
字号:
pFocusPlayer = pPlayer;
else
{
if (g_objHero.GetFriend(pFocusPlayer->GetID())
|| g_objHero.GetTeamMemberInfoByID(pFocusPlayer->GetID())
|| g_objHero.GetSydicateID() == pFocusPlayer->GetSydicateID())
{
pFocusPlayer = pPlayer;
}
else
{
if (g_objHero.GetFriend(pFocusPlayer->GetID())
|| g_objHero.GetTeamMemberInfoByID(pFocusPlayer->GetID())
|| g_objHero.GetSydicateID() == pFocusPlayer->GetSydicateID())
{
}
else
pFocusPlayer = pPlayer;
}
}
}
}
else if (dwFlag&PLAYER_PLAYERPRI)
{
if (!pFocusPlayer->IsNpc())
{
if (!pPlayer->IsNpc())
pFocusPlayer = pPlayer;
}
else
{
pFocusPlayer = pPlayer;
}
}
else
{
pFocusPlayer = pPlayer;
}
}
}
else
pFocusPlayer = pPlayer;
}
}
return pFocusPlayer;
}
//////////////////////////////////////////////////////////////////////
void CGamePlayerSet::ShowX(void)
{
if (CPlayer::IsValidPt(m_pFocusPlayer))
{
m_pFocusPlayer->ShowInfo();
}
}
//////////////////////////////////////////////////////////////////////
void CGamePlayerSet::ProcessManager(int nHeroX, int nHeroY)
{
return;
int iPlayerAmount = this->GetPlayerAmount();
for(int i=iPlayerAmount-1; i>=0; i--)
{
CPlayer* pPlayer =m_dequePlayer[i];
if (CPlayer::IsValidPt(pPlayer) && _ROLE_CALL_PET != pPlayer->GetRoleType())
{
if (nHeroX > 0 && nHeroY > 0)
{
// del player by distance from hero
int nPosX=0, nPosY=0;
CMyPos posHero, posPlayer;
posHero.x = nHeroX;
posHero.y = nHeroY;
pPlayer->GetPos(posPlayer);
// int nDelta = __max(abs(posHero.x - posPlayer.x), abs(posHero.y - posPlayer.y));
// ::DebugMsg("player des %s %d", pPlayer->GetName(), nDelta);
if(g_objGameMap.Outof9Block(posHero, posPlayer))
{
if (m_pFocusPlayer == pPlayer)
m_pFocusPlayer = NULL;
g_objGameMap.DelInteractiveObj(pPlayer);
// ::DebugMsg("delete player %s", pPlayer->GetName());
m_dequePlayer.erase(m_dequePlayer.begin()+i);
SAFE_DELETE(pPlayer);
}
}
}
}
}
//////////////////////////////////////////////////////////////////////
void CGamePlayerSet::Process(int nHeroX, int nHeroY)
{
m_pFocusPlayer =NULL; // reset
DWORD dwDistance = 999;
int iPlayerAmount = this->GetPlayerAmount();
for(int i=iPlayerAmount-1; i>=0; i--)
{
CPlayer* pPlayer =m_dequePlayer[i];
if (CPlayer::IsValidPt(pPlayer))
{
if (!pPlayer->IsDead() && pPlayer->IsMouseFocus())
{
if(pPlayer->IsHypersensitive())
{
m_pFocusPlayer = pPlayer;
break;
}
if (m_pFocusPlayer) // got one already
{
CMyPos posFocusPlayer;
m_pFocusPlayer->GetPos(posFocusPlayer);
CMyPos posPlayer;
pPlayer->GetPos(posPlayer);
if (posPlayer.x+posPlayer.y >= posFocusPlayer.x+posFocusPlayer.y)
m_pFocusPlayer = pPlayer;
}
else
m_pFocusPlayer = pPlayer;
}
}
else
{
if (m_pFocusPlayer == pPlayer)
m_pFocusPlayer = NULL;
g_objGameMap.DelInteractiveObj(pPlayer);
m_dequePlayer.erase(m_dequePlayer.begin()+i);
}
}
m_objFaceEffectWhite.Process();
m_objFaceEffectBlack.Process();
}
//--------------------------------------------------------------
BOOL CGamePlayerSet::AddSyndicate(OBJID idSyndaicate,OBJID idTopSyndaicate, char* pszName,char* pszLeaderName,DWORD dwStatus)
{
if (idSyndaicate == ID_NONE)
return FALSE;
int nAmount = m_setSyndicateInfo.size();
for(int i=0;i<nAmount;i++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
return FALSE;
}
const OBJID idStrNone = 100021;
InfoSyndicate* pInfoSyndicate = new InfoSyndicate;
pInfoSyndicate->idSyndicate = idSyndaicate;
pInfoSyndicate->idTopSyndicate = idTopSyndaicate;
strcpy(pInfoSyndicate->szSyndicateName,pszName);
strcpy(pInfoSyndicate->szSyndicateLeaderName,pszLeaderName);
pInfoSyndicate->dwStatus = dwStatus;
m_setSyndicateInfo.push_back(pInfoSyndicate);
return TRUE;
}
char* CGamePlayerSet::GetSyndicateLeaderName(OBJID idSyndaicate)
{
// seek ...
const OBJID idStrNone = 100021;
InfoSyndicate infoNoSyndicate = {ID_NONE,ID_NONE, "NONE","NONE",SYNDICATE_NORMAL};
strcpy(infoNoSyndicate.szSyndicateLeaderName, g_objGameDataSet.GetStr(idStrNone));
if(idSyndaicate == ID_NONE)
return infoNoSyndicate.szSyndicateLeaderName;
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
return pInfo->szSyndicateLeaderName;
}
return "";
}
//--------------------------------------------------------------
char* CGamePlayerSet::GetSyndicateName(OBJID idSyndaicate)
{
// seek ...
const OBJID idStrNone = 100021;
InfoSyndicate infoNoSyndicate = {ID_NONE,ID_NONE, "NONE","NONE",SYNDICATE_NORMAL};
strcpy(infoNoSyndicate.szSyndicateName, g_objGameDataSet.GetStr(idStrNone));
if(idSyndaicate == ID_NONE)
return infoNoSyndicate.szSyndicateName;
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
return pInfo->szSyndicateName;
}
// query ...
CMsgSyndicate msg;
if(msg.Create(QUERY_SYN_NAME, idSyndaicate))
msg.Send();
// insert a virtual record...
InfoSyndicate* pInfo = new InfoSyndicate;
MYASSERT(pInfo);
pInfo->idSyndicate = idSyndaicate;
pInfo->idTopSyndicate = idSyndaicate;
strcpy(pInfo->szSyndicateName, "");
strcpy(pInfo->szSyndicateLeaderName, "");
pInfo->dwStatus = SYNDICATE_NORMAL;
m_setSyndicateInfo.push_back(pInfo);
return pInfo->szSyndicateName;
}
//--------------------------------------------------------------
void CGamePlayerSet::SetSyndicateName(OBJID idSyndaicate, char* pszName, char* pszLeaderName)
{
if(!pszName || !pszLeaderName)
return;
// seek ...
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
{
strcpy(pInfo->szSyndicateName, pszName);
strcpy(pInfo->szSyndicateLeaderName, pszLeaderName);
return;
}
}
// server error ...
// skip ...
return;
}
//--------------------------------------------------------------
void CGamePlayerSet::SetSyndicateStatus(OBJID idSyndaicate, DWORD dwStatus)
{
CGamePlayerSet::GetSyndicateName(idSyndaicate);
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
{
pInfo->dwStatus = dwStatus;
::PostCmd(CMD_FLASH_SYNALLY);
return;
}
}
}
//--------------------------------------------------------------
void CGamePlayerSet::ClearAllSyndicateStatus()
{
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo)
{
pInfo->dwStatus = SYNDICATE_NORMAL;
}
}
}
//--------------------------------------------------------------
OBJID CGamePlayerSet::GetSyndicateIdByName(char* pszSynName)
{
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && strcmp(pInfo->szSyndicateName,pszSynName) == 0)
{
return pInfo->idSyndicate;
}
}
return ID_NONE;
}
//--------------------------------------------------------------
int CGamePlayerSet::GetSubSyndicateAmount(OBJID idSyndicate)
{
int nAmount = m_setSyndicateInfo.size();
int nSubAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idTopSyndicate == idSyndicate
&& (pInfo->dwStatus == SYNDICATE_SUB || pInfo->dwStatus == SYNDICATE_SUBSUB) )
{
nSubAmount++;
}
}
return nSubAmount;
}
//--------------------------------------------------------------
DWORD CGamePlayerSet::GetSubSyndicateId(OBJID idSyndicate,int nIndex)
{
int nAmount = m_setSyndicateInfo.size();
int nSubAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idTopSyndicate == idSyndicate
&& (pInfo->dwStatus == SYNDICATE_SUB || pInfo->dwStatus == SYNDICATE_SUBSUB) )
{
if (nSubAmount == nIndex)
return pInfo->idSyndicate;
nSubAmount++;
}
}
return ID_NONE;
}
//--------------------------------------------------------------
DWORD CGamePlayerSet::GetSyndicateStatus(OBJID idSyndaicate)
{
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
{
return pInfo->dwStatus;
}
}
return SYNDICATE_NORMAL;
}
//--------------------------------------------------------------
DWORD CGamePlayerSet::GetAllySyndicateAmount()
{
int nAmount = m_setSyndicateInfo.size();
int nAllySyndicateAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo->dwStatus == SYNDICATE_ALLY)
{
nAllySyndicateAmount ++;
}
}
return nAllySyndicateAmount;
}
//--------------------------------------------------------------
char* CGamePlayerSet::GetAllySyndicateNameByIndex(int nIndex)
{
int nAmount = m_setSyndicateInfo.size();
int nAllySyndicateAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo->dwStatus == SYNDICATE_ALLY)
{
if(nAllySyndicateAmount == nIndex)
return pInfo->szSyndicateName;
nAllySyndicateAmount ++;
}
}
return NULL;
}
//--------------------------------------------------------------
DWORD CGamePlayerSet::GetAntagonizeSyndicateAmount()
{
int nAmount = m_setSyndicateInfo.size();
int nAntagonizeSyndicateAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo->dwStatus == SYNDICATE_ANTAGONIZE)
{
nAntagonizeSyndicateAmount ++;
}
}
return nAntagonizeSyndicateAmount;
}
//--------------------------------------------------------------
char* CGamePlayerSet::GetAntagonizeNameByIndex(int nIndex)
{
int nAmount = m_setSyndicateInfo.size();
int nAntagonizeSyndicateAmount = 0;
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo->dwStatus == SYNDICATE_ANTAGONIZE)
{
if(nAntagonizeSyndicateAmount == nIndex)
return pInfo->szSyndicateName;
nAntagonizeSyndicateAmount ++;
}
}
return NULL;
}
//--------------------------------------------------------------
void CGamePlayerSet::UpdateSyndicateName(OBJID idSyndaicate)
{
int nAmount = m_setSyndicateInfo.size();
for(int i = 0; i < nAmount; i ++)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if(pInfo && pInfo->idSyndicate == idSyndaicate)
SAFE_DELETE(pInfo);
m_setSyndicateInfo.erase(m_setSyndicateInfo.begin()+i);
return;
}
}
//--------------------------------------------------------------
void CGamePlayerSet::SetWhiteSynId(OBJID idWhiteSyn)
{
m_idWhiteSyn = idWhiteSyn;
m_objFaceEffectWhite.Clear();
m_objFaceEffectWhite.Add("White_Frame");
}
//--------------------------------------------------------------
OBJID CGamePlayerSet::GetWhiteSynId()
{
return m_idWhiteSyn;
}
//--------------------------------------------------------------
void CGamePlayerSet::SetBlackSynId(OBJID idBlackSyn)
{
m_idBlackSyn = idBlackSyn;
m_objFaceEffectBlack.Clear();
m_objFaceEffectBlack.Add("Black_Frame");
}
//--------------------------------------------------------------
OBJID CGamePlayerSet::GetBlackSynId()
{
return m_idBlackSyn;
}
//--------------------------------------------------------------
void CGamePlayerSet::DestroySyndicate(OBJID idSyndicate)
{
// process hero ...
if(g_objHero.GetSydicateID() == idSyndicate)
{
g_objHero.SetSyndicateAnnounce("");
g_objHero.SetSyndicateFund(0);
g_objHero.SetSyndicateLeaderName("");
g_objHero.SetSyndicatePopulation(0);
g_objHero.SetSyndicateProffer(0);
g_objHero.SetSyndicateRank(RANK_NONE);
g_objHero.SetSyndicateID(ID_NONE);
}
// process playerset ...
int nAmount = this->GetPlayerAmount();
for(int i = 0; i < nAmount; i ++)
{
CPlayer* pPlayer = this->GetPlayerByIndex(i);
if(pPlayer && pPlayer->GetSydicateID() == idSyndicate)
{
pPlayer->SetSyndicateID(ID_NONE);
pPlayer->SetSyndicateFund(0);
pPlayer->SetSyndicateLeaderName("");
pPlayer->SetSyndicatePopulation(0);
pPlayer->SetSyndicateProffer(0);
pPlayer->SetSyndicateRank(ID_NONE);
}
}
nAmount = m_setSyndicateInfo.size();
for(i =nAmount-1 ;i>=0;i--)
{
InfoSyndicate* pInfo = m_setSyndicateInfo[i];
if (pInfo && pInfo->idSyndicate == idSyndicate)
{
SAFE_DELETE(pInfo);
m_setSyndicateInfo.erase(m_setSyndicateInfo.begin() + i);
}
}
::PostCmd(CMD_FLASH_SYNALLY);
}
//--------------------------------------------------------------
void CGamePlayerSet::SetMantle(OBJID idSyndicate, DWORD dwMantle)
{
int nAmount = this->GetPlayerAmount();
for(int i = 0; i < nAmount; i ++)
{
CPlayer* pPlayer = this->GetPlayerByIndex(i);
if(pPlayer && pPlayer->GetSydicateID() == idSyndicate)
{
pPlayer->SetMantle(dwMantle);
}
}
if(g_objHero.GetSydicateID() == idSyndicate)
g_objHero.SetMantle(dwMantle);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -