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

View File

@ -60,19 +60,6 @@ static const int DEFAULT_CLIFF_HEIGHT = 0;
static const int MAP_FORMAT_VERSION=2; 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 { struct MapFileHeader {
int32 version; int32 version;
int32 maxFactions; int32 maxFactions;
@ -82,7 +69,15 @@ struct MapFileHeader {
int32 waterLevel; int32 waterLevel;
int8 title[MAX_TITLE_LENGTH]; int8 title[MAX_TITLE_LENGTH];
int8 author[MAX_AUTHOR_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 //assertions
assertGl(); assertGl();
glPolygonOffset(0.05f, 0.0f);
//set cull face //set cull face
if(mesh->getTwoSided()) { if(mesh->getTwoSided()) {
glDisable(GL_CULL_FACE); glDisable(GL_CULL_FACE);
} }
else{ else{
glEnable(GL_CULL_FACE); glEnable(GL_CULL_FACE);
glPolygonOffset(0.05f, 0.0f);
} }
//set color //set color

View File

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