mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
separated CFlag from ctf
This commit is contained in:
parent
6299f6518a
commit
532ea85aeb
36
src/game/server/entities/flag.cpp
Normal file
36
src/game/server/entities/flag.cpp
Normal file
|
@ -0,0 +1,36 @@
|
|||
#include <game/server/gamecontext.h>
|
||||
#include "flag.h"
|
||||
|
||||
CFlag::CFlag(CGameWorld *pGameWorld, int Team)
|
||||
: CEntity(pGameWorld, NETOBJTYPE_FLAG)
|
||||
{
|
||||
m_Team = Team;
|
||||
m_ProximityRadius = ms_PhysSize;
|
||||
m_pCarryingCharacter = NULL;
|
||||
m_GrabTick = 0;
|
||||
|
||||
Reset();
|
||||
}
|
||||
|
||||
void CFlag::Reset()
|
||||
{
|
||||
m_pCarryingCharacter = NULL;
|
||||
m_AtStand = 1;
|
||||
m_Pos = m_StandPos;
|
||||
m_Vel = vec2(0,0);
|
||||
m_GrabTick = 0;
|
||||
}
|
||||
|
||||
void CFlag::Snap(int SnappingClient)
|
||||
{
|
||||
CNetObj_Flag *pFlag = (CNetObj_Flag *)Server()->SnapNewItem(NETOBJTYPE_FLAG, m_Team, sizeof(CNetObj_Flag));
|
||||
pFlag->m_X = (int)m_Pos.x;
|
||||
pFlag->m_Y = (int)m_Pos.y;
|
||||
pFlag->m_Team = m_Team;
|
||||
pFlag->m_CarriedBy = -1;
|
||||
|
||||
if(m_AtStand)
|
||||
pFlag->m_CarriedBy = -2;
|
||||
else if(m_pCarryingCharacter && m_pCarryingCharacter->GetPlayer())
|
||||
pFlag->m_CarriedBy = m_pCarryingCharacter->GetPlayer()->GetCID();
|
||||
}
|
25
src/game/server/entities/flag.h
Normal file
25
src/game/server/entities/flag.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#ifndef GAME_SERVER_ENTITIES_FLAG_H
|
||||
#define GAME_SERVER_ENTITIES_FLAG_H
|
||||
|
||||
#include <game/server/entity.h>
|
||||
|
||||
class CFlag : public CEntity
|
||||
{
|
||||
public:
|
||||
static const int ms_PhysSize = 14;
|
||||
CCharacter *m_pCarryingCharacter;
|
||||
vec2 m_Vel;
|
||||
vec2 m_StandPos;
|
||||
|
||||
int m_Team;
|
||||
int m_AtStand;
|
||||
int m_DropTick;
|
||||
int m_GrabTick;
|
||||
|
||||
CFlag(CGameWorld *pGameWorld, int Team);
|
||||
|
||||
virtual void Reset();
|
||||
virtual void Snap(int SnappingClient);
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,6 +1,7 @@
|
|||
// copyright (c) 2007 magnus auvinen, see licence.txt for more info
|
||||
#include <game/mapitems.h>
|
||||
#include <game/server/entities/character.h>
|
||||
#include <game/server/entities/flag.h>
|
||||
#include <game/server/player.h>
|
||||
#include <game/server/gamecontext.h>
|
||||
#include "ctf.h"
|
||||
|
@ -210,39 +211,3 @@ void CGameControllerCTF::Tick()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Flag
|
||||
CFlag::CFlag(CGameWorld *pGameWorld, int Team)
|
||||
: CEntity(pGameWorld, NETOBJTYPE_FLAG)
|
||||
{
|
||||
m_Team = Team;
|
||||
m_ProximityRadius = ms_PhysSize;
|
||||
m_pCarryingCharacter = 0x0;
|
||||
m_GrabTick = 0;
|
||||
|
||||
Reset();
|
||||
}
|
||||
|
||||
void CFlag::Reset()
|
||||
{
|
||||
m_pCarryingCharacter = 0x0;
|
||||
m_AtStand = 1;
|
||||
m_Pos = m_StandPos;
|
||||
m_Vel = vec2(0,0);
|
||||
m_GrabTick = 0;
|
||||
}
|
||||
|
||||
void CFlag::Snap(int SnappingClient)
|
||||
{
|
||||
CNetObj_Flag *pFlag = (CNetObj_Flag *)Server()->SnapNewItem(NETOBJTYPE_FLAG, m_Team, sizeof(CNetObj_Flag));
|
||||
pFlag->m_X = (int)m_Pos.x;
|
||||
pFlag->m_Y = (int)m_Pos.y;
|
||||
pFlag->m_Team = m_Team;
|
||||
pFlag->m_CarriedBy = -1;
|
||||
|
||||
if(m_AtStand)
|
||||
pFlag->m_CarriedBy = -2;
|
||||
else if(m_pCarryingCharacter && m_pCarryingCharacter->GetPlayer())
|
||||
pFlag->m_CarriedBy = m_pCarryingCharacter->GetPlayer()->GetCID();
|
||||
}
|
||||
|
||||
|
|
|
@ -16,24 +16,5 @@ public:
|
|||
virtual int OnCharacterDeath(class CCharacter *pVictim, class CPlayer *pKiller, int Weapon);
|
||||
};
|
||||
|
||||
// TODO: move to seperate file
|
||||
class CFlag : public CEntity
|
||||
{
|
||||
public:
|
||||
static const int ms_PhysSize = 14;
|
||||
CCharacter *m_pCarryingCharacter;
|
||||
vec2 m_Vel;
|
||||
vec2 m_StandPos;
|
||||
|
||||
int m_Team;
|
||||
int m_AtStand;
|
||||
int m_DropTick;
|
||||
int m_GrabTick;
|
||||
|
||||
CFlag(CGameWorld *pGameWorld, int Team);
|
||||
|
||||
virtual void Reset();
|
||||
virtual void Snap(int SnappingClient);
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue