Skip to content

Commit

Permalink
[10596] Apply restrictions to vmap options.
Browse files Browse the repository at this point in the history
After switch to new vmap version and later height check code chnages
some vmap related options now outdated.

* Option vmap.ignoreMapIds removed. You can't now diable vmaps use for selected maps.
* Option vmap.enableHeight must be always enabled for normal work server and server
  at startup now pring error if it's diabled. Option still supported just for special
  work cases (debug, new clients testing, etc).

Possible soon option vmap.ignoreSpellIds also will be removed, because like los ignore checks
must be in spell code instead options.
  • Loading branch information
VladimirMangos committed Oct 8, 2010
1 parent 203bc43 commit 797f0ba
Show file tree
Hide file tree
Showing 6 changed files with 8 additions and 52 deletions.
10 changes: 6 additions & 4 deletions src/game/World.cpp
Expand Up @@ -857,15 +857,17 @@ void World::LoadConfigSettings(bool reload)
setConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK, "vmap.enableIndoorCheck", true);
bool enableLOS = sConfig.GetBoolDefault("vmap.enableLOS", false);
bool enableHeight = sConfig.GetBoolDefault("vmap.enableHeight", false);
std::string ignoreMapIds = sConfig.GetStringDefault("vmap.ignoreMapIds", "");
std::string ignoreSpellIds = sConfig.GetStringDefault("vmap.ignoreSpellIds", "");

if (!enableHeight)
sLog.outError("VMAP height use disabled! Creatures movements and other things will be in broken state.");

VMAP::VMapFactory::createOrGetVMapManager()->setEnableLineOfSightCalc(enableLOS);
VMAP::VMapFactory::createOrGetVMapManager()->setEnableHeightCalc(enableHeight);
VMAP::VMapFactory::createOrGetVMapManager()->preventMapsFromBeingUsed(ignoreMapIds.c_str());
VMAP::VMapFactory::preventSpellsFromBeingTestedForLoS(ignoreSpellIds.c_str());
sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i",enableLOS, enableHeight);
sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i, indoorCheck:%i",
enableLOS, enableHeight, getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) ? 1 : 0);
sLog.outString( "WORLD: VMap data directory is: %svmaps",m_dataPath.c_str());
sLog.outString( "WORLD: VMap config keys are: vmap.enableLOS, vmap.enableHeight, vmap.ignoreMapIds, vmap.ignoreSpellIds");
}

/// Initialize the World
Expand Down
6 changes: 0 additions & 6 deletions src/mangosd/mangosd.conf.dist.in
Expand Up @@ -137,12 +137,6 @@ BindIP = "0.0.0.0"
# Default: 0 (disable)
# 1 (enable)
#
# vmap.ignoreMapIds
# Map id that will be ignored by VMaps
# List of ids with delimiter ','
# If more then one id is defined and spaces are included, the string has to be enclosed by "
# Example: "369,0,1,530"
#
# vmap.ignoreSpellIds
# These spells are ignored for LoS calculation
# List of ids with delimiter ','
Expand Down
2 changes: 1 addition & 1 deletion src/shared/revision_nr.h
@@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "10595"
#define REVISION_NR "10596"
#endif // __REVISION_NR_H__
6 changes: 0 additions & 6 deletions src/shared/vmap/IVMapManager.h
Expand Up @@ -89,12 +89,6 @@ namespace VMAP

virtual std::string getDirFileName(unsigned int pMapId, int x, int y) const =0;
/**
Block maps from being used.
parameter: String of map ids. Delimiter = ","
e.g.: "0,1,530"
*/
virtual void preventMapsFromBeingUsed(const char* pMapIdString) =0;
/**
Query world model area info.
\param z gets adjusted to the ground height for which this are info is valid
*/
Expand Down
33 changes: 1 addition & 32 deletions src/shared/vmap/VMapManager2.cpp
Expand Up @@ -87,43 +87,12 @@ namespace VMAP
return fname.str();
}

//=========================================================
/**
Block maps from being used.
parameter: String of map ids. Delimiter = ","
e.g.: "0,1,590"
*/

void VMapManager2::preventMapsFromBeingUsed(const char* pMapIdString)
{
iIgnoreMapIds.clear();
if (pMapIdString != NULL)
{
std::string map_str;
std::stringstream map_ss;
map_ss.str(std::string(pMapIdString));
while (std::getline(map_ss, map_str, ','))
{
std::stringstream ss2(map_str);
int map_num = -1;
ss2 >> map_num;
if (map_num >= 0)
{
DETAIL_LOG("Ignoring Map %i for VMaps", map_num);
iIgnoreMapIds[map_num] = true;
// unload map in case it is loaded
unloadMap(map_num);
}
}
}
}

//=========================================================

VMAPLoadResult VMapManager2::loadMap(const char* pBasePath, unsigned int pMapId, int x, int y)
{
VMAPLoadResult result = VMAP_LOAD_RESULT_IGNORED;
if (isMapLoadingEnabled() && !iIgnoreMapIds.count(pMapId))
if (isMapLoadingEnabled())
{
if (_loadMap(pMapId, pBasePath, x, y))
result = VMAP_LOAD_RESULT_OK;
Expand Down
3 changes: 0 additions & 3 deletions src/shared/vmap/VMapManager2.h
Expand Up @@ -67,8 +67,6 @@ namespace VMAP
// Tree to check collision
ModelFileMap iLoadedModelFiles;
InstanceTreeMap iInstanceMapTrees;
// UNORDERED_MAP<unsigned int , bool> iMapsSplitIntoTiles;
UNORDERED_MAP<unsigned int , bool> iIgnoreMapIds;

bool _loadMap(uint32 pMapId, const std::string &basePath, uint32 tileX, uint32 tileY);
/* void _unloadMap(uint32 pMapId, uint32 x, uint32 y); */
Expand Down Expand Up @@ -96,7 +94,6 @@ namespace VMAP

bool processCommand(char *pCommand) { return false; } // for debug and extensions

void preventMapsFromBeingUsed(const char* pMapIdString);
bool getAreaInfo(unsigned int pMapId, float x, float y, float &z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const;
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 ReqLiquidType, float &level, float &floor, uint32 &type) const;

Expand Down

0 comments on commit 797f0ba

Please sign in to comment.