mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
Merge pull request #1072 from ChillerDragon/Broadcasts
Add broadcast importance (fixes #669)
This commit is contained in:
commit
256845c824
|
@ -1221,7 +1221,7 @@ void CCharacter::HandleBroadcast()
|
|||
char aBuftime[64];
|
||||
int IntTime = (int)((float)(Server()->Tick() - m_StartTime) / ((float)Server()->TickSpeed()));
|
||||
str_format(aBuftime, sizeof(aBuftime), "%s%d:%s%d", ((IntTime/60) > 9)?"":"0", IntTime/60, ((IntTime%60) > 9)?"":"0", IntTime%60);
|
||||
GameServer()->SendBroadcast(aBuftime, m_pPlayer->GetCID());
|
||||
GameServer()->SendBroadcast(aBuftime, m_pPlayer->GetCID(), false);
|
||||
m_CpLastBroadcast = m_CpActive;
|
||||
m_LastBroadcast = Server()->Tick();
|
||||
}
|
||||
|
|
|
@ -398,11 +398,36 @@ void CGameContext::SendWeaponPickup(int ClientID, int Weapon)
|
|||
}
|
||||
|
||||
|
||||
void CGameContext::SendBroadcast(const char *pText, int ClientID)
|
||||
void CGameContext::SendBroadcast(const char *pText, int ClientID, bool IsImportant)
|
||||
{
|
||||
CNetMsg_Sv_Broadcast Msg;
|
||||
Msg.m_pMessage = pText;
|
||||
|
||||
if(ClientID == -1)
|
||||
{
|
||||
dbg_assert(IsImportant, "broadcast messages to all players must be important");
|
||||
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, ClientID);
|
||||
|
||||
for(int i = 0; i < MAX_CLIENTS; i++)
|
||||
{
|
||||
if(m_apPlayers[i])
|
||||
{
|
||||
m_apPlayers[i]->m_LastBroadcastImportance = true;
|
||||
m_apPlayers[i]->m_LastBroadcast = Server()->Tick();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(!m_apPlayers[ClientID])
|
||||
return;
|
||||
|
||||
if(!IsImportant && m_apPlayers[ClientID]->m_LastBroadcastImportance && m_apPlayers[ClientID]->m_LastBroadcast > Server()->Tick() - Server()->TickSpeed() * 10)
|
||||
return;
|
||||
|
||||
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, ClientID);
|
||||
m_apPlayers[ClientID]->m_LastBroadcast = Server()->Tick();
|
||||
m_apPlayers[ClientID]->m_LastBroadcastImportance = IsImportant;
|
||||
}
|
||||
|
||||
void CGameContext::StartVote(const char *pDesc, const char *pCommand, const char *pReason)
|
||||
|
|
|
@ -191,7 +191,7 @@ public:
|
|||
void SendChat(int ClientID, int Team, const char *pText, int SpamProtectionClientID = -1);
|
||||
void SendEmoticon(int ClientID, int Emoticon);
|
||||
void SendWeaponPickup(int ClientID, int Weapon);
|
||||
void SendBroadcast(const char *pText, int ClientID);
|
||||
void SendBroadcast(const char *pText, int ClientID, bool IsImportant = true);
|
||||
|
||||
void List(int ClientID, const char* filter);
|
||||
|
||||
|
|
|
@ -181,6 +181,8 @@ public:
|
|||
void AfkVoteTimer(CNetObj_PlayerInput *NewTarget);
|
||||
int64 m_LastPlaytime;
|
||||
int64 m_LastEyeEmote;
|
||||
int64 m_LastBroadcast;
|
||||
bool m_LastBroadcastImportance;
|
||||
int m_LastTarget_x;
|
||||
int m_LastTarget_y;
|
||||
CNetObj_PlayerInput m_LastTarget;
|
||||
|
|
Loading…
Reference in a new issue