mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
Merge #5153
5153: keep input if chat is closed r=heinrich5991 a=C0D3D3V fixes #4653 ## 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 if it works standalone, system.c especially - [x] Considered possible null pointers and out of bounds array indexing - [?] Changed no physics that affect existing maps - [x] 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: c0d3d3v <c0d3d3v@mag-keinen-spam.de>
This commit is contained in:
commit
0fbfcad242
|
@ -255,14 +255,7 @@ int CControls::SnapInput(int *pData)
|
||||||
else if(m_pClient->m_Menus.IsActive())
|
else if(m_pClient->m_Menus.IsActive())
|
||||||
m_InputData[g_Config.m_ClDummy].m_PlayerFlags = PLAYERFLAG_IN_MENU;
|
m_InputData[g_Config.m_ClDummy].m_PlayerFlags = PLAYERFLAG_IN_MENU;
|
||||||
else
|
else
|
||||||
{
|
|
||||||
if(m_InputData[g_Config.m_ClDummy].m_PlayerFlags == PLAYERFLAG_CHATTING)
|
|
||||||
{
|
|
||||||
if(GameClient()->m_GameInfo.m_BugDDRaceInput)
|
|
||||||
ResetInput(g_Config.m_ClDummy);
|
|
||||||
}
|
|
||||||
m_InputData[g_Config.m_ClDummy].m_PlayerFlags = PLAYERFLAG_PLAYING;
|
m_InputData[g_Config.m_ClDummy].m_PlayerFlags = PLAYERFLAG_PLAYING;
|
||||||
}
|
|
||||||
|
|
||||||
if(m_pClient->m_Scoreboard.Active())
|
if(m_pClient->m_Scoreboard.Active())
|
||||||
m_InputData[g_Config.m_ClDummy].m_PlayerFlags |= PLAYERFLAG_SCOREBOARD;
|
m_InputData[g_Config.m_ClDummy].m_PlayerFlags |= PLAYERFLAG_SCOREBOARD;
|
||||||
|
|
|
@ -2253,6 +2253,7 @@ void CGameClient::UpdatePrediction()
|
||||||
m_GameWorld.m_WorldConfig.m_UseTuneZones = m_GameInfo.m_PredictDDRaceTiles;
|
m_GameWorld.m_WorldConfig.m_UseTuneZones = m_GameInfo.m_PredictDDRaceTiles;
|
||||||
m_GameWorld.m_WorldConfig.m_PredictFreeze = g_Config.m_ClPredictFreeze;
|
m_GameWorld.m_WorldConfig.m_PredictFreeze = g_Config.m_ClPredictFreeze;
|
||||||
m_GameWorld.m_WorldConfig.m_PredictWeapons = AntiPingWeapons();
|
m_GameWorld.m_WorldConfig.m_PredictWeapons = AntiPingWeapons();
|
||||||
|
m_GameWorld.m_WorldConfig.m_BugDDRaceInput = m_GameInfo.m_BugDDRaceInput;
|
||||||
|
|
||||||
// always update default tune zone, even without character
|
// always update default tune zone, even without character
|
||||||
if(!m_GameWorld.m_WorldConfig.m_UseTuneZones)
|
if(!m_GameWorld.m_WorldConfig.m_UseTuneZones)
|
||||||
|
|
|
@ -494,8 +494,12 @@ void CCharacter::GiveNinja()
|
||||||
void CCharacter::OnPredictedInput(CNetObj_PlayerInput *pNewInput)
|
void CCharacter::OnPredictedInput(CNetObj_PlayerInput *pNewInput)
|
||||||
{
|
{
|
||||||
// skip the input if chat is active
|
// skip the input if chat is active
|
||||||
if(pNewInput->m_PlayerFlags & PLAYERFLAG_CHATTING)
|
if(GameWorld()->m_WorldConfig.m_BugDDRaceInput && pNewInput->m_PlayerFlags & PLAYERFLAG_CHATTING)
|
||||||
|
{
|
||||||
|
// save reseted input
|
||||||
|
mem_copy(&m_SavedInput, &m_Input, sizeof(m_SavedInput));
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// copy new input
|
// copy new input
|
||||||
mem_copy(&m_Input, pNewInput, sizeof(m_Input));
|
mem_copy(&m_Input, pNewInput, sizeof(m_Input));
|
||||||
|
@ -511,11 +515,10 @@ void CCharacter::OnPredictedInput(CNetObj_PlayerInput *pNewInput)
|
||||||
void CCharacter::OnDirectInput(CNetObj_PlayerInput *pNewInput)
|
void CCharacter::OnDirectInput(CNetObj_PlayerInput *pNewInput)
|
||||||
{
|
{
|
||||||
// skip the input if chat is active
|
// skip the input if chat is active
|
||||||
if(pNewInput->m_PlayerFlags & PLAYERFLAG_CHATTING)
|
if(GameWorld()->m_WorldConfig.m_BugDDRaceInput && pNewInput->m_PlayerFlags & PLAYERFLAG_CHATTING)
|
||||||
{
|
{
|
||||||
// reset input
|
// reset input
|
||||||
ResetInput();
|
ResetInput();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,7 @@ public:
|
||||||
bool m_PredictDDRace;
|
bool m_PredictDDRace;
|
||||||
bool m_IsSolo;
|
bool m_IsSolo;
|
||||||
bool m_UseTuneZones;
|
bool m_UseTuneZones;
|
||||||
|
bool m_BugDDRaceInput;
|
||||||
} m_WorldConfig;
|
} m_WorldConfig;
|
||||||
|
|
||||||
bool m_IsValidCopy;
|
bool m_IsValidCopy;
|
||||||
|
|
|
@ -538,10 +538,6 @@ void CPlayer::OnDirectInput(CNetObj_PlayerInput *NewInput)
|
||||||
if(m_PlayerFlags & PLAYERFLAG_CHATTING)
|
if(m_PlayerFlags & PLAYERFLAG_CHATTING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// reset input
|
|
||||||
if(m_pCharacter)
|
|
||||||
m_pCharacter->ResetInput();
|
|
||||||
|
|
||||||
m_PlayerFlags = NewInput->m_PlayerFlags;
|
m_PlayerFlags = NewInput->m_PlayerFlags;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue