mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 18:18:18 +00:00
Merge branch 'master' of http://github.com/GreYFoXGTi/DDRace-Server
This commit is contained in:
commit
dfa60a65d2
|
@ -125,7 +125,7 @@ vec2 CCollision::GetPos(int Index)
|
||||||
|
|
||||||
int CCollision::GetCollisionDDRace(int Index)
|
int CCollision::GetCollisionDDRace(int Index)
|
||||||
{
|
{
|
||||||
dbg_msg("GetCollisionDDRace","m_pTiles[%d].m_Index = %d",Index,m_pTiles[Index].m_Index);//Remove*/
|
/*dbg_msg("GetCollisionDDRace","m_pTiles[%d].m_Index = %d",Index,m_pTiles[Index].m_Index);//Remove*/
|
||||||
if(Index < 0)
|
if(Index < 0)
|
||||||
return 0;
|
return 0;
|
||||||
return m_pTiles[Index].m_Index;
|
return m_pTiles[Index].m_Index;
|
||||||
|
@ -402,28 +402,7 @@ void CCollision::GetSpeedup(int x, int y, vec2 *Dir, int *Force)
|
||||||
TmpDir.y = (Direction.x*sin(Angle)) + (Direction.y*cos(Angle));
|
TmpDir.y = (Direction.x*sin(Angle)) + (Direction.y*cos(Angle));
|
||||||
*Dir = TmpDir;
|
*Dir = TmpDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int CCollision::IsBegin(int Index)
|
|
||||||
{
|
|
||||||
return Index == TILE_BEGIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CCollision::IsEnd(int Index)
|
|
||||||
{
|
|
||||||
return Index == TILE_END;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CCollision::IsFreeze(int Index)
|
|
||||||
{
|
|
||||||
return Index == TILE_FREEZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CCollision::IsUnfreeze(int Index)
|
|
||||||
{
|
|
||||||
return Index == TILE_UNFREEZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int CCollision::IsCp(int x, int y)
|
int CCollision::IsCp(int x, int y)
|
||||||
{
|
{
|
||||||
int nx = clamp(x/32, 0, m_Width-1);
|
int nx = clamp(x/32, 0, m_Width-1);
|
||||||
|
@ -435,14 +414,6 @@ int CCollision::IsCp(int x, int y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CCollision::IsBoost(int Index)
|
|
||||||
{
|
|
||||||
if ((Index >= TILE_BOOST_L && Index <= TILE_BOOST_U) || (Index >= TILE_BOOST_L2 && Index <= TILE_BOOST_U2))
|
|
||||||
return Index;
|
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
vec2 CCollision::CpSpeed(int Index)
|
vec2 CCollision::CpSpeed(int Index)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
@ -45,12 +45,7 @@ public:
|
||||||
void GetSpeedup(int x, int y, vec2 *Dir, int *Force);
|
void GetSpeedup(int x, int y, vec2 *Dir, int *Force);
|
||||||
|
|
||||||
int IsSolid(int x, int y);
|
int IsSolid(int x, int y);
|
||||||
int IsBegin(int Index);
|
|
||||||
int IsNoLaser(int x, int y);
|
int IsNoLaser(int x, int y);
|
||||||
int IsEnd(int Index);
|
|
||||||
int IsBoost(int Index);
|
|
||||||
int IsFreeze(int Index);
|
|
||||||
int IsUnfreeze(int Index);
|
|
||||||
int IsCp(int x, int y);
|
int IsCp(int x, int y);
|
||||||
|
|
||||||
vec2 BoostAccelerator(int Index);
|
vec2 BoostAccelerator(int Index);
|
||||||
|
|
|
@ -67,7 +67,7 @@ bool CCharacter::Spawn(CPlayer *pPlayer, vec2 Pos)
|
||||||
m_OlderPos = Pos;
|
m_OlderPos = Pos;
|
||||||
m_OldPos = Pos;
|
m_OldPos = Pos;
|
||||||
m_RaceState = RACE_NONE;
|
m_RaceState = RACE_NONE;
|
||||||
|
m_PrevPos = Pos;
|
||||||
m_Core.Reset();
|
m_Core.Reset();
|
||||||
m_Core.Init(&GameServer()->m_World.m_Core, GameServer()->Collision());
|
m_Core.Init(&GameServer()->m_World.m_Core, GameServer()->Collision());
|
||||||
m_Core.m_Pos = m_Pos;
|
m_Core.m_Pos = m_Pos;
|
||||||
|
@ -557,8 +557,8 @@ void CCharacter::OnDirectInput(CNetObj_PlayerInput *pNewInput)
|
||||||
|
|
||||||
void CCharacter::Tick()
|
void CCharacter::Tick()
|
||||||
{
|
{
|
||||||
int TileIndex = GameServer()->Collision()->GetIndex(m_PrevPos, m_Pos);
|
int MapIndex = GameServer()->Collision()->GetIndex(m_PrevPos, m_Pos);
|
||||||
|
int TileIndex = GameServer()->Collision()->GetCollisionDDRace(MapIndex);
|
||||||
if(m_RaceState == RACE_PAUSE) {
|
if(m_RaceState == RACE_PAUSE) {
|
||||||
m_Input.m_Direction = 0;
|
m_Input.m_Direction = 0;
|
||||||
m_Input.m_Jump = 0;
|
m_Input.m_Jump = 0;
|
||||||
|
@ -600,10 +600,11 @@ void CCharacter::Tick()
|
||||||
m_Core.m_HookTick = 0;
|
m_Core.m_HookTick = 0;
|
||||||
if (m_Super && m_Core.m_Jumped > 1)
|
if (m_Super && m_Core.m_Jumped > 1)
|
||||||
m_Core.m_Jumped = 1;
|
m_Core.m_Jumped = 1;
|
||||||
dbg_msg("character","TileIndex%d",TileIndex); //REMOVE*/
|
/*dbg_msg("character","TileIndex%d",TileIndex); //REMOVE*/
|
||||||
//DDRace
|
//DDRace
|
||||||
char aBuftime[128];
|
char aBuftime[128];
|
||||||
float time = (float)(Server()->Tick() - m_StartTime) / ((float)Server()->TickSpeed());
|
float time = (float)(Server()->Tick() - m_StartTime) / ((float)Server()->TickSpeed());
|
||||||
|
int z = GameServer()->Collision()->IsTeleport(m_Pos.x, m_Pos.y);
|
||||||
if(Server()->Tick() - m_RefreshTime >= Server()->TickSpeed())
|
if(Server()->Tick() - m_RefreshTime >= Server()->TickSpeed())
|
||||||
{
|
{
|
||||||
//GameServer()->SendBroadcast("FIRST_IF", m_pPlayer->GetCID());
|
//GameServer()->SendBroadcast("FIRST_IF", m_pPlayer->GetCID());
|
||||||
|
@ -618,13 +619,13 @@ void CCharacter::Tick()
|
||||||
}
|
}
|
||||||
m_RefreshTime = Server()->Tick();
|
m_RefreshTime = Server()->Tick();
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsBegin(GameServer()->Collision()->GetCollisionDDRace(TileIndex)) && m_RaceState == RACE_NONE)
|
else if((TileIndex == TILE_BEGIN) && (m_RaceState == RACE_NONE || m_RaceState == RACE_STARTED))
|
||||||
{
|
{
|
||||||
m_StartTime = Server()->Tick();
|
m_StartTime = Server()->Tick();
|
||||||
m_RefreshTime = Server()->Tick();
|
m_RefreshTime = Server()->Tick();
|
||||||
m_RaceState = RACE_STARTED;
|
m_RaceState = RACE_STARTED;
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsEnd(GameServer()->Collision()->GetCollisionDDRace(TileIndex)) && m_RaceState == RACE_STARTED)
|
else if((TileIndex == TILE_END) && m_RaceState == RACE_STARTED)
|
||||||
{
|
{
|
||||||
char aBuf[128];
|
char aBuf[128];
|
||||||
if ((int)time / 60 != 0)
|
if ((int)time / 60 != 0)
|
||||||
|
@ -648,18 +649,58 @@ void CCharacter::Tick()
|
||||||
if(strncmp(Server()->ClientName(m_pPlayer->GetCID()), "nameless tee", 12) != 0)
|
if(strncmp(Server()->ClientName(m_pPlayer->GetCID()), "nameless tee", 12) != 0)
|
||||||
((CGameControllerDDRace*)GameServer()->m_pController)->m_Score.ParsePlayer(Server()->ClientName(m_pPlayer->GetCID()), (float)time);
|
((CGameControllerDDRace*)GameServer()->m_pController)->m_Score.ParsePlayer(Server()->ClientName(m_pPlayer->GetCID()), (float)time);
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsFreeze(GameServer()->Collision()->GetCollisionDDRace(TileIndex)) && !m_Super)
|
else if((TileIndex == TILE_FREEZE) && !m_Super)
|
||||||
{
|
{
|
||||||
Freeze(Server()->TickSpeed()*3);
|
Freeze(Server()->TickSpeed()*3);
|
||||||
}
|
}
|
||||||
if(GameServer()->Collision()->IsUnfreeze(GameServer()->Collision()->GetCollisionDDRace(TileIndex)) && !m_Super)
|
else if(TileIndex == TILE_UNFREEZE)
|
||||||
{
|
{
|
||||||
UnFreeze();
|
UnFreeze();
|
||||||
}
|
}
|
||||||
int booster = GameServer()->Collision()->IsBoost(GameServer()->Collision()->GetCollisionDDRace(TileIndex));
|
else if ((TileIndex >= TILE_BOOST_L && TileIndex <= TILE_BOOST_U) || (TileIndex >= TILE_BOOST_L2 && TileIndex <= TILE_BOOST_U2))
|
||||||
m_Core.m_Vel += GameServer()->Collision()->BoostAccelerator(booster);
|
{
|
||||||
//
|
int booster = TileIndex;
|
||||||
if(GameServer()->Collision()->IsSpeedup((int)m_Core.m_Pos.x, (int)m_Core.m_Pos.y))
|
m_Core.m_Vel += GameServer()->Collision()->BoostAccelerator(booster);
|
||||||
|
}
|
||||||
|
else if(GameServer()->Collision()->GetCollisionDDRace(TileIndex) == TILE_STOPL)
|
||||||
|
{
|
||||||
|
if(m_Core.m_Vel.x > 0)
|
||||||
|
{
|
||||||
|
if((int)GameServer()->Collision()->GetPos(TileIndex).x < (int)m_Core.m_Pos.x)
|
||||||
|
m_Core.m_Pos.x = m_PrevPos.x;
|
||||||
|
m_Core.m_Vel.x = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(GameServer()->Collision()->GetCollisionDDRace(TileIndex) == TILE_STOPR)
|
||||||
|
{
|
||||||
|
if(m_Core.m_Vel.x < 0)
|
||||||
|
{
|
||||||
|
if((int)GameServer()->Collision()->GetPos(TileIndex).x > (int)m_Core.m_Pos.x)
|
||||||
|
m_Core.m_Pos.x = m_PrevPos.x;
|
||||||
|
m_Core.m_Vel.x = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(GameServer()->Collision()->GetCollisionDDRace(TileIndex) == TILE_STOPB)
|
||||||
|
{
|
||||||
|
if(m_Core.m_Vel.y < 0)
|
||||||
|
{
|
||||||
|
if((int)GameServer()->Collision()->GetPos(TileIndex).y > (int)m_Core.m_Pos.y)
|
||||||
|
m_Core.m_Pos.y = m_PrevPos.y;
|
||||||
|
m_Core.m_Vel.y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(GameServer()->Collision()->GetCollisionDDRace(TileIndex) == TILE_STOPT)
|
||||||
|
{
|
||||||
|
if(m_Core.m_Vel.y > 0)
|
||||||
|
{
|
||||||
|
if((int)GameServer()->Collision()->GetPos(TileIndex).y < (int)m_Core.m_Pos.y)
|
||||||
|
m_Core.m_Pos.y = m_PrevPos.y;
|
||||||
|
if(m_Jumped&3 && m_Core.m_Jumped != m_Jumped) // check double jump
|
||||||
|
m_Core.m_Jumped = m_Jumped;
|
||||||
|
m_Core.m_Vel.y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(GameServer()->Collision()->IsSpeedup((int)m_Core.m_Pos.x, (int)m_Core.m_Pos.y))
|
||||||
{
|
{
|
||||||
vec2 Direction;
|
vec2 Direction;
|
||||||
int Force;
|
int Force;
|
||||||
|
@ -667,8 +708,7 @@ void CCharacter::Tick()
|
||||||
|
|
||||||
m_Core.m_Vel += Direction*Force;
|
m_Core.m_Vel += Direction*Force;
|
||||||
}
|
}
|
||||||
int z = GameServer()->Collision()->IsTeleport(m_Pos.x, m_Pos.y);
|
else if(z)
|
||||||
if(z)
|
|
||||||
{
|
{
|
||||||
m_Core.m_HookedPlayer = -1;
|
m_Core.m_HookedPlayer = -1;
|
||||||
m_Core.m_HookState = HOOK_RETRACTED;
|
m_Core.m_HookState = HOOK_RETRACTED;
|
||||||
|
|
Loading…
Reference in a new issue