cleaned up the cliff coding; hopefully really no more flickering now

This commit is contained in:
Titus Tscharntke 2011-02-08 20:59:34 +00:00
parent 5623866779
commit e20162a3c4
4 changed files with 20 additions and 25 deletions

View File

@ -188,9 +188,9 @@ Checksum Map::load(const string &path, TechTree *techTree, Tileset *tileset) {
//desc = header.description;
}
else if(header.version==2){
//desc = header.extension_data.extension_data.version2.short_desc;
if(header.extension_data.version2.cliffLevel>0){
cliffLevel=static_cast<float>((header.extension_data.version2.cliffLevel)/heightFactor);
//desc = header.version2.short_desc;
if(header.version2.cliffLevel>0){
cliffLevel=static_cast<float>((header.version2.cliffLevel-0.01f)/(heightFactor));
}
else {
cliffLevel=0;
@ -1098,7 +1098,7 @@ void Map::smoothSurface(Tileset *tileset) {
for (int i = 0; i < getSurfaceCellArraySize(); ++i) {
oldHeights[i] = surfaceCells[i].getHeight();
}
printf("argh %f\n",cliffLevel);
for (int i = 1; i < surfaceW - 1; ++i) {
for (int j = 1; j < surfaceH - 1; ++j) {
float height = 0.f;

View File

@ -60,19 +60,6 @@ static const int DEFAULT_CLIFF_HEIGHT = 0;
static const int MAP_FORMAT_VERSION=2;
typedef union {
int8 description[MAX_DESCRIPTION_LENGTH];
struct {
int8 short_desc[MAX_DESCRIPTION_LENGTH_VERSION2];
int32 magic; // 0x01020304 for meta
int32 cliffLevel;
int8 meta[120];
} version2;
} uniondata;
struct MapFileHeader {
int32 version;
int32 maxFactions;
@ -82,7 +69,15 @@ struct MapFileHeader {
int32 waterLevel;
int8 title[MAX_TITLE_LENGTH];
int8 author[MAX_AUTHOR_LENGTH];
uniondata extension_data;
union {
int8 description[MAX_DESCRIPTION_LENGTH];
struct {
int8 short_desc[MAX_DESCRIPTION_LENGTH_VERSION2];
int32 magic; // 0x01020304 for meta
int32 cliffLevel;
int8 meta[120];
} version2;
};
};
// ===============================================

View File

@ -137,13 +137,13 @@ void ModelRendererGl::renderMesh(Mesh *mesh) {
//assertions
assertGl();
glPolygonOffset(0.05f, 0.0f);
//set cull face
if(mesh->getTwoSided()) {
glDisable(GL_CULL_FACE);
}
else{
glEnable(GL_CULL_FACE);
glPolygonOffset(0.05f, 0.0f);
}
//set color

View File

@ -669,11 +669,11 @@ void MapPreview::loadFromFile(const string &path) {
author = header.author;
cliffLevel = 0;
if(header.version==1){
desc = header.extension_data.description;
desc = header.description;
}
else if(header.version==2){
desc = header.extension_data.version2.short_desc;
cliffLevel=header.extension_data.version2.cliffLevel;
desc = header.version2.short_desc;
cliffLevel=header.version2.cliffLevel;
}
//read start locations
@ -738,9 +738,9 @@ void MapPreview::saveToFile(const string &path) {
header.waterLevel = waterLevel;
strncpy(header.title, title.c_str(), MAX_TITLE_LENGTH);
strncpy(header.author, author.c_str(), MAX_AUTHOR_LENGTH);
strncpy(header.extension_data.version2.short_desc, desc.c_str(), MAX_DESCRIPTION_LENGTH_VERSION2);
header.extension_data.version2.magic= 0x01020304;
header.extension_data.version2.cliffLevel= cliffLevel;
strncpy(header.version2.short_desc, desc.c_str(), MAX_DESCRIPTION_LENGTH_VERSION2);
header.version2.magic= 0x01020304;
header.version2.cliffLevel= cliffLevel;
fwrite(&header, sizeof(MapFileHeader), 1, f1);