NS/releases/3.04/source/mod/AvHMapExtents.cpp
tankefugl 19b458f8bc Branched for 3.0.4 balance
git-svn-id: https://unknownworlds.svn.cloudforge.com/ns1@141 67975925-1194-0748-b3d5-c16f83f1a3a1
2005-05-29 10:59:29 +00:00

195 lines
3.7 KiB
C++

#include "util/nowarnings.h"
#include "types.h"
#include "mod/AvHMapExtents.h"
#include "mod/AvHConstants.h"
#ifdef AVH_SERVER
#include "dlls/extdll.h"
#include "util.h"
#include "dlls/cbase.h"
#include "engine/shake.h"
#include "dlls/decals.h"
#include "dlls/gamerules.h"
#include "mod/AvHServerUtil.h"
#endif
#ifdef AVH_CLIENT
#include "cl_dll/parsemsg.h"
#endif
AvHMapExtents::AvHMapExtents()
{
this->ResetMapExtents();
}
#ifdef AVH_SERVER
void AvHMapExtents::CalculateMapExtents()
{
if(!this->mCalculatedMapExtents)
{
// Fetch from map extents entity if the map has one
FOR_ALL_ENTITIES(kwsMapInfoClassName, AvHMapInfo*)
*this = theEntity->GetMapExtents();
END_FOR_ALL_ENTITIES(kwsMapInfoClassName)
this->mCalculatedMapExtents = true;
}
}
#endif
void AvHMapExtents::ResetMapExtents()
{
// Set defaults
this->mMaxViewHeight = kDefaultViewHeight;
this->mMinViewHeight = kDefaultMinMapExtent;
this->mMinMapX = this->mMinMapY = kDefaultMinMapExtent;
this->mMaxMapX = this->mMaxMapY = kDefaultMaxMapExtent;
this->mDrawMapBG = true;
this->mCalculatedMapExtents = false;
#ifdef AVH_SERVER
this->mTopDownCullDistance = kMaxRelevantCullDistance;
#endif
}
float AvHMapExtents::GetMinViewHeight() const
{
return this->mMinViewHeight;
}
float AvHMapExtents::GetMaxViewHeight() const
{
return this->mMaxViewHeight;
}
void AvHMapExtents::SetMinViewHeight(float inViewHeight)
{
this->mMinViewHeight = inViewHeight;
}
void AvHMapExtents::SetMaxViewHeight(float inViewHeight)
{
this->mMaxViewHeight = inViewHeight;
}
float AvHMapExtents::GetMinMapX() const
{
return this->mMinMapX;
}
float AvHMapExtents::GetMaxMapX() const
{
return this->mMaxMapX;
}
void AvHMapExtents::SetMinMapX(float inMapX)
{
this->mMinMapX = inMapX;
if(this->mMinMapX < -kMaxMapDimension)
{
this->mMinMapX = -kMaxMapDimension;
}
}
void AvHMapExtents::SetMaxMapX(float inMapX)
{
this->mMaxMapX = inMapX;
if(this->mMaxMapX > kMaxMapDimension)
{
this->mMaxMapX = kMaxMapDimension;
}
}
float AvHMapExtents::GetMinMapY() const
{
return this->mMinMapY;
}
float AvHMapExtents::GetMaxMapY() const
{
return this->mMaxMapY;
}
void AvHMapExtents::SetMinMapY(float inMapY)
{
this->mMinMapY = inMapY;
if(this->mMinMapY < -kMaxMapDimension)
{
this->mMinMapY = -kMaxMapDimension;
}
}
void AvHMapExtents::SetMaxMapY(float inMapY)
{
this->mMaxMapY = inMapY;
if(this->mMaxMapY > kMaxMapDimension)
{
this->mMaxMapY = kMaxMapDimension;
}
}
bool AvHMapExtents::GetDrawMapBG() const
{
return this->mDrawMapBG;
}
void AvHMapExtents::SetDrawMapBG(bool inDrawMapBG)
{
this->mDrawMapBG = inDrawMapBG;
}
#ifdef AVH_SERVER
float AvHMapExtents::GetTopDownCullDistance() const
{
return this->mTopDownCullDistance;
}
void AvHMapExtents::SetTopDownCullDistance(float inCullDistance)
{
ASSERT(inCullDistance > 0);
this->mTopDownCullDistance = inCullDistance;
}
void AvHMapExtents::SendToNetworkStream() const
{
WRITE_COORD(this->mMinViewHeight);
WRITE_COORD(this->mMaxViewHeight);
WRITE_COORD(this->mMinMapX);
WRITE_COORD(this->mMinMapY);
WRITE_COORD(this->mMaxMapX);
WRITE_COORD(this->mMaxMapY);
WRITE_BYTE(this->mDrawMapBG);
}
#endif
#ifdef AVH_CLIENT
int AvHMapExtents::ReceiveFromNetworkStream()
{
int theBytesRead = 0;
this->mMinViewHeight = READ_COORD();
this->mMaxViewHeight = READ_COORD();
this->mMinMapX = READ_COORD();
this->mMinMapY = READ_COORD();
this->mMaxMapX = READ_COORD();
this->mMaxMapY = READ_COORD();
theBytesRead += 2*6;
this->mDrawMapBG = READ_BYTE();
theBytesRead++;
return theBytesRead;
}
#endif