separated CFlag from ctf

This commit is contained in:
Choupom 2010-09-06 12:29:28 +02:00 committed by oy
parent 6299f6518a
commit 532ea85aeb
4 changed files with 62 additions and 55 deletions

View 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();
}

View 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

View file

@ -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();
}

View file

@ -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