fix solo prediction

This commit is contained in:
Ryozuki 2019-04-12 16:29:13 +02:00
parent 7e43120b6e
commit 3556830b9a
No known key found for this signature in database
GPG key ID: 848FCC08E5B89681
4 changed files with 10 additions and 5 deletions

View file

@ -935,8 +935,7 @@ void CGameClient::OnTimeScore(int AllowTimeScore, bool Dummy)
void CGameClient::OnSoloPlayer(int ClientID, bool solo)
{
m_aClients[ClientID].m_Solo = solo;
World
m_aClients[ClientID].m_Predicted
m_aClients[ClientID].m_Predicted.m_Solo = solo;
}
void CGameClient::ProcessEvents()

View file

@ -101,6 +101,7 @@ void CCharacterCore::Reset()
m_TriggeredEvents = 0;
m_Hook = true;
m_Collision = true;
m_Solo = false;
}
void CCharacterCore::Tick(bool UseInput, bool IsClient)
@ -294,7 +295,7 @@ void CCharacterCore::Tick(bool UseInput, bool IsClient)
for(int i = 0; i < MAX_CLIENTS; i++)
{
CCharacterCore *pCharCore = m_pWorld->m_apCharacters[i];
if(!pCharCore || pCharCore == this || !m_pTeams->CanCollide(i, m_Id))
if(!pCharCore || pCharCore == this || !m_pTeams->CanCollide(i, m_Id) || pCharCore->m_Solo)
continue;
vec2 ClosestPoint = closest_point_on_line(m_HookPos, NewPos, pCharCore->m_Pos);
@ -408,7 +409,7 @@ void CCharacterCore::Tick(bool UseInput, bool IsClient)
//player *p = (player*)ent;
//if(pCharCore == this) // || !(p->flags&FLAG_ALIVE)
if(pCharCore == this || (m_Id != -1 && !m_pTeams->CanCollide(m_Id, i)))
if(pCharCore == this || (m_Id != -1 && !m_pTeams->CanCollide(m_Id, i)) || pCharCore->m_Solo)
continue; // make sure that we don't nudge our self
// handle player <-> player collision
@ -621,7 +622,10 @@ void CCharacterCore::Move()
for(int p = 0; p < MAX_CLIENTS; p++)
{
CCharacterCore *pCharCore = m_pWorld->m_apCharacters[p];
if(!pCharCore || pCharCore == this || !pCharCore->m_Collision || (m_Id != -1 && !m_pTeams->CanCollide(m_Id, p)))
if(!pCharCore || pCharCore == this
|| !pCharCore->m_Collision
|| (m_Id != -1 && !m_pTeams->CanCollide(m_Id, p))
|| pCharCore->m_Solo)
continue;
float D = distance(Pos, pCharCore->m_Pos);
if(D < 28.0f && D > 0.0f)

View file

@ -230,6 +230,7 @@ public:
vec2 m_LastVel;
int m_Colliding;
bool m_LeftWall;
bool m_Solo;
void LimitForce(vec2 *Force);
void ApplyForce(vec2 Force);

View file

@ -106,6 +106,7 @@ void CCharacter::SetWeapon(int W)
void CCharacter::SetSolo(bool Solo)
{
m_IsSolo = Solo;
GameServer()->m_World.m_Core.m_apCharacters[m_pPlayer->GetCID()]->m_Solo = Solo;
Teams()->m_Core.SetSolo(m_pPlayer->GetCID(), Solo);
if(Solo)