forked from 0ad/0ad
workaround for invalidId issue (fixes windows build)
class static const member apparently sometimes requires external linkage and enum causes conversion warnings, so go with file-scope constants. This was SVN commit r6161.
This commit is contained in:
parent
129dfdcec0
commit
58407c7438
@ -13,15 +13,11 @@
|
||||
#include "ps/Player.h"
|
||||
#include "simulation/Entity.h"
|
||||
|
||||
// Initialized in class declaration, but still needs a translation unit to
|
||||
// define the storage location for it... for cases where the compiler can't (or
|
||||
// doesn't) inline the constant value directly.
|
||||
const size_t CUnit::invalidId;
|
||||
|
||||
CUnit::CUnit(CObjectEntry* object, CEntity* entity, CObjectManager& objectManager,
|
||||
const std::set<CStr>& actorSelections)
|
||||
: m_Object(object), m_Model(object->m_Model->Clone()), m_Entity(entity),
|
||||
m_ID(invalidId), m_ActorSelections(actorSelections), m_PlayerID(CPlayer::invalidId),
|
||||
m_ID(invalidUnitId), m_ActorSelections(actorSelections), m_PlayerID(invalidPlayerId),
|
||||
m_ObjectManager(objectManager)
|
||||
{
|
||||
m_Animation = new CUnitAnimation(*this);
|
||||
@ -210,7 +206,7 @@ void CUnit::ReloadObject()
|
||||
|
||||
// Copy the old instance-specific settings from the old model to the new instance
|
||||
newModel->SetTransform(m_Model->GetTransform());
|
||||
if (m_PlayerID != CPlayer::invalidId)
|
||||
if (m_PlayerID != invalidPlayerId)
|
||||
newModel->SetPlayerID(m_PlayerID);
|
||||
newModel->CopyAnimationFrom(m_Model);
|
||||
|
||||
|
@ -12,6 +12,14 @@ class CEntity;
|
||||
class CSkeletonAnim;
|
||||
class CUnitAnimation;
|
||||
|
||||
// note: we can't declare as static const size_t invalidId = size_t(~0) in
|
||||
// the class because it seems to be a grey area in the C++ standard whether
|
||||
// or not the constant is propagated or needs an external definition.
|
||||
// an enum causes conversion warnings in MSC, so we go with a file-scope
|
||||
// constant.
|
||||
const size_t invalidUnitId = ~size_t(0);
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// CUnit: simple "actor" definition - defines a sole object within the world
|
||||
class CUnit : boost::noncopyable
|
||||
@ -74,7 +82,6 @@ public:
|
||||
// Most units have a hopefully-unique ID number, so they can be referred to
|
||||
// persistently despite saving/loading maps. Default for new units is -1; should
|
||||
// usually be set to CUnitManager::GetNewID() after creation.
|
||||
static const size_t invalidId = ~(size_t)0;
|
||||
size_t GetID() const { return m_ID; }
|
||||
void SetID(size_t id) { m_ID = id; }
|
||||
|
||||
|
@ -138,7 +138,7 @@ CUnit* CUnitManager::CreateUnit(const CStr& actorName, CEntity* entity, const st
|
||||
// FindByID
|
||||
CUnit* CUnitManager::FindByID(size_t id) const
|
||||
{
|
||||
if (id == CUnit::invalidId)
|
||||
if (id == invalidUnitId)
|
||||
return NULL;
|
||||
|
||||
for (size_t i = 0; i < m_Units.size(); ++i)
|
||||
|
@ -21,6 +21,8 @@ enum EDiplomaticStance
|
||||
DIPLOMACY_ALLIED
|
||||
};
|
||||
|
||||
const size_t invalidPlayerId = ~size_t(0); // rationale: see Unit.h
|
||||
|
||||
class CPlayer : public CSynchedJSObject<CPlayer>
|
||||
{
|
||||
public:
|
||||
@ -46,7 +48,6 @@ public:
|
||||
|
||||
bool ValidateCommand(CNetMessage *pMsg);
|
||||
|
||||
static const size_t invalidId = ~(size_t)0;
|
||||
inline size_t GetPlayerID() const
|
||||
{ return m_PlayerID; }
|
||||
inline void SetPlayerID(size_t id)
|
||||
|
@ -152,7 +152,7 @@ CEntity::~CEntity()
|
||||
|
||||
void CEntity::LoadBase()
|
||||
{
|
||||
size_t previous_unit_id = CUnit::invalidId;
|
||||
size_t previous_unit_id = invalidUnitId;
|
||||
|
||||
if( m_actor )
|
||||
{
|
||||
|
@ -241,7 +241,7 @@ END_COMMAND(SetObjectSettings);
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
static size_t g_PreviewUnitID = CUnit::invalidId;
|
||||
static size_t g_PreviewUnitID = invalidUnitId;
|
||||
static CStrW g_PreviewUnitName;
|
||||
static bool g_PreviewUnitFloating;
|
||||
|
||||
@ -306,7 +306,7 @@ MESSAGEHANDLER(ObjectPreview)
|
||||
previewUnit = NULL;
|
||||
}
|
||||
|
||||
g_PreviewUnitID = CUnit::invalidId;
|
||||
g_PreviewUnitID = invalidUnitId;
|
||||
|
||||
bool isEntity;
|
||||
CStrW name;
|
||||
@ -519,7 +519,7 @@ QUERYHANDLER(PickObject)
|
||||
if (target)
|
||||
msg->id = target->GetID();
|
||||
else
|
||||
msg->id = CUnit::invalidId;
|
||||
msg->id = invalidUnitId;
|
||||
|
||||
if (target)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user