2008-03-24 16:43:51 +00:00

74 lines
1.3 KiB
C++

#include "common.h"
#include "MapMgr.h"
#include "WorldSession.h"
#include "World.h"
World::World(WorldSession *s)
{
_session = s;
_mapId = -1;
_mapmgr = NULL;
if(_session->GetInstance()->GetConf()->useMaps)
_mapmgr = new MapMgr();
}
World::~World()
{
Clear();
if(_mapmgr)
delete _mapmgr;
}
// called on SMSG_NEW_WORLD
void World::Clear(void)
{
if(_mapmgr)
{
_mapmgr->Flush();
}
// TODO: clear WorldStates (-> SMSG_INIT_WORLD_STATES ?) and everything else thats required
}
void World::Update(void)
{
if(_mapId == uint32(-1)) // to prevent unexpected behaviour
return;
if(_mapmgr)
{
_mapmgr->Update(_x,_y,_mapId);
}
// some debug code for testing...
/*if(_mapmgr && _x != _lastx || _y != _lasty)
{
logdetail("WORLD: relocation, to x=%f y=%f, calculated z=%f",_x,_y,this->GetPosZ(_x,_y));
_lastx = _x;
_lasty = _y;
}*/
}
void World::UpdatePos(float x, float y, uint32 m)
{
_mapId = m;
UpdatePos(x,y);
}
void World::UpdatePos(float x, float y)
{
_x = x;
_y = y;
Update();
}
float World::GetPosZ(float x, float y)
{
if(_mapmgr)
return _mapmgr->GetZ(x,y);
logdebug("WORLD: GetPosZ() called, but no MapMgr exists (do you really use maps?)");
return 0;
}