Generated stuff removal done, closes #27
This commit is contained in:
@@ -52,6 +52,7 @@ void StreamWorld::read_buildings_json(const String &buildings_path)
|
|||||||
e = e->next();
|
e = e->next();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
filter_generated_stuff();
|
||||||
print_line("entries count: " + itos(buildings.size()));
|
print_line("entries count: " + itos(buildings.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,6 +62,7 @@ void StreamWorld::save_buildings_json(const String &buildings_path)
|
|||||||
String buildings_json = FileAccess::get_file_as_string(buildings_path);
|
String buildings_json = FileAccess::get_file_as_string(buildings_path);
|
||||||
String backup_path = buildings_path + ".bak";
|
String backup_path = buildings_path + ".bak";
|
||||||
String store_path = buildings_path;
|
String store_path = buildings_path;
|
||||||
|
filter_generated_stuff();
|
||||||
FileAccess *fa = FileAccess::open(backup_path, FileAccess::WRITE);
|
FileAccess *fa = FileAccess::open(backup_path, FileAccess::WRITE);
|
||||||
fa->store_string(buildings_json);
|
fa->store_string(buildings_json);
|
||||||
fa->close();
|
fa->close();
|
||||||
@@ -87,6 +89,7 @@ void StreamWorld::building::from_dict(building *b, const Dictionary &dict,
|
|||||||
b->xform = from_string<Transform>(key);
|
b->xform = from_string<Transform>(key);
|
||||||
b->id = dict.get("id", "empty");
|
b->id = dict.get("id", "empty");
|
||||||
b->pattern_id = dict.get("pattern_id", 0);
|
b->pattern_id = dict.get("pattern_id", 0);
|
||||||
|
b->generated = dict.get("generated", false);
|
||||||
Array residents = dict.get("residents", Array());
|
Array residents = dict.get("residents", Array());
|
||||||
b->residents.resize(residents.size());
|
b->residents.resize(residents.size());
|
||||||
for (i = 0; i < (int)residents.size(); i++)
|
for (i = 0; i < (int)residents.size(); i++)
|
||||||
@@ -130,6 +133,7 @@ Dictionary StreamWorld::building::to_dict() const
|
|||||||
Dictionary ret;
|
Dictionary ret;
|
||||||
ret["id"] = id;
|
ret["id"] = id;
|
||||||
ret["pattern_id"] = pattern_id;
|
ret["pattern_id"] = pattern_id;
|
||||||
|
ret["generated"] = generated;
|
||||||
Array r, w, g;
|
Array r, w, g;
|
||||||
v2a(r, residents);
|
v2a(r, residents);
|
||||||
ret["residents"] = r;
|
ret["residents"] = r;
|
||||||
@@ -378,25 +382,33 @@ void StreamWorld::update_items()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StreamWorld::remove_generated_stuff()
|
void StreamWorld::filter_generated_stuff()
|
||||||
{
|
{
|
||||||
ConfigFile config;
|
ConfigFile config;
|
||||||
Error result = config.load("res://config/stream.conf");
|
Error result = config.load("res://config/stream.conf");
|
||||||
ERR_FAIL_COND_MSG(result != OK, "Failed to load config");
|
ERR_FAIL_COND_MSG(result != OK, "Failed to load config");
|
||||||
Array gen_prefixes = config.get_value("lines", "gen_prefixes");
|
Array gen_prefixes = config.get_value("lines", "gen_prefixes");
|
||||||
// TODO: implement
|
|
||||||
std::vector<int> erased_indices;
|
|
||||||
erased_indices.reserve(buildings.size());
|
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = 0; i < (int)buildings.size(); i++) {
|
for (i = 0; i < (int)buildings.size(); i++) {
|
||||||
for (j = 0; j < (int)gen_prefixes.size(); j++) {
|
for (j = 0; j < (int)gen_prefixes.size(); j++) {
|
||||||
String prefix = gen_prefixes[j];
|
String prefix = gen_prefixes[j];
|
||||||
if (buildings[i].id.begins_with(prefix)) {
|
if (buildings[i].id.begins_with(prefix)) {
|
||||||
erased_indices.push_back(i);
|
buildings[i].generated = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StreamWorld::remove_generated_stuff()
|
||||||
|
{
|
||||||
|
std::vector<int> erased_indices;
|
||||||
|
erased_indices.reserve(buildings.size());
|
||||||
|
int i, j;
|
||||||
|
for (i = 0; i < (int)buildings.size(); i++) {
|
||||||
|
if (buildings[i].generated)
|
||||||
|
erased_indices.push_back(i);
|
||||||
|
}
|
||||||
for (i = erased_indices.size() - 1; i >= 0; i--) {
|
for (i = erased_indices.size() - 1; i >= 0; i--) {
|
||||||
int index = erased_indices[i];
|
int index = erased_indices[i];
|
||||||
unload_building(index);
|
unload_building(index);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ private:
|
|||||||
Transform xform;
|
Transform xform;
|
||||||
AABB aabb;
|
AABB aabb;
|
||||||
int worktime[2];
|
int worktime[2];
|
||||||
|
bool generated;
|
||||||
static void from_dict(struct building *b,
|
static void from_dict(struct building *b,
|
||||||
const Dictionary &dict,
|
const Dictionary &dict,
|
||||||
const String &key);
|
const String &key);
|
||||||
@@ -80,6 +81,7 @@ private:
|
|||||||
void unload_building(int id);
|
void unload_building(int id);
|
||||||
void request_item(int type, int item);
|
void request_item(int type, int item);
|
||||||
void update_items();
|
void update_items();
|
||||||
|
void filter_generated_stuff();
|
||||||
void remove_generated_stuff();
|
void remove_generated_stuff();
|
||||||
void remove_building(int index);
|
void remove_building(int index);
|
||||||
void checkpoint();
|
void checkpoint();
|
||||||
|
|||||||
Reference in New Issue
Block a user