|
|
@@ -42,7 +42,8 @@ private:
|
|
|
|
|
|
|
|
|
RegionMap::RegionMap(TransportKeyStore& store) : _store(&store) {
|
|
|
- next_id = 1; num_regions = 0; home_id = 0;
|
|
|
+ next_id = 1; num_regions = 0;
|
|
|
+ default_id = home_id = 0;
|
|
|
wildcard.id = wildcard.parent = 0;
|
|
|
wildcard.flags = 0; // default behaviour, allow flood and direct
|
|
|
strcpy(wildcard.name, "*");
|
|
|
@@ -79,9 +80,11 @@ bool RegionMap::load(FILESYSTEM* _fs, const char* path) {
|
|
|
if (file) {
|
|
|
uint8_t pad[128];
|
|
|
|
|
|
- num_regions = 0; next_id = 1; home_id = 0;
|
|
|
+ num_regions = 0; next_id = 1;
|
|
|
+ default_id = home_id = 0;
|
|
|
|
|
|
- bool success = file.read(pad, 5) == 5; // reserved header
|
|
|
+ bool success = file.read(pad, 3) == 3; // reserved header
|
|
|
+ success = success && file.read((uint8_t *) &default_id, sizeof(default_id)) == sizeof(default_id);
|
|
|
success = success && file.read((uint8_t *) &home_id, sizeof(home_id)) == sizeof(home_id);
|
|
|
success = success && file.read((uint8_t *) &wildcard.flags, sizeof(wildcard.flags)) == sizeof(wildcard.flags);
|
|
|
success = success && file.read((uint8_t *) &next_id, sizeof(next_id)) == sizeof(next_id);
|
|
|
@@ -117,7 +120,8 @@ bool RegionMap::save(FILESYSTEM* _fs, const char* path) {
|
|
|
uint8_t pad[128];
|
|
|
memset(pad, 0, sizeof(pad));
|
|
|
|
|
|
- bool success = file.write(pad, 5) == 5; // reserved header
|
|
|
+ bool success = file.write(pad, 3) == 3; // reserved header
|
|
|
+ success = success && file.write((uint8_t *) &default_id, sizeof(default_id)) == sizeof(default_id);
|
|
|
success = success && file.write((uint8_t *) &home_id, sizeof(home_id)) == sizeof(home_id);
|
|
|
success = success && file.write((uint8_t *) &wildcard.flags, sizeof(wildcard.flags)) == sizeof(wildcard.flags);
|
|
|
success = success && file.write((uint8_t *) &next_id, sizeof(next_id)) == sizeof(next_id);
|
|
|
@@ -237,6 +241,14 @@ void RegionMap::setHomeRegion(const RegionEntry* home) {
|
|
|
home_id = home ? home->id : 0;
|
|
|
}
|
|
|
|
|
|
+RegionEntry* RegionMap::getDefaultRegion() {
|
|
|
+ return findById(default_id);
|
|
|
+}
|
|
|
+
|
|
|
+void RegionMap::setDefaultRegion(const RegionEntry* def) {
|
|
|
+ default_id = def ? def->id : 0;
|
|
|
+}
|
|
|
+
|
|
|
bool RegionMap::removeRegion(const RegionEntry& region) {
|
|
|
if (region.id == 0) return false; // failed (cannot remove the wildcard Region)
|
|
|
|