NS/main/source/mod/AvHEntityHierarchy.h
XP-Cagey b918c731aa Bugfixes for mantis #1008, #1009
Rewrote WeaponsResource code so that uninitialized slots are no longer returned as valid weapons
Removed upp_* from command constants and console commands
Removed commented out entry from hl_baseentity.cpp
Shift in map data position is now performed by the network layer instead of at the time of creation
Deleted obsolete Util.vcproj
Replaced calls to fmax with calls to max in AvHEntities.cpp (Win32 compiler wasn't finding fmax command without explicit include)
Began implementation of client-to-server tunnel for Nexus


git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@94 67975925-1194-0748-b3d5-c16f83f1a3a1
2005-05-05 15:20:23 +00:00

120 lines
No EOL
3.6 KiB
C++

//======== (C) Copyright 2002 Charles G. Cleveland All rights reserved. =========
//
// The copyright to the contents herein is the property of Charles G. Cleveland.
// The contents may be used and/or copied only with the written permission of
// Charles G. Cleveland, or in accordance with the terms and conditions stipulated in
// the agreement/contract under which the contents have been supplied.
//
// Purpose:
//
// $Workfile: AvHEntityHierarchy.h $
// $Date: 2002/06/25 17:55:49 $
//
//-------------------------------------------------------------------------------
// $Log: AvHEntityHierarchy.h,v $
// Revision 1.3 2002/06/25 17:55:49 Flayra
// - Quick fix during playtesting...why is this happening?
//
//===============================================================================
#ifndef AVH_ENTITYHIERARCHY_H
#define AVH_ENTITYHIERARCHY_H
#include "types.h"
#include "mod/AvHConstants.h"
#include "mod/AvHSpecials.h"
#ifdef AVH_SERVER
#include "util/nowarnings.h"
#include "dlls/extdll.h"
#include "dlls/util.h"
#include "dlls/cbase.h"
#include "mod/AvHTeam.h"
#endif
// Assume flags will fire once, then die out after half a second or a second.
// Only need to send them if they weren't on last update and they are now
// Note that kFriendlyStatus needs to be greater then zero, so an EntityInfo of 0 can be used to send a "delete" message
const int kFriendlyStatus = 1;
const int kFriendlyPlayerStatus = 2;
const int kEnemyStatus = 3;
const int kEnemyPlayerStatus = 4;
const int kFriendlyFiringStatus = 5;
const int kFriendlyEnemySightedStatus = 6;
const int kFriendlyOverwatchStatus = 7;
const int kFriendlyRequestPendingStatus = 8;
const int kFriendlyTakingDamageStatus = 9;
const int kFriendlyDeadStatus = 10;
const int kWeldableStatus = 11;
const int kResourceNodeStatus = 12;
const int kFriendlyBase = 13;
const int kUnseenEnemyBase = 14;
const int kVisibleEnemyBase = 15;
const int kNumStatusTypes = 15;
class MapEntity
{
public:
MapEntity(void) : mUser3(AVH_USER3_NONE), mTeam(TEAM_IND), mX(0.0f), mY(0.0f), mAngle(0.0f), mSquadNumber(0) {}
AvHUser3 mUser3;
AvHTeamNumber mTeam;
float mX;
float mY;
float mAngle;
int mSquadNumber;
bool operator==(const MapEntity& e) const
{
return mUser3 == e.mUser3 &&
mTeam == e.mTeam &&
mX == e.mX &&
mY == e.mY &&
mAngle == e.mAngle &&
mSquadNumber == e.mSquadNumber;
}
bool operator!=(const MapEntity& e) const
{
return !(*this == e);
}
};
typedef map<int, MapEntity> MapEntityMap;
// EntityInfo
// 18-bits position, 2 bits unused, 6 bits entity index, 6 bits flags
class AvHEntityHierarchy
{
public:
AvHEntityHierarchy();
void Clear();
#ifdef AVH_SERVER
bool SendToNetworkStream(AvHEntityHierarchy& inClientHierarchy, entvars_t* inPlayer);
void BuildFromTeam(const AvHTeam* inTeam, BaseEntityListType& inBaseEntityList);
#endif
bool GetHasBaseLineBeenSent() const;
void SetBaseLineSent();
bool InsertEntity( const int inIndex, const MapEntity& inEntity );
bool DeleteEntity( const int inIndex );
void GetEntityInfoList(MapEntityMap& outList) const;
bool operator!=(const AvHEntityHierarchy& inHierarchy) const;
bool operator==(const AvHEntityHierarchy& inHierarchy) const;
private:
// The encoded entity info that has been sent to clients
MapEntityMap mEntityList;
};
#endif