mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
server/character: Use CEntity::Collision() instead of GameServer() one
Rationalize: make prediction and server code closer to each other.
This commit is contained in:
parent
f934882e51
commit
f057dd33a2
|
@ -65,7 +65,7 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos)
|
||||||
Antibot()->OnSpawn(m_pPlayer->GetCID());
|
Antibot()->OnSpawn(m_pPlayer->GetCID());
|
||||||
|
|
||||||
m_Core.Reset();
|
m_Core.Reset();
|
||||||
m_Core.Init(&GameServer()->m_World.m_Core, GameServer()->Collision());
|
m_Core.Init(&GameServer()->m_World.m_Core, Collision());
|
||||||
m_Core.m_ActiveWeapon = WEAPON_GUN;
|
m_Core.m_ActiveWeapon = WEAPON_GUN;
|
||||||
m_Core.m_Pos = m_Pos;
|
m_Core.m_Pos = m_Pos;
|
||||||
m_Core.m_Id = m_pPlayer->GetCID();
|
m_Core.m_Id = m_pPlayer->GetCID();
|
||||||
|
@ -82,7 +82,7 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos)
|
||||||
|
|
||||||
DDRaceInit();
|
DDRaceInit();
|
||||||
|
|
||||||
m_TuneZone = GameServer()->Collision()->IsTune(GameServer()->Collision()->GetMapIndex(Pos));
|
m_TuneZone = Collision()->IsTune(Collision()->GetMapIndex(Pos));
|
||||||
m_TuneZoneOld = -1; // no zone leave msg on spawn
|
m_TuneZoneOld = -1; // no zone leave msg on spawn
|
||||||
m_NeededFaketuning = 0; // reset fake tunings on respawn and send the client
|
m_NeededFaketuning = 0; // reset fake tunings on respawn and send the client
|
||||||
SendZoneMsgs(); // we want a entermessage also on spawn
|
SendZoneMsgs(); // we want a entermessage also on spawn
|
||||||
|
@ -136,12 +136,12 @@ void CCharacter::SetLiveFrozen(bool Active)
|
||||||
|
|
||||||
bool CCharacter::IsGrounded()
|
bool CCharacter::IsGrounded()
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->CheckPoint(m_Pos.x + GetProximityRadius() / 2, m_Pos.y + GetProximityRadius() / 2 + 5))
|
if(Collision()->CheckPoint(m_Pos.x + GetProximityRadius() / 2, m_Pos.y + GetProximityRadius() / 2 + 5))
|
||||||
return true;
|
return true;
|
||||||
if(GameServer()->Collision()->CheckPoint(m_Pos.x - GetProximityRadius() / 2, m_Pos.y + GetProximityRadius() / 2 + 5))
|
if(Collision()->CheckPoint(m_Pos.x - GetProximityRadius() / 2, m_Pos.y + GetProximityRadius() / 2 + 5))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
int MoveRestrictionsBelow = GameServer()->Collision()->GetMoveRestrictions(m_Pos + vec2(0, GetProximityRadius() / 2 + 4), 0.0f);
|
int MoveRestrictionsBelow = Collision()->GetMoveRestrictions(m_Pos + vec2(0, GetProximityRadius() / 2 + 4), 0.0f);
|
||||||
return (MoveRestrictionsBelow & CANTMOVE_DOWN) != 0;
|
return (MoveRestrictionsBelow & CANTMOVE_DOWN) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ void CCharacter::HandleNinja()
|
||||||
// Set velocity
|
// Set velocity
|
||||||
m_Core.m_Vel = m_Core.m_Ninja.m_ActivationDir * g_pData->m_Weapons.m_Ninja.m_Velocity;
|
m_Core.m_Vel = m_Core.m_Ninja.m_ActivationDir * g_pData->m_Weapons.m_Ninja.m_Velocity;
|
||||||
vec2 OldPos = m_Pos;
|
vec2 OldPos = m_Pos;
|
||||||
GameServer()->Collision()->MoveBox(&m_Core.m_Pos, &m_Core.m_Vel, vec2(GetProximityRadius(), GetProximityRadius()), 0.f);
|
Collision()->MoveBox(&m_Core.m_Pos, &m_Core.m_Vel, vec2(GetProximityRadius(), GetProximityRadius()), 0.f);
|
||||||
|
|
||||||
// reset velocity so the client doesn't predict stuff
|
// reset velocity so the client doesn't predict stuff
|
||||||
m_Core.m_Vel = vec2(0.f, 0.f);
|
m_Core.m_Vel = vec2(0.f, 0.f);
|
||||||
|
@ -424,7 +424,7 @@ void CCharacter::FireWeapon()
|
||||||
{
|
{
|
||||||
CCharacter *pTarget = apEnts[i];
|
CCharacter *pTarget = apEnts[i];
|
||||||
|
|
||||||
//if ((pTarget == this) || GameServer()->Collision()->IntersectLine(ProjStartPos, pTarget->m_Pos, NULL, NULL))
|
//if ((pTarget == this) || Collision()->IntersectLine(ProjStartPos, pTarget->m_Pos, NULL, NULL))
|
||||||
if((pTarget == this || (pTarget->IsAlive() && !CanCollide(pTarget->GetPlayer()->GetCID()))))
|
if((pTarget == this || (pTarget->IsAlive() && !CanCollide(pTarget->GetPlayer()->GetCID()))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -766,7 +766,7 @@ void CCharacter::TickDefered()
|
||||||
// advance the dummy
|
// advance the dummy
|
||||||
{
|
{
|
||||||
CWorldCore TempWorld;
|
CWorldCore TempWorld;
|
||||||
m_ReckoningCore.Init(&TempWorld, GameServer()->Collision(), &Teams()->m_Core, m_pTeleOuts);
|
m_ReckoningCore.Init(&TempWorld, Collision(), &Teams()->m_Core, m_pTeleOuts);
|
||||||
m_ReckoningCore.m_Id = m_pPlayer->GetCID();
|
m_ReckoningCore.m_Id = m_pPlayer->GetCID();
|
||||||
m_ReckoningCore.Tick(false);
|
m_ReckoningCore.Tick(false);
|
||||||
m_ReckoningCore.Move();
|
m_ReckoningCore.Move();
|
||||||
|
@ -776,13 +776,13 @@ void CCharacter::TickDefered()
|
||||||
//lastsentcore
|
//lastsentcore
|
||||||
vec2 StartPos = m_Core.m_Pos;
|
vec2 StartPos = m_Core.m_Pos;
|
||||||
vec2 StartVel = m_Core.m_Vel;
|
vec2 StartVel = m_Core.m_Vel;
|
||||||
bool StuckBefore = GameServer()->Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
bool StuckBefore = Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
||||||
|
|
||||||
m_Core.m_Id = m_pPlayer->GetCID();
|
m_Core.m_Id = m_pPlayer->GetCID();
|
||||||
m_Core.Move();
|
m_Core.Move();
|
||||||
bool StuckAfterMove = GameServer()->Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
bool StuckAfterMove = Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
||||||
m_Core.Quantize();
|
m_Core.Quantize();
|
||||||
bool StuckAfterQuant = GameServer()->Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
bool StuckAfterQuant = Collision()->TestBox(m_Core.m_Pos, vec2(28.0f, 28.0f));
|
||||||
m_Pos = m_Core.m_Pos;
|
m_Pos = m_Core.m_Pos;
|
||||||
|
|
||||||
if(!StuckBefore && (StuckAfterMove || StuckAfterQuant))
|
if(!StuckBefore && (StuckAfterMove || StuckAfterQuant))
|
||||||
|
@ -1358,14 +1358,14 @@ void CCharacter::HandleBroadcast()
|
||||||
void CCharacter::HandleSkippableTiles(int Index)
|
void CCharacter::HandleSkippableTiles(int Index)
|
||||||
{
|
{
|
||||||
// handle death-tiles and leaving gamelayer
|
// handle death-tiles and leaving gamelayer
|
||||||
if((GameServer()->Collision()->GetCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
if((Collision()->GetCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetFCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetFCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetFCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetFCollisionAt(m_Pos.x + GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetFCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
Collision()->GetFCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y - GetProximityRadius() / 3.f) == TILE_DEATH ||
|
||||||
GameServer()->Collision()->GetFCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH) &&
|
Collision()->GetFCollisionAt(m_Pos.x - GetProximityRadius() / 3.f, m_Pos.y + GetProximityRadius() / 3.f) == TILE_DEATH) &&
|
||||||
!m_Super && !(Team() && Teams()->TeeFinished(m_pPlayer->GetCID())))
|
!m_Super && !(Team() && Teams()->TeeFinished(m_pPlayer->GetCID())))
|
||||||
{
|
{
|
||||||
Die(m_pPlayer->GetCID(), WEAPON_WORLD);
|
Die(m_pPlayer->GetCID(), WEAPON_WORLD);
|
||||||
|
@ -1382,12 +1382,12 @@ void CCharacter::HandleSkippableTiles(int Index)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// handle speedup tiles
|
// handle speedup tiles
|
||||||
if(GameServer()->Collision()->IsSpeedup(Index))
|
if(Collision()->IsSpeedup(Index))
|
||||||
{
|
{
|
||||||
vec2 Direction, TempVel = m_Core.m_Vel;
|
vec2 Direction, TempVel = m_Core.m_Vel;
|
||||||
int Force, MaxSpeed = 0;
|
int Force, MaxSpeed = 0;
|
||||||
float TeeAngle, SpeederAngle, DiffAngle, SpeedLeft, TeeSpeed;
|
float TeeAngle, SpeederAngle, DiffAngle, SpeedLeft, TeeSpeed;
|
||||||
GameServer()->Collision()->GetSpeedup(Index, &Direction, &Force, &MaxSpeed);
|
Collision()->GetSpeedup(Index, &Direction, &Force, &MaxSpeed);
|
||||||
if(Force == 255 && MaxSpeed)
|
if(Force == 255 && MaxSpeed)
|
||||||
{
|
{
|
||||||
m_Core.m_Vel = Direction * (MaxSpeed / 5);
|
m_Core.m_Vel = Direction * (MaxSpeed / 5);
|
||||||
|
@ -1444,17 +1444,17 @@ void CCharacter::HandleSkippableTiles(int Index)
|
||||||
bool CCharacter::IsSwitchActiveCb(int Number, void *pUser)
|
bool CCharacter::IsSwitchActiveCb(int Number, void *pUser)
|
||||||
{
|
{
|
||||||
CCharacter *pThis = (CCharacter *)pUser;
|
CCharacter *pThis = (CCharacter *)pUser;
|
||||||
CCollision *pCollision = pThis->GameServer()->Collision();
|
CCollision *pCollision = pThis->Collision();
|
||||||
return pCollision->m_pSwitchers && pThis->Team() != TEAM_SUPER && pCollision->m_pSwitchers[Number].m_Status[pThis->Team()];
|
return pCollision->m_pSwitchers && pThis->Team() != TEAM_SUPER && pCollision->m_pSwitchers[Number].m_Status[pThis->Team()];
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCharacter::HandleTiles(int Index)
|
void CCharacter::HandleTiles(int Index)
|
||||||
{
|
{
|
||||||
int MapIndex = Index;
|
int MapIndex = Index;
|
||||||
//int PureMapIndex = GameServer()->Collision()->GetPureMapIndex(m_Pos);
|
//int PureMapIndex = Collision()->GetPureMapIndex(m_Pos);
|
||||||
m_TileIndex = GameServer()->Collision()->GetTileIndex(MapIndex);
|
m_TileIndex = Collision()->GetTileIndex(MapIndex);
|
||||||
m_TileFIndex = GameServer()->Collision()->GetFTileIndex(MapIndex);
|
m_TileFIndex = Collision()->GetFTileIndex(MapIndex);
|
||||||
m_MoveRestrictions = GameServer()->Collision()->GetMoveRestrictions(IsSwitchActiveCb, this, m_Pos, 18.0f, MapIndex);
|
m_MoveRestrictions = Collision()->GetMoveRestrictions(IsSwitchActiveCb, this, m_Pos, 18.0f, MapIndex);
|
||||||
if(Index < 0)
|
if(Index < 0)
|
||||||
{
|
{
|
||||||
m_LastRefillJumps = false;
|
m_LastRefillJumps = false;
|
||||||
|
@ -1462,7 +1462,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_LastBonus = false;
|
m_LastBonus = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int cp = GameServer()->Collision()->IsCheckpoint(MapIndex);
|
int cp = Collision()->IsCheckpoint(MapIndex);
|
||||||
if(cp != -1 && m_DDRaceState == DDRACE_STARTED && cp > m_CpActive)
|
if(cp != -1 && m_DDRaceState == DDRACE_STARTED && cp > m_CpActive)
|
||||||
{
|
{
|
||||||
m_CpActive = cp;
|
m_CpActive = cp;
|
||||||
|
@ -1488,7 +1488,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int cpf = GameServer()->Collision()->IsFCheckpoint(MapIndex);
|
int cpf = Collision()->IsFCheckpoint(MapIndex);
|
||||||
if(cpf != -1 && m_DDRaceState == DDRACE_STARTED && cpf > m_CpActive)
|
if(cpf != -1 && m_DDRaceState == DDRACE_STARTED && cpf > m_CpActive)
|
||||||
{
|
{
|
||||||
m_CpActive = cpf;
|
m_CpActive = cpf;
|
||||||
|
@ -1514,7 +1514,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
Server()->SendPackMsg(&Msg, MSGFLAG_VITAL, m_pPlayer->GetCID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int tcp = GameServer()->Collision()->IsTCheckpoint(MapIndex);
|
int tcp = Collision()->IsTCheckpoint(MapIndex);
|
||||||
if(tcp)
|
if(tcp)
|
||||||
m_TeleCheckpoint = tcp;
|
m_TeleCheckpoint = tcp;
|
||||||
|
|
||||||
|
@ -1718,64 +1718,64 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_Core.m_Vel = ClampVel(m_MoveRestrictions, m_Core.m_Vel);
|
m_Core.m_Vel = ClampVel(m_MoveRestrictions, m_Core.m_Vel);
|
||||||
|
|
||||||
// handle switch tiles
|
// handle switch tiles
|
||||||
if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_SWITCHOPEN && Team() != TEAM_SUPER && GameServer()->Collision()->GetSwitchNumber(MapIndex) > 0)
|
if(Collision()->GetSwitchType(MapIndex) == TILE_SWITCHOPEN && Team() != TEAM_SUPER && Collision()->GetSwitchNumber(MapIndex) > 0)
|
||||||
{
|
{
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = true;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = true;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = 0;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = 0;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHOPEN;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHOPEN;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_SWITCHTIMEDOPEN && Team() != TEAM_SUPER && GameServer()->Collision()->GetSwitchNumber(MapIndex) > 0)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_SWITCHTIMEDOPEN && Team() != TEAM_SUPER && Collision()->GetSwitchNumber(MapIndex) > 0)
|
||||||
{
|
{
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = true;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = true;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = Server()->Tick() + 1 + GameServer()->Collision()->GetSwitchDelay(MapIndex) * Server()->TickSpeed();
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = Server()->Tick() + 1 + Collision()->GetSwitchDelay(MapIndex) * Server()->TickSpeed();
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHTIMEDOPEN;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHTIMEDOPEN;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_SWITCHTIMEDCLOSE && Team() != TEAM_SUPER && GameServer()->Collision()->GetSwitchNumber(MapIndex) > 0)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_SWITCHTIMEDCLOSE && Team() != TEAM_SUPER && Collision()->GetSwitchNumber(MapIndex) > 0)
|
||||||
{
|
{
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = false;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = false;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = Server()->Tick() + 1 + GameServer()->Collision()->GetSwitchDelay(MapIndex) * Server()->TickSpeed();
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = Server()->Tick() + 1 + Collision()->GetSwitchDelay(MapIndex) * Server()->TickSpeed();
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHTIMEDCLOSE;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHTIMEDCLOSE;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_SWITCHCLOSE && Team() != TEAM_SUPER && GameServer()->Collision()->GetSwitchNumber(MapIndex) > 0)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_SWITCHCLOSE && Team() != TEAM_SUPER && Collision()->GetSwitchNumber(MapIndex) > 0)
|
||||||
{
|
{
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = false;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()] = false;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = 0;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_EndTick[Team()] = 0;
|
||||||
GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHCLOSE;
|
Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Type[Team()] = TILE_SWITCHCLOSE;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_FREEZE && Team() != TEAM_SUPER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_FREEZE && Team() != TEAM_SUPER)
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->GetSwitchNumber(MapIndex) == 0 || GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
if(Collision()->GetSwitchNumber(MapIndex) == 0 || Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
||||||
{
|
{
|
||||||
Freeze(GameServer()->Collision()->GetSwitchDelay(MapIndex));
|
Freeze(Collision()->GetSwitchDelay(MapIndex));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_DFREEZE && Team() != TEAM_SUPER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_DFREEZE && Team() != TEAM_SUPER)
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->GetSwitchNumber(MapIndex) == 0 || GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
if(Collision()->GetSwitchNumber(MapIndex) == 0 || Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
||||||
m_DeepFreeze = true;
|
m_DeepFreeze = true;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_DUNFREEZE && Team() != TEAM_SUPER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_DUNFREEZE && Team() != TEAM_SUPER)
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->GetSwitchNumber(MapIndex) == 0 || GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
if(Collision()->GetSwitchNumber(MapIndex) == 0 || Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
||||||
m_DeepFreeze = false;
|
m_DeepFreeze = false;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_LFREEZE && Team() != TEAM_SUPER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_LFREEZE && Team() != TEAM_SUPER)
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->GetSwitchNumber(MapIndex) == 0 || GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
if(Collision()->GetSwitchNumber(MapIndex) == 0 || Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
||||||
{
|
{
|
||||||
m_LiveFreeze = true;
|
m_LiveFreeze = true;
|
||||||
m_Core.m_LiveFrozen = true;
|
m_Core.m_LiveFrozen = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_LUNFREEZE && Team() != TEAM_SUPER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_LUNFREEZE && Team() != TEAM_SUPER)
|
||||||
{
|
{
|
||||||
if(GameServer()->Collision()->GetSwitchNumber(MapIndex) == 0 || GameServer()->Collision()->m_pSwitchers[GameServer()->Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
if(Collision()->GetSwitchNumber(MapIndex) == 0 || Collision()->m_pSwitchers[Collision()->GetSwitchNumber(MapIndex)].m_Status[Team()])
|
||||||
{
|
{
|
||||||
m_LiveFreeze = false;
|
m_LiveFreeze = false;
|
||||||
m_Core.m_LiveFrozen = false;
|
m_Core.m_LiveFrozen = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_HAMMER && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_HAMMER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_HAMMER && Collision()->GetSwitchDelay(MapIndex) == WEAPON_HAMMER)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can hammer hit others");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can hammer hit others");
|
||||||
m_Hit &= ~DISABLE_HIT_HAMMER;
|
m_Hit &= ~DISABLE_HIT_HAMMER;
|
||||||
|
@ -1783,7 +1783,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_Core.m_NoHammerHit = false;
|
m_Core.m_NoHammerHit = false;
|
||||||
GameServer()->SendTuningParams(m_pPlayer->GetCID(), m_TuneZone); // update tunings
|
GameServer()->SendTuningParams(m_pPlayer->GetCID(), m_TuneZone); // update tunings
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_HAMMER) && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_HAMMER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_HAMMER) && Collision()->GetSwitchDelay(MapIndex) == WEAPON_HAMMER)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't hammer hit others");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't hammer hit others");
|
||||||
m_Hit |= DISABLE_HIT_HAMMER;
|
m_Hit |= DISABLE_HIT_HAMMER;
|
||||||
|
@ -1791,45 +1791,45 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_Core.m_NoHammerHit = true;
|
m_Core.m_NoHammerHit = true;
|
||||||
GameServer()->SendTuningParams(m_pPlayer->GetCID(), m_TuneZone); // update tunings
|
GameServer()->SendTuningParams(m_pPlayer->GetCID(), m_TuneZone); // update tunings
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_SHOTGUN && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_SHOTGUN)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_SHOTGUN && Collision()->GetSwitchDelay(MapIndex) == WEAPON_SHOTGUN)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with shotgun");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with shotgun");
|
||||||
m_Hit &= ~DISABLE_HIT_SHOTGUN;
|
m_Hit &= ~DISABLE_HIT_SHOTGUN;
|
||||||
m_Core.m_NoShotgunHit = false;
|
m_Core.m_NoShotgunHit = false;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_SHOTGUN) && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_SHOTGUN)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_SHOTGUN) && Collision()->GetSwitchDelay(MapIndex) == WEAPON_SHOTGUN)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with shotgun");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with shotgun");
|
||||||
m_Hit |= DISABLE_HIT_SHOTGUN;
|
m_Hit |= DISABLE_HIT_SHOTGUN;
|
||||||
m_Core.m_NoShotgunHit = true;
|
m_Core.m_NoShotgunHit = true;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_GRENADE && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_GRENADE)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_GRENADE && Collision()->GetSwitchDelay(MapIndex) == WEAPON_GRENADE)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with grenade");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with grenade");
|
||||||
m_Hit &= ~DISABLE_HIT_GRENADE;
|
m_Hit &= ~DISABLE_HIT_GRENADE;
|
||||||
m_Core.m_NoGrenadeHit = false;
|
m_Core.m_NoGrenadeHit = false;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_GRENADE) && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_GRENADE)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_GRENADE) && Collision()->GetSwitchDelay(MapIndex) == WEAPON_GRENADE)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with grenade");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with grenade");
|
||||||
m_Hit |= DISABLE_HIT_GRENADE;
|
m_Hit |= DISABLE_HIT_GRENADE;
|
||||||
m_Core.m_NoGrenadeHit = true;
|
m_Core.m_NoGrenadeHit = true;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_LASER && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_LASER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_ENABLE && m_Hit & DISABLE_HIT_LASER && Collision()->GetSwitchDelay(MapIndex) == WEAPON_LASER)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with laser");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can shoot others with laser");
|
||||||
m_Hit &= ~DISABLE_HIT_LASER;
|
m_Hit &= ~DISABLE_HIT_LASER;
|
||||||
m_Core.m_NoLaserHit = false;
|
m_Core.m_NoLaserHit = false;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_LASER) && GameServer()->Collision()->GetSwitchDelay(MapIndex) == WEAPON_LASER)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_HIT_DISABLE && !(m_Hit & DISABLE_HIT_LASER) && Collision()->GetSwitchDelay(MapIndex) == WEAPON_LASER)
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with laser");
|
GameServer()->SendChatTarget(GetPlayer()->GetCID(), "You can't shoot others with laser");
|
||||||
m_Hit |= DISABLE_HIT_LASER;
|
m_Hit |= DISABLE_HIT_LASER;
|
||||||
m_Core.m_NoLaserHit = true;
|
m_Core.m_NoLaserHit = true;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_JUMP)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_JUMP)
|
||||||
{
|
{
|
||||||
int NewJumps = GameServer()->Collision()->GetSwitchDelay(MapIndex);
|
int NewJumps = Collision()->GetSwitchDelay(MapIndex);
|
||||||
if(NewJumps == 255)
|
if(NewJumps == 255)
|
||||||
{
|
{
|
||||||
NewJumps = -1;
|
NewJumps = -1;
|
||||||
|
@ -1860,10 +1860,10 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_Core.m_Jumps = NewJumps;
|
m_Core.m_Jumps = NewJumps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_ADD_TIME && !m_LastPenalty)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_ADD_TIME && !m_LastPenalty)
|
||||||
{
|
{
|
||||||
int min = GameServer()->Collision()->GetSwitchDelay(MapIndex);
|
int min = Collision()->GetSwitchDelay(MapIndex);
|
||||||
int sec = GameServer()->Collision()->GetSwitchNumber(MapIndex);
|
int sec = Collision()->GetSwitchNumber(MapIndex);
|
||||||
int Team = Teams()->m_Core.Team(m_Core.m_Id);
|
int Team = Teams()->m_Core.Team(m_Core.m_Id);
|
||||||
|
|
||||||
m_StartTime -= (min * 60 + sec) * Server()->TickSpeed();
|
m_StartTime -= (min * 60 + sec) * Server()->TickSpeed();
|
||||||
|
@ -1884,10 +1884,10 @@ void CCharacter::HandleTiles(int Index)
|
||||||
|
|
||||||
m_LastPenalty = true;
|
m_LastPenalty = true;
|
||||||
}
|
}
|
||||||
else if(GameServer()->Collision()->GetSwitchType(MapIndex) == TILE_SUBTRACT_TIME && !m_LastBonus)
|
else if(Collision()->GetSwitchType(MapIndex) == TILE_SUBTRACT_TIME && !m_LastBonus)
|
||||||
{
|
{
|
||||||
int min = GameServer()->Collision()->GetSwitchDelay(MapIndex);
|
int min = Collision()->GetSwitchDelay(MapIndex);
|
||||||
int sec = GameServer()->Collision()->GetSwitchNumber(MapIndex);
|
int sec = Collision()->GetSwitchNumber(MapIndex);
|
||||||
int Team = Teams()->m_Core.Team(m_Core.m_Id);
|
int Team = Teams()->m_Core.Team(m_Core.m_Id);
|
||||||
|
|
||||||
m_StartTime += (min * 60 + sec) * Server()->TickSpeed();
|
m_StartTime += (min * 60 + sec) * Server()->TickSpeed();
|
||||||
|
@ -1911,17 +1911,17 @@ void CCharacter::HandleTiles(int Index)
|
||||||
m_LastBonus = true;
|
m_LastBonus = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GameServer()->Collision()->GetSwitchType(MapIndex) != TILE_ADD_TIME)
|
if(Collision()->GetSwitchType(MapIndex) != TILE_ADD_TIME)
|
||||||
{
|
{
|
||||||
m_LastPenalty = false;
|
m_LastPenalty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(GameServer()->Collision()->GetSwitchType(MapIndex) != TILE_SUBTRACT_TIME)
|
if(Collision()->GetSwitchType(MapIndex) != TILE_SUBTRACT_TIME)
|
||||||
{
|
{
|
||||||
m_LastBonus = false;
|
m_LastBonus = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int z = GameServer()->Collision()->IsTeleport(MapIndex);
|
int z = Collision()->IsTeleport(MapIndex);
|
||||||
if(!g_Config.m_SvOldTeleportHook && !g_Config.m_SvOldTeleportWeapons && z && !(*m_pTeleOuts)[z - 1].empty())
|
if(!g_Config.m_SvOldTeleportHook && !g_Config.m_SvOldTeleportWeapons && z && !(*m_pTeleOuts)[z - 1].empty())
|
||||||
{
|
{
|
||||||
if(m_Super)
|
if(m_Super)
|
||||||
|
@ -1936,7 +1936,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
ResetPickups();
|
ResetPickups();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int evilz = GameServer()->Collision()->IsEvilTeleport(MapIndex);
|
int evilz = Collision()->IsEvilTeleport(MapIndex);
|
||||||
if(evilz && !(*m_pTeleOuts)[evilz - 1].empty())
|
if(evilz && !(*m_pTeleOuts)[evilz - 1].empty())
|
||||||
{
|
{
|
||||||
if(m_Super)
|
if(m_Super)
|
||||||
|
@ -1959,7 +1959,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsCheckEvilTeleport(MapIndex))
|
if(Collision()->IsCheckEvilTeleport(MapIndex))
|
||||||
{
|
{
|
||||||
if(m_Super)
|
if(m_Super)
|
||||||
return;
|
return;
|
||||||
|
@ -1996,7 +1996,7 @@ void CCharacter::HandleTiles(int Index)
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsCheckTeleport(MapIndex))
|
if(Collision()->IsCheckTeleport(MapIndex))
|
||||||
{
|
{
|
||||||
if(m_Super)
|
if(m_Super)
|
||||||
return;
|
return;
|
||||||
|
@ -2034,8 +2034,8 @@ void CCharacter::HandleTiles(int Index)
|
||||||
void CCharacter::HandleTuneLayer()
|
void CCharacter::HandleTuneLayer()
|
||||||
{
|
{
|
||||||
m_TuneZoneOld = m_TuneZone;
|
m_TuneZoneOld = m_TuneZone;
|
||||||
int CurrentIndex = GameServer()->Collision()->GetMapIndex(m_Pos);
|
int CurrentIndex = Collision()->GetMapIndex(m_Pos);
|
||||||
m_TuneZone = GameServer()->Collision()->IsTune(CurrentIndex);
|
m_TuneZone = Collision()->IsTune(CurrentIndex);
|
||||||
|
|
||||||
if(m_TuneZone)
|
if(m_TuneZone)
|
||||||
m_Core.m_Tuning = GameServer()->TuningList()[m_TuneZone]; // throw tunings from specific zone into gamecore
|
m_Core.m_Tuning = GameServer()->TuningList()[m_TuneZone]; // throw tunings from specific zone into gamecore
|
||||||
|
@ -2134,11 +2134,11 @@ void CCharacter::DDRaceTick()
|
||||||
HandleTuneLayer(); // need this before coretick
|
HandleTuneLayer(); // need this before coretick
|
||||||
|
|
||||||
// check if the tee is in any type of freeze
|
// check if the tee is in any type of freeze
|
||||||
int Index = GameServer()->Collision()->GetPureMapIndex(m_Pos);
|
int Index = Collision()->GetPureMapIndex(m_Pos);
|
||||||
const int aTiles[] = {
|
const int aTiles[] = {
|
||||||
GameServer()->Collision()->GetTileIndex(Index),
|
Collision()->GetTileIndex(Index),
|
||||||
GameServer()->Collision()->GetFTileIndex(Index),
|
Collision()->GetFTileIndex(Index),
|
||||||
GameServer()->Collision()->GetSwitchType(Index)};
|
Collision()->GetSwitchType(Index)};
|
||||||
m_Core.m_IsInFreeze = false;
|
m_Core.m_IsInFreeze = false;
|
||||||
for(const int Tile : aTiles)
|
for(const int Tile : aTiles)
|
||||||
{
|
{
|
||||||
|
@ -2201,13 +2201,13 @@ void CCharacter::DDRacePostCoreTick()
|
||||||
m_Core.m_Jumped = 1;
|
m_Core.m_Jumped = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CurrentIndex = GameServer()->Collision()->GetMapIndex(m_Pos);
|
int CurrentIndex = Collision()->GetMapIndex(m_Pos);
|
||||||
HandleSkippableTiles(CurrentIndex);
|
HandleSkippableTiles(CurrentIndex);
|
||||||
if(!m_Alive)
|
if(!m_Alive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// handle Anti-Skip tiles
|
// handle Anti-Skip tiles
|
||||||
std::list<int> Indices = GameServer()->Collision()->GetMapIndices(m_PrevPos, m_Pos);
|
std::list<int> Indices = Collision()->GetMapIndices(m_PrevPos, m_Pos);
|
||||||
if(!Indices.empty())
|
if(!Indices.empty())
|
||||||
{
|
{
|
||||||
for(int &Index : Indices)
|
for(int &Index : Indices)
|
||||||
|
|
Loading…
Reference in a new issue