mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
Merge #5784
5784: Suppress more events while skipping in demos, reset specifics components before long skips in demo r=def- a=Robyt3 Closes #5779. ## Checklist - [X] Tested the change ingame - [ ] Provided screenshots if it is a visual change - [ ] Tested in combination with possibly related configuration options - [ ] Written a unit test (especially base/) or added coverage to integration test - [ ] Considered possible null pointers and out of bounds array indexing - [ ] Changed no physics that affect existing maps - [ ] Tested the change with [ASan+UBSan or valgrind's memcheck](https://github.com/ddnet/ddnet/#using-addresssanitizer--undefinedbehavioursanitizer-or-valgrinds-memcheck) (optional) Co-authored-by: Robert Müller <robytemueller@gmail.com>
This commit is contained in:
commit
3478146ea5
|
@ -564,6 +564,9 @@ void CChat::DisableMode()
|
||||||
|
|
||||||
void CChat::OnMessage(int MsgType, void *pRawMsg)
|
void CChat::OnMessage(int MsgType, void *pRawMsg)
|
||||||
{
|
{
|
||||||
|
if(m_pClient->m_SuppressEvents)
|
||||||
|
return;
|
||||||
|
|
||||||
if(MsgType == NETMSGTYPE_SV_CHAT)
|
if(MsgType == NETMSGTYPE_SV_CHAT)
|
||||||
{
|
{
|
||||||
CNetMsg_Sv_Chat *pMsg = (CNetMsg_Sv_Chat *)pRawMsg;
|
CNetMsg_Sv_Chat *pMsg = (CNetMsg_Sv_Chat *)pRawMsg;
|
||||||
|
|
|
@ -133,7 +133,6 @@ class CChat : public CComponent
|
||||||
|
|
||||||
bool LineShouldHighlight(const char *pLine, const char *pName);
|
bool LineShouldHighlight(const char *pLine, const char *pName);
|
||||||
void StoreSave(const char *pText);
|
void StoreSave(const char *pText);
|
||||||
void Reset();
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CChat();
|
CChat();
|
||||||
|
@ -162,6 +161,7 @@ public:
|
||||||
void OnRender() override;
|
void OnRender() override;
|
||||||
void RefindSkins();
|
void RefindSkins();
|
||||||
void OnPrepareLines();
|
void OnPrepareLines();
|
||||||
|
void Reset();
|
||||||
void OnRelease() override;
|
void OnRelease() override;
|
||||||
void OnMessage(int MsgType, void *pRawMsg) override;
|
void OnMessage(int MsgType, void *pRawMsg) override;
|
||||||
bool OnInput(IInput::CEvent Event) override;
|
bool OnInput(IInput::CEvent Event) override;
|
||||||
|
|
|
@ -100,6 +100,9 @@ void CKillMessages::CreateKillmessageNamesIfNotCreated(CKillMsg &Kill)
|
||||||
|
|
||||||
void CKillMessages::OnMessage(int MsgType, void *pRawMsg)
|
void CKillMessages::OnMessage(int MsgType, void *pRawMsg)
|
||||||
{
|
{
|
||||||
|
if(m_pClient->m_SuppressEvents)
|
||||||
|
return;
|
||||||
|
|
||||||
if(MsgType == NETMSGTYPE_SV_KILLMSG)
|
if(MsgType == NETMSGTYPE_SV_KILLMSG)
|
||||||
{
|
{
|
||||||
CNetMsg_Sv_KillMsg *pMsg = (CNetMsg_Sv_KillMsg *)pRawMsg;
|
CNetMsg_Sv_KillMsg *pMsg = (CNetMsg_Sv_KillMsg *)pRawMsg;
|
||||||
|
|
|
@ -83,6 +83,12 @@ void CMenus::HandleDemoSeeking(float PositionToSeek, float TimeToSeek)
|
||||||
{
|
{
|
||||||
if((PositionToSeek >= 0.0f && PositionToSeek <= 1.0f) || TimeToSeek != 0.0f)
|
if((PositionToSeek >= 0.0f && PositionToSeek <= 1.0f) || TimeToSeek != 0.0f)
|
||||||
{
|
{
|
||||||
|
m_pClient->m_Chat.Reset();
|
||||||
|
m_pClient->m_KillMessages.OnReset();
|
||||||
|
m_pClient->m_Particles.OnReset();
|
||||||
|
m_pClient->m_Sounds.OnReset();
|
||||||
|
m_pClient->m_Scoreboard.OnReset();
|
||||||
|
m_pClient->m_Statboard.OnReset();
|
||||||
m_pClient->m_SuppressEvents = true;
|
m_pClient->m_SuppressEvents = true;
|
||||||
if(TimeToSeek != 0.0f)
|
if(TimeToSeek != 0.0f)
|
||||||
DemoPlayer()->SeekTime(TimeToSeek);
|
DemoPlayer()->SeekTime(TimeToSeek);
|
||||||
|
|
|
@ -176,15 +176,15 @@ void CSounds::ClearQueue()
|
||||||
|
|
||||||
void CSounds::Enqueue(int Channel, int SetId)
|
void CSounds::Enqueue(int Channel, int SetId)
|
||||||
{
|
{
|
||||||
// add sound to the queue
|
if(m_pClient->m_SuppressEvents)
|
||||||
if(m_QueuePos < QUEUE_SIZE)
|
return;
|
||||||
{
|
if(m_QueuePos >= QUEUE_SIZE)
|
||||||
if(Channel == CHN_MUSIC || !g_Config.m_ClEditor)
|
return;
|
||||||
{
|
if(Channel != CHN_MUSIC && g_Config.m_ClEditor)
|
||||||
m_aQueue[m_QueuePos].m_Channel = Channel;
|
return;
|
||||||
m_aQueue[m_QueuePos++].m_SetId = SetId;
|
|
||||||
}
|
m_aQueue[m_QueuePos].m_Channel = Channel;
|
||||||
}
|
m_aQueue[m_QueuePos++].m_SetId = SetId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSounds::PlayAndRecord(int Channel, int SetId, float Vol, vec2 Pos)
|
void CSounds::PlayAndRecord(int Channel, int SetId, float Vol, vec2 Pos)
|
||||||
|
@ -198,6 +198,8 @@ void CSounds::PlayAndRecord(int Channel, int SetId, float Vol, vec2 Pos)
|
||||||
|
|
||||||
void CSounds::Play(int Channel, int SetId, float Vol)
|
void CSounds::Play(int Channel, int SetId, float Vol)
|
||||||
{
|
{
|
||||||
|
if(m_pClient->m_SuppressEvents)
|
||||||
|
return;
|
||||||
if(Channel == CHN_MUSIC && !g_Config.m_SndMusic)
|
if(Channel == CHN_MUSIC && !g_Config.m_SndMusic)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -214,6 +216,8 @@ void CSounds::Play(int Channel, int SetId, float Vol)
|
||||||
|
|
||||||
void CSounds::PlayAt(int Channel, int SetId, float Vol, vec2 Pos)
|
void CSounds::PlayAt(int Channel, int SetId, float Vol, vec2 Pos)
|
||||||
{
|
{
|
||||||
|
if(m_pClient->m_SuppressEvents)
|
||||||
|
return;
|
||||||
if(Channel == CHN_MUSIC && !g_Config.m_SndMusic)
|
if(Channel == CHN_MUSIC && !g_Config.m_SndMusic)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,9 @@ bool CStatboard::IsActive()
|
||||||
|
|
||||||
void CStatboard::OnMessage(int MsgType, void *pRawMsg)
|
void CStatboard::OnMessage(int MsgType, void *pRawMsg)
|
||||||
{
|
{
|
||||||
|
if(m_pClient->m_SuppressEvents)
|
||||||
|
return;
|
||||||
|
|
||||||
if(MsgType == NETMSGTYPE_SV_KILLMSG)
|
if(MsgType == NETMSGTYPE_SV_KILLMSG)
|
||||||
{
|
{
|
||||||
CNetMsg_Sv_KillMsg *pMsg = (CNetMsg_Sv_KillMsg *)pRawMsg;
|
CNetMsg_Sv_KillMsg *pMsg = (CNetMsg_Sv_KillMsg *)pRawMsg;
|
||||||
|
|
|
@ -1843,10 +1843,10 @@ void CGameClient::OnPredict()
|
||||||
m_NewPredictedTick = true;
|
m_NewPredictedTick = true;
|
||||||
vec2 Pos = pLocalChar->Core()->m_Pos;
|
vec2 Pos = pLocalChar->Core()->m_Pos;
|
||||||
int Events = pLocalChar->Core()->m_TriggeredEvents;
|
int Events = pLocalChar->Core()->m_TriggeredEvents;
|
||||||
if(g_Config.m_ClPredict)
|
if(g_Config.m_ClPredict && !m_SuppressEvents)
|
||||||
if(Events & COREEVENT_AIR_JUMP)
|
if(Events & COREEVENT_AIR_JUMP)
|
||||||
m_Effects.AirJump(Pos);
|
m_Effects.AirJump(Pos);
|
||||||
if(g_Config.m_SndGame)
|
if(g_Config.m_SndGame && !m_SuppressEvents)
|
||||||
{
|
{
|
||||||
if(Events & COREEVENT_GROUND_JUMP)
|
if(Events & COREEVENT_GROUND_JUMP)
|
||||||
m_Sounds.PlayAndRecord(CSounds::CHN_WORLD, SOUND_PLAYER_JUMP, 1.0f, Pos);
|
m_Sounds.PlayAndRecord(CSounds::CHN_WORLD, SOUND_PLAYER_JUMP, 1.0f, Pos);
|
||||||
|
@ -1863,7 +1863,7 @@ void CGameClient::OnPredict()
|
||||||
m_aLastNewPredictedTick[!Dummy] = Tick;
|
m_aLastNewPredictedTick[!Dummy] = Tick;
|
||||||
vec2 Pos = pDummyChar->Core()->m_Pos;
|
vec2 Pos = pDummyChar->Core()->m_Pos;
|
||||||
int Events = pDummyChar->Core()->m_TriggeredEvents;
|
int Events = pDummyChar->Core()->m_TriggeredEvents;
|
||||||
if(g_Config.m_ClPredict)
|
if(g_Config.m_ClPredict && !m_SuppressEvents)
|
||||||
if(Events & COREEVENT_AIR_JUMP)
|
if(Events & COREEVENT_AIR_JUMP)
|
||||||
m_Effects.AirJump(Pos);
|
m_Effects.AirJump(Pos);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue