From bf3d5c75f0498084b728c20701f6ef64577b3cac Mon Sep 17 00:00:00 2001 From: Ykkrosh Date: Sat, 5 Feb 2011 13:13:57 +0000 Subject: [PATCH] Be more robust to broken terrain property files. This was SVN commit r8888. --- source/graphics/Terrain.cpp | 2 +- source/graphics/TerrainTextureEntry.cpp | 2 ++ source/graphics/TerrainTextureEntry.h | 4 ++-- source/graphics/TerrainTextureManager.cpp | 3 ++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/source/graphics/Terrain.cpp b/source/graphics/Terrain.cpp index 16cda0c2f8..b96462faec 100644 --- a/source/graphics/Terrain.cpp +++ b/source/graphics/Terrain.cpp @@ -98,7 +98,7 @@ CStr8 CTerrain::GetMovementClass(ssize_t i, ssize_t j) const { CMiniPatch* tile = GetTile(i, j); if (tile && tile->GetTextureEntry()) - return tile->GetTextureEntry()->GetProperties()->GetMovementClass(); + return tile->GetTextureEntry()->GetProperties().GetMovementClass(); return "default"; } diff --git a/source/graphics/TerrainTextureEntry.cpp b/source/graphics/TerrainTextureEntry.cpp index d9369eb4f9..3df0b3342d 100644 --- a/source/graphics/TerrainTextureEntry.cpp +++ b/source/graphics/TerrainTextureEntry.cpp @@ -33,6 +33,8 @@ CTerrainTextureEntry::CTerrainTextureEntry(CTerrainPropertiesPtr props, const Vf m_BaseColor(0), m_BaseColorValid(false) { + debug_assert(props); + CTextureProperties texture(path); texture.SetWrap(GL_REPEAT); diff --git a/source/graphics/TerrainTextureEntry.h b/source/graphics/TerrainTextureEntry.h index b0afb38f55..7b720c727b 100644 --- a/source/graphics/TerrainTextureEntry.h +++ b/source/graphics/TerrainTextureEntry.h @@ -68,8 +68,8 @@ public: CStr GetTag() const { return m_Tag; } - CTerrainPropertiesPtr GetProperties() const - { return m_pProperties; } + const CTerrainProperties& GetProperties() const + { return *m_pProperties; } // Get texture handle, load texture if not loaded. const CTexturePtr& GetTexture() { diff --git a/source/graphics/TerrainTextureManager.cpp b/source/graphics/TerrainTextureManager.cpp index d5644864fb..31ada4872e 100644 --- a/source/graphics/TerrainTextureManager.cpp +++ b/source/graphics/TerrainTextureManager.cpp @@ -194,7 +194,8 @@ void CTerrainTextureManager::RecurseDirectory(const CTerrainPropertiesPtr& paren int CTerrainTextureManager::LoadTerrainTextures() { - RecurseDirectory(CTerrainPropertiesPtr(), L"art/textures/terrain/types/"); + CTerrainPropertiesPtr rootProps(new CTerrainProperties(CTerrainPropertiesPtr())); + RecurseDirectory(rootProps, L"art/textures/terrain/types/"); return 0; }