summaryrefslogtreecommitdiffstats
path: root/src/graphics/engine/terrain.cpp
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-09-22 17:36:10 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-09-22 17:36:10 +0200
commitb1edcc822f95bdf619e1164e0d42325a71073452 (patch)
treebe8c39560b809ab0f75143df3960323b135cca6b /src/graphics/engine/terrain.cpp
parentfd09071c29452bdfea2c519f0defbffebee42f4c (diff)
downloadcolobot-b1edcc822f95bdf619e1164e0d42325a71073452.tar.gz
colobot-b1edcc822f95bdf619e1164e0d42325a71073452.tar.bz2
colobot-b1edcc822f95bdf619e1164e0d42325a71073452.zip
Various fixes
- disabled UserDir() in path lookup - fixed crashes on loading missions in CObject - fixed texture bug in CTerrain - changed mouse move event handling to avoid flooding event queue - enabled all missions for testing
Diffstat (limited to 'src/graphics/engine/terrain.cpp')
-rw-r--r--src/graphics/engine/terrain.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/graphics/engine/terrain.cpp b/src/graphics/engine/terrain.cpp
index 427e7f6..d70ba0c 100644
--- a/src/graphics/engine/terrain.cpp
+++ b/src/graphics/engine/terrain.cpp
@@ -131,14 +131,15 @@ bool CTerrain::InitTextures(const std::string& baseName, int* table, int dx, int
m_texBaseName = baseName;
size_t pos = baseName.find('.');
- if (pos == baseName.npos)
+
+ if (pos == std::string::npos)
{
m_texBaseExt = ".png";
}
else
{
- m_texBaseName = m_texBaseName.substr(0, pos);
m_texBaseExt = m_texBaseName.substr(pos);
+ m_texBaseName = m_texBaseName.substr(0, pos);
}
for (int y = 0; y < m_mosaicCount*m_textureSubdivCount; y++)
@@ -197,8 +198,12 @@ void CTerrain::AddMaterial(int id, const std::string& texName, const Math::Point
bool CTerrain::LoadResources(const std::string& fileName)
{
CImage img;
- if (! img.Load(CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName)))
+ std::string path = CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName);
+ if (! img.Load(path))
+ {
+ GetLogger()->Error("Cannot load resource file: '%s'\n", path.c_str());
return false;
+ }
ImageData *data = img.GetData();
@@ -210,7 +215,10 @@ bool CTerrain::LoadResources(const std::string& fileName)
if ( (data->surface->w != size) || (data->surface->h != size) ||
(data->surface->format->BytesPerPixel != 3) )
+ {
+ GetLogger()->Error("Invalid resource file\n");
return false;
+ }
unsigned char* pixels = static_cast<unsigned char*>(data->surface->pixels);
int pitch = data->surface->pitch;
@@ -263,13 +271,17 @@ void CTerrain::FlushRelief()
* The image must be 24 bits/pixel and dx x dy in size
* with dx = dy = (mosaic*brick)+1 */
bool CTerrain::LoadRelief(const std::string &fileName, float scaleRelief,
- bool adjustBorder)
+ bool adjustBorder)
{
m_scaleRelief = scaleRelief;
CImage img;
- if (! img.Load(CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName)))
+ std::string path = CApplication::GetInstance().GetDataFilePath(DIR_TEXTURE, fileName);
+ if (! img.Load(path))
+ {
+ GetLogger()->Error("Could not load relief file: '%s'!\n", path.c_str());
return false;
+ }
ImageData *data = img.GetData();
@@ -277,7 +289,10 @@ bool CTerrain::LoadRelief(const std::string &fileName, float scaleRelief,
if ( (data->surface->w != size) || (data->surface->h != size) ||
(data->surface->format->BytesPerPixel != 3) )
+ {
+ GetLogger()->Error("Invalid relief file!\n");
return false;
+ }
unsigned char* pixels = static_cast<unsigned char*>(data->surface->pixels);
int pitch = data->surface->pitch;
@@ -655,7 +670,7 @@ void CTerrain::GetTexture(int x, int y, std::string& name, Math::Point &uv)
TerrainMaterial* tm = FindMaterial(m_materialPoints[x+y*m_materialPointCount].id);
if (tm == nullptr)
{
- name = "xxx.png";
+ name = "";
uv = Math::Point(0.0f, 0.0f);
}
else