#endif
#include "util/string.h"
#include "util/serialize.h"
-
-#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
+#include "util/basic_macros.h"
static const char *modified_reason_strings[] = {
"initial",
m_modified(MOD_STATE_WRITE_NEEDED),
m_modified_reason(MOD_REASON_INITIAL),
is_underground(false),
- m_lighting_expired(true),
+ m_lighting_complete(0xFFFF),
m_day_night_differs(false),
m_day_night_differs_expired(true),
m_generated(false),
flags |= 0x01;
if(getDayNightDiff())
flags |= 0x02;
- if(m_lighting_expired)
- flags |= 0x04;
if(m_generated == false)
flags |= 0x08;
writeU8(os, flags);
+ if (version >= 27) {
+ writeU16(os, m_lighting_complete);
+ }
/*
Bulk node data
}
}
-void MapBlock::serializeNetworkSpecific(std::ostream &os, u16 net_proto_version)
+void MapBlock::serializeNetworkSpecific(std::ostream &os)
{
- if(data == NULL)
- {
+ if (!data) {
throw SerializationError("ERROR: Not writing dummy block.");
}
- if(net_proto_version >= 21){
- int version = 1;
- writeU8(os, version);
- writeF1000(os, 0); // deprecated heat
- writeF1000(os, 0); // deprecated humidity
- }
+ writeU8(os, 1); // version
+ writeF1000(os, 0); // deprecated heat
+ writeF1000(os, 0); // deprecated humidity
}
void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
u8 flags = readU8(is);
is_underground = (flags & 0x01) ? true : false;
m_day_night_differs = (flags & 0x02) ? true : false;
- m_lighting_expired = (flags & 0x04) ? true : false;
+ if (version < 27) {
+ m_lighting_complete = 0xFFFF;
+ } else {
+ m_lighting_complete = readU16(is);
+ }
m_generated = (flags & 0x08) ? false : true;
/*
&m_node_metadata, &m_node_timers,
m_gamedef->idef());
} catch(SerializationError &e) {
- errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
+ warningstream<<"MapBlock::deSerialize(): Ignoring an error"
<<" while deserializing node metadata at ("
<<PP(getPos())<<": "<<e.what()<<std::endl;
}
}
catch(SerializationError &e)
{
- errorstream<<"WARNING: MapBlock::deSerializeNetworkSpecific(): Ignoring an error"
+ warningstream<<"MapBlock::deSerializeNetworkSpecific(): Ignoring an error"
<<": "<<e.what()<<std::endl;
}
}
// Initialize default flags
is_underground = false;
m_day_night_differs = false;
- m_lighting_expired = false;
+ m_lighting_complete = 0xFFFF;
m_generated = true;
// Make a temporary buffer
char tmp;
is.read(&tmp, 1);
if (is.gcount() != 1)
- throw SerializationError(std::string(__FUNCTION_NAME)
- + ": no enough input data");
+ throw SerializationError(std::string(FUNCTION_NAME)
+ + ": not enough input data");
is_underground = tmp;
is.read((char *)*databuf_nodelist, nodecount * ser_length);
if ((u32)is.gcount() != nodecount * ser_length)
- throw SerializationError(std::string(__FUNCTION_NAME)
- + ": no enough input data");
+ throw SerializationError(std::string(FUNCTION_NAME)
+ + ": not enough input data");
} else if (version <= 10) {
u8 t8;
is.read((char *)&t8, 1);
decompress(is, os, version);
std::string s = os.str();
if (s.size() != nodecount)
- throw SerializationError(std::string(__FUNCTION_NAME)
- + ": no enough input data");
+ throw SerializationError(std::string(FUNCTION_NAME)
+ + ": not enough input data");
for (u32 i = 0; i < s.size(); i++) {
databuf_nodelist[i*ser_length] = s[i];
}
decompress(is, os, version);
std::string s = os.str();
if (s.size() != nodecount)
- throw SerializationError(std::string(__FUNCTION_NAME)
- + ": no enough input data");
+ throw SerializationError(std::string(FUNCTION_NAME)
+ + ": not enough input data");
for (u32 i = 0; i < s.size(); i++) {
databuf_nodelist[i*ser_length + 1] = s[i];
}
decompress(is, os, version);
std::string s = os.str();
if (s.size() != nodecount)
- throw SerializationError(std::string(__FUNCTION_NAME)
- + ": no enough input data");
+ throw SerializationError(std::string(FUNCTION_NAME)
+ + ": not enough input data");
for (u32 i = 0; i < s.size(); i++) {
databuf_nodelist[i*ser_length + 2] = s[i];
}
is.read((char*)&flags, 1);
is_underground = (flags & 0x01) ? true : false;
m_day_night_differs = (flags & 0x02) ? true : false;
- m_lighting_expired = (flags & 0x04) ? true : false;
if(version >= 18)
m_generated = (flags & 0x08) ? false : true;
decompress(is, os, version);
std::string s = os.str();
if (s.size() != nodecount * 3)
- throw SerializationError(std::string(__FUNCTION_NAME)
+ throw SerializationError(std::string(FUNCTION_NAME)
+ ": decompress resulted in size other than nodecount*3");
// deserialize nodes from buffer
m_gamedef->idef());
}
} catch(SerializationError &e) {
- errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
+ warningstream<<"MapBlock::deSerialize(): Ignoring an error"
<<" while deserializing node metadata"<<std::endl;
}
}
u16 count = readU16(is);
// Not supported and length not known if count is not 0
if(count != 0){
- errorstream<<"WARNING: MapBlock::deSerialize_pre22(): "
+ warningstream<<"MapBlock::deSerialize_pre22(): "
<<"Ignoring stuff coming at and after MBOs"<<std::endl;
return;
}
else
desc<<"is_ug [ ], ";
- if(block->getLightingExpired())
- desc<<"lighting_exp [X], ";
- else
- desc<<"lighting_exp [ ], ";
+ desc<<"lighting_complete: "<<block->getLightingComplete()<<", ";
if(block->isDummy())
{