📄 herosyndicate.cpp
字号:
//------------------------------------------------------------------
// HeroSyndicate.cpp
//------------------------------------------------------------------
#include "Hero.h"
#include "AllMsg.h"
#include "GameMsg.h"
#include "GamePlayerSet.h"
#include "GameDataSet.h"
//------------------------------------------------------------------
void CHero::SetLastSyndicateApplyID(OBJID idApply)
{
m_idLastSyndicateApply = idApply;
}
//------------------------------------------------------------------
void CHero::SyndicateApplyJoin(OBJID idTarget)
{
if(this->GetSydicateID() != ID_NONE)
{
OBJID idLeaveSyndicate = 100065;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idLeaveSyndicate));
return;
}
CPlayer* pPlayer = g_objPlayerSet.GetPlayer(idTarget);
{
if(!pPlayer)
{
OBJID idErrorTarget = 100066;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idErrorTarget));
return;
}
}
if(pPlayer->GetSydicateID() == ID_NONE)
{
char szMsg[128];
const OBJID idCanNotJion = 100067;
sprintf(szMsg, g_objGameDataSet.GetStr(idCanNotJion), pPlayer->GetName());
g_objGameMsg.AddMsg(szMsg);
return;
}
/* if(pPlayer->GetSyndicateRank() != RANK_LEADER)
{
char szMsg[128];
const OBJID idCanNotRecruit = 100068;
sprintf(szMsg, g_objGameDataSet.GetStr(idCanNotRecruit), pPlayer->GetName());
g_objGameMsg.AddMsg(szMsg);
return;
}*/
CMsgSyndicate msg;
if(msg.Create(APPLY_JOIN, idTarget))
{
msg.Send();
OBJID idApplicationSend = 100069;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idApplicationSend));
}
}
//------------------------------------------------------------------
void CHero::SynDicateAcceptJoin()
{
CMsgSyndicate msg;
if(msg.Create(INVITE_JOIN, m_idLastSyndicateApply))
msg.Send();
}
//------------------------------------------------------------------
void CHero::SyndicateApplyInvite(OBJID idTarget)
{
if(this->GetSydicateID() == ID_NONE)
{
OBJID idPleaseJoinSyndicateFirst = 100070;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idPleaseJoinSyndicateFirst));
return;
}
/* if(this->GetSyndicateRank() != RANK_LEADER)
{
OBJID idCanNotRecurit = 100071;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idCanNotRecurit));
return;
}*/
CPlayer* pPlayer = g_objPlayerSet.GetPlayer(idTarget);
{
if(!pPlayer)
{
OBJID idErrorTarget = 100072;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idErrorTarget));
return;
}
}
if(pPlayer->GetSydicateID() != ID_NONE)
{
OBJID idTargetHaveSyndicate = 100073;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idTargetHaveSyndicate));
return;
}
CMsgSyndicate msg;
if(msg.Create(INVITE_JOIN, idTarget))
msg.Send();
}
//------------------------------------------------------------------
void CHero::SyndicateAcceptInvite()
{
CMsgSyndicate msg;
if(msg.Create(APPLY_JOIN, m_idLastSyndicateApply))
msg.Send();
}
//------------------------------------------------------------------
void CHero::SetLastSyndicateID(OBJID idSynDicate)
{
m_idLastSyndicate = idSynDicate;
}
//------------------------------------------------------------------
OBJID CHero::GetLastSyndicateID()
{
return m_idLastSyndicate;
}
//------------------------------------------------------------------
void CHero::LeaveSyndicate()
{
if(this->GetSydicateID() == ID_NONE)
return;
CONST MINPROFFER_QUITSYN = 200; //贡献度大于200才能退出
if(this->GetSyndicateProffer() < MINPROFFER_QUITSYN && this->GetSyndicateRank() > 10) //检查贡献度 -- 预备团员不用检查
return;
CMsgSyndicate msg;
if(msg.Create(LEAVE_SYN, g_objHero.GetID()))
msg.Send();
}
//------------------------------------------------------------------
OBJID CHero::IsSubSynLeader()
{
if (this->GetSydicateID() != ID_NONE)
{
int nAmount = g_objPlayerSet.GetSubSyndicateAmount(this->GetSydicateID());
if (nAmount == 0)
return 0;
else
{
for(int i=0;i<nAmount;i++)
{
OBJID idSubSyn = g_objPlayerSet.GetSubSyndicateId(this->GetSydicateID(),i);
if (strcmp(g_objPlayerSet.GetSyndicateLeaderName(idSubSyn),this->GetName()) == 0 )
return idSubSyn;
}
}
}
return 0;
}
//------------------------------------------------------------------
OBJID CHero::IsSubSubSynLeader()
{
if (this->GetSydicateID() != ID_NONE)
{
int nAmount = g_objPlayerSet.GetSubSyndicateAmount(this->GetSydicateID());
if (nAmount == 0)
return 0;
else
{
for(int i=0;i<nAmount;i++)
{
OBJID idSubSyn = g_objPlayerSet.GetSubSyndicateId(this->GetSydicateID(),i);
int nSubAmount = g_objPlayerSet.GetSubSyndicateAmount(idSubSyn);
for(int j=0;j<nSubAmount;j++)
{
OBJID idSubSubSyn = g_objPlayerSet.GetSubSyndicateId(idSubSyn,j);
if (strcmp(g_objPlayerSet.GetSyndicateLeaderName(idSubSubSyn),this->GetName()) == 0 )
return idSubSubSyn;
}
}
}
}
return 0;
}
//------------------------------------------------------------------
void CHero::SynContribute(DWORD dwMoney)
{
if(this->GetSydicateID() == ID_NONE)
{
OBJID idHaveNoSynDicate = 100074;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idHaveNoSynDicate));
return;
}
if(this->GetMoney() < dwMoney)
{
OBJID idMoneyNotEnough = 100075;
g_objGameMsg.AddMsg(g_objGameDataSet.GetStr(idMoneyNotEnough));
return;
}
CMsgSyndicate msg;
if(msg.Create(DONATE_MONEY, dwMoney))
msg.Send();
}
//------------------------------------------------------------------
void CHero::SetSyndicateAnnounce(char* pszWord)
{
if(pszWord)
{
strcpy(m_szSyndicateAnnounce, pszWord);
::PostCmd(CMD_FLASH_SYNDICATE_WORD);
}
}
//------------------------------------------------------------------
char* CHero::GetSyndicateAnnounce()
{
return m_szSyndicateAnnounce;
}
//------------------------------------------------------------------
void CHero::SetSyndicateAnnounceTime(DWORD dwTime)
{
if (dwTime)
{
int nYear = dwTime / 10000;
int nMonth = ( dwTime / 100 ) % 100;
int nDay = dwTime % 100 ;
sprintf( m_szSyndicateAnnounceTime, "%d-%d-%d",nYear, nMonth, nDay) ;
}
}
//------------------------------------------------------------------
char* CHero::GetSyndicateAnnounceTime()
{
return m_szSyndicateAnnounceTime;
}
//------------------------------------------------------------------
void CHero::QuerySynicateInfo()
{
CMsgSyndicate msg;
if(msg.Create(QUERY_SYNATTR, this->GetID()))
msg.Send();
}
//------------------------------------------------------------------
void CHero::QueryOtherSynicateInfo(char* szSynName)
{
if (strlen(szSynName) <= 0)
return;
else
{
OBJID idSyn = g_objPlayerSet.GetSyndicateIdByName(szSynName);
if (idSyn)
{
CMsgAction msg;
if (msg.Create(this->GetID(),0,0,0,actionQuerySynInfo,idSyn))
msg.Send();
}
}
}
//------------------------------------------------------------------
int CHero::GetSynWarReportAmount ()
{
return m_dequeSynWarReport.size();
}
//------------------------------------------------------------------
char* CHero::GetSynWarReportLine(int nIndex)
{
int nAmount = m_dequeSynWarReport.size();
if(nIndex >= nAmount && nIndex < 0)
return NULL;
return m_dequeSynWarReport[nIndex];
}
//------------------------------------------------------------------
void CHero::ClearSynWarReport()
{
int nAmount = m_dequeSynWarReport.size();
for(int i = 0; i < nAmount; i ++)
{
char* pszChar = m_dequeSynWarReport[i];
delete[] pszChar;
}
m_dequeSynWarReport.clear();
}
//------------------------------------------------------------------
void CHero::AddSynWarReport(char* pszLine)
{
if(!pszLine)
return;
if(strlen(pszLine) >= 512)
return;
char* pszTemp = new char[512];
strcpy(pszTemp, pszLine);
m_dequeSynWarReport.push_back(pszTemp);
m_dwTimeSynWarReportLastFlash = ::TimeGet();
}
//------------------------------------------------------------------
void CHero::ShowSynWarReport()
{
const DWORD dwDelay = 60 * 1000;
if(::TimeGet() - m_dwTimeSynWarReportLastFlash > dwDelay)
return;
CMyPos posShow = {_SCR_WIDTH-300, 5};
CMySize sizeFont;
CMyBitmap::GetFontSize(sizeFont);
int nAmount = this->GetSynWarReportAmount();
for(int i = 0; i < nAmount; i ++)
{
char* pszLine = this->GetSynWarReportLine(i);
if(pszLine)
{
posShow.y += sizeFont.iHeight +5;
CMyBitmap::ShowString(posShow.x, posShow.y, _COLOR_YELLOW, pszLine);
}
}
}
//------------------------------------------------------------------
void CHero::SendSyndicateAnnounce(char* pszStr)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -