mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-19 09:12:19 +00:00
Compare commits
4 commits
5e255494f5
...
0520fdcade
Author | SHA1 | Date | |
---|---|---|---|
0520fdcade | |||
8d431f8feb | |||
80e2de13da | |||
28c7b01b96 |
|
@ -163,7 +163,7 @@ public:
|
|||
|
||||
// dummy
|
||||
virtual void DummyDisconnect(const char *pReason) = 0;
|
||||
virtual void DummyConnect() = 0;
|
||||
virtual void DummyConnect(bool Force = false) = 0;
|
||||
virtual bool DummyConnected() const = 0;
|
||||
virtual bool DummyConnecting() const = 0;
|
||||
virtual bool DummyConnectingDelayed() const = 0;
|
||||
|
|
|
@ -707,7 +707,7 @@ bool CClient::DummyConnectingDelayed() const
|
|||
return !DummyConnected() && !DummyConnecting() && m_LastDummyConnectTime > 0.0f && m_LastDummyConnectTime + 5.0f > GlobalTime();
|
||||
}
|
||||
|
||||
void CClient::DummyConnect()
|
||||
void CClient::DummyConnect(bool Force)
|
||||
{
|
||||
if(m_aNetClient[CONN_MAIN].State() != NETSTATE_ONLINE)
|
||||
{
|
||||
|
@ -725,7 +725,7 @@ void CClient::DummyConnect()
|
|||
log_info("client", "Dummy is already connected/connecting.");
|
||||
return;
|
||||
}
|
||||
if(DummyConnectingDelayed())
|
||||
if(!Force && DummyConnectingDelayed())
|
||||
{
|
||||
log_info("client", "Wait before connecting dummy again.");
|
||||
return;
|
||||
|
@ -1649,9 +1649,24 @@ void CClient::ProcessServerPacket(CNetChunk *pPacket, int Conn, bool Dummy)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if(Conn == CONN_MAIN && (pPacket->m_Flags & NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_MAP_RELOAD)
|
||||
{
|
||||
if(m_DummyConnected)
|
||||
{
|
||||
m_DummyReconnectOnLoad = true;
|
||||
m_DummySwapOnReconnect = g_Config.m_ClDummy == 1 ? false : true;
|
||||
}
|
||||
else
|
||||
m_DummySwapOnReconnect = false;
|
||||
}
|
||||
else if(Conn == CONN_MAIN && (pPacket->m_Flags & NET_CHUNKFLAG_VITAL) != 0 && Msg == NETMSG_CON_READY)
|
||||
{
|
||||
GameClient()->OnConnected();
|
||||
if(m_DummyReconnectOnLoad)
|
||||
{
|
||||
m_DummyReconnectOnLoad = false;
|
||||
DummyConnect(true);
|
||||
}
|
||||
}
|
||||
else if(Conn == CONN_DUMMY && Msg == NETMSG_CON_READY)
|
||||
{
|
||||
|
@ -2746,6 +2761,16 @@ void CClient::Update()
|
|||
}
|
||||
}
|
||||
|
||||
if(m_DummySwapOnReconnect && g_Config.m_ClDummy == 1)
|
||||
{
|
||||
m_DummySwapOnReconnect = false;
|
||||
g_Config.m_ClDummy = 0;
|
||||
}
|
||||
else if(!m_DummyConnected && m_DummySwapOnReconnect)
|
||||
{
|
||||
m_DummySwapOnReconnect = false;
|
||||
}
|
||||
|
||||
m_LastDummy = (bool)g_Config.m_ClDummy;
|
||||
}
|
||||
|
||||
|
|
|
@ -182,6 +182,8 @@ class CClient : public IClient, public CDemoPlayer::IListener
|
|||
bool m_DummyConnecting = false;
|
||||
bool m_DummyConnected = false;
|
||||
float m_LastDummyConnectTime = 0.0f;
|
||||
bool m_DummyReconnectOnLoad = false;
|
||||
bool m_DummySwapOnReconnect = false;
|
||||
|
||||
// graphs
|
||||
CGraph m_InputtimeMarginGraph;
|
||||
|
@ -319,7 +321,7 @@ public:
|
|||
void Disconnect() override;
|
||||
|
||||
void DummyDisconnect(const char *pReason) override;
|
||||
void DummyConnect() override;
|
||||
void DummyConnect(bool Force = false) override;
|
||||
bool DummyConnected() const override;
|
||||
bool DummyConnecting() const override;
|
||||
bool DummyConnectingDelayed() const override;
|
||||
|
|
|
@ -3510,6 +3510,8 @@ void CServer::ConStopRecord(IConsole::IResult *pResult, void *pUser)
|
|||
void CServer::ConMapReload(IConsole::IResult *pResult, void *pUser)
|
||||
{
|
||||
((CServer *)pUser)->m_MapReload = true;
|
||||
CMsgPacker Msg(NETMSG_MAP_RELOAD, true);
|
||||
((CServer *)pUser)->SendMsg(&Msg, MSGFLAG_VITAL | MSGFLAG_FLUSH, -1);
|
||||
}
|
||||
|
||||
void CServer::ConLogout(IConsole::IResult *pResult, void *pUser)
|
||||
|
|
|
@ -73,6 +73,7 @@ MACRO_CONFIG_INT(ClShowfps, cl_showfps, 0, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE,
|
|||
MACRO_CONFIG_INT(ClShowpred, cl_showpred, 0, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Show ingame prediction time in milliseconds")
|
||||
MACRO_CONFIG_INT(ClEyeWheel, cl_eye_wheel, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Show eye wheel along together with emotes")
|
||||
MACRO_CONFIG_INT(ClEyeDuration, cl_eye_duration, 999999, 1, 999999, CFGFLAG_CLIENT | CFGFLAG_SAVE, "How long the eyes emotes last")
|
||||
MACRO_CONFIG_INT(ClFreezeStars, cl_freeze_stars, 0, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Show old star particles for frozen tees")
|
||||
|
||||
MACRO_CONFIG_INT(ClAirjumpindicator, cl_airjumpindicator, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Show the air jump indicator")
|
||||
MACRO_CONFIG_INT(ClThreadsoundloading, cl_threadsoundloading, 1, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Load sound files threaded")
|
||||
|
|
|
@ -35,3 +35,4 @@ UUID(NETMSG_CHECKSUM_ERROR, "checksum-error@ddnet.tw")
|
|||
UUID(NETMSG_REDIRECT, "redirect@ddnet.org")
|
||||
UUID(NETMSG_RCON_CMD_GROUP_START, "rcon-cmd-group-start@ddnet.org")
|
||||
UUID(NETMSG_RCON_CMD_GROUP_END, "rcon-cmd-group-end@ddnet.org")
|
||||
UUID(NETMSG_MAP_RELOAD, "map-reload@ddnet.org")
|
||||
|
|
|
@ -2071,6 +2071,32 @@ void CGameClient::OnNewSnapshot()
|
|||
m_Effects.AirJump(Pos, Alpha);
|
||||
}
|
||||
|
||||
if(g_Config.m_ClFreezeStars && !m_SuppressEvents)
|
||||
{
|
||||
for(auto &Character : m_Snap.m_aCharacters)
|
||||
{
|
||||
if(Character.m_Active && Character.m_HasExtendedData && Character.m_PrevExtendedData)
|
||||
{
|
||||
int FreezeTimeNow = Character.m_ExtendedData.m_FreezeEnd - Client()->GameTick(g_Config.m_ClDummy);
|
||||
int FreezeTimePrev = Character.m_PrevExtendedData->m_FreezeEnd - Client()->PrevGameTick(g_Config.m_ClDummy);
|
||||
vec2 Pos = vec2(Character.m_Cur.m_X, Character.m_Cur.m_Y);
|
||||
int StarsNow = (FreezeTimeNow + 1) / Client()->GameTickSpeed();
|
||||
int StarsPrev = (FreezeTimePrev + 1) / Client()->GameTickSpeed();
|
||||
if(StarsNow < StarsPrev || (StarsPrev == 0 && StarsNow > 0))
|
||||
{
|
||||
int Amount = StarsNow + 1;
|
||||
float Mid = 3 * pi / 2;
|
||||
float Min = Mid - pi / 3;
|
||||
float Max = Mid + pi / 3;
|
||||
for(int j = 0; j < Amount; j++)
|
||||
{
|
||||
float Angle = mix(Min, Max, (j + 1) / (float)(Amount + 2));
|
||||
m_Effects.DamageIndicator(Pos, direction(Angle));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(m_Snap.m_LocalClientId != m_PrevLocalId)
|
||||
m_PredictedDummyId = m_PrevLocalId;
|
||||
m_PrevLocalId = m_Snap.m_LocalClientId;
|
||||
|
|
|
@ -3237,6 +3237,8 @@ void CGameContext::ConHotReload(IConsole::IResult *pResult, void *pUserData)
|
|||
pSelf->m_apSavedTeams[pSelf->m_aTeamMapping[i]]->Save(pSelf, pSelf->m_aTeamMapping[i], true, true);
|
||||
}
|
||||
pSelf->Server()->ReloadMap();
|
||||
CMsgPacker Msg(NETMSG_MAP_RELOAD, true);
|
||||
pSelf->Server()->SendMsg(&Msg, MSGFLAG_VITAL | MSGFLAG_FLUSH, -1);
|
||||
}
|
||||
|
||||
void CGameContext::ConAddVote(IConsole::IResult *pResult, void *pUserData)
|
||||
|
|
Loading…
Reference in a new issue