2022-08-08 09:39:42 +00:00
|
|
|
const fs = require("fs");
|
|
|
|
|
|
|
|
const IN_FILE_PATH_PRIMARY = "../run_tree/data/cities_final.json";
|
|
|
|
const IN_FILE_PATH_SECONDARY = "../run_tree/data/cities_secondary_final.json";
|
2022-10-24 21:05:47 +00:00
|
|
|
const OUT_FILE_PATH = "../src/user_space/incenter_gen_cities.h"
|
2022-08-08 09:39:42 +00:00
|
|
|
|
|
|
|
function print_city_desc (city, prefix, dest, gets_own_universe)
|
|
|
|
{
|
|
|
|
const city_ascii = city.city_ascii
|
|
|
|
.toLowerCase()
|
|
|
|
.replaceAll(' ', '_')
|
|
|
|
.replaceAll('-', '_')
|
|
|
|
.replaceAll('\'', '')
|
|
|
|
.replaceAll('`', '');
|
|
|
|
|
|
|
|
const city_id = `${prefix}_${city_ascii}`;
|
|
|
|
const { lat, lng } = city;
|
|
|
|
|
|
|
|
dest.enum_out += ` ${city_id} = ${dest.enum_counter++},\n`;
|
|
|
|
|
|
|
|
const universe = gets_own_universe ? city_id : "incenter_secondary_city_universe";
|
|
|
|
|
|
|
|
dest.desc_out += ` [${city_id}] = {
|
|
|
|
.id = ${city_id},
|
|
|
|
.lat = ${lat},
|
|
|
|
.lon = ${lng},
|
|
|
|
.sacn_universe = ${universe},
|
|
|
|
},\n`;
|
|
|
|
|
|
|
|
dest.strings_out += ` [${city_id}] = "${city_id}",\n`;
|
|
|
|
}
|
|
|
|
|
|
|
|
function main ()
|
|
|
|
{
|
|
|
|
const primary_file = fs.readFileSync(IN_FILE_PATH_PRIMARY, {});
|
|
|
|
const primary_json = JSON.parse(primary_file);
|
|
|
|
|
|
|
|
const secondary_file = fs.readFileSync(IN_FILE_PATH_SECONDARY, {});
|
|
|
|
const secondary_json = JSON.parse(secondary_file);
|
|
|
|
|
|
|
|
let out = "// NOTE: This file is autogenerated by csv_to_cstruct.js\n";
|
|
|
|
|
|
|
|
let enum_counter = 0;
|
|
|
|
let enum_out = "// NOTE: These are values for Incenter_City_Id\nenum {\n";
|
|
|
|
enum_out += ` city_black_rock = ${enum_counter++},\n`;
|
|
|
|
|
|
|
|
let desc_out = "global Incenter_City_Desc city_descs[] = {\n";
|
|
|
|
|
|
|
|
let strings_out = "global char* city_strings[] = {\n";
|
|
|
|
|
|
|
|
let dest = {
|
|
|
|
enum_counter,
|
|
|
|
enum_out,
|
|
|
|
desc_out,
|
|
|
|
strings_out,
|
|
|
|
};
|
|
|
|
|
|
|
|
primary_json.forEach((city) => {
|
|
|
|
print_city_desc(city, "city", dest, true);
|
|
|
|
});
|
|
|
|
|
|
|
|
// Add Black Rock City
|
|
|
|
dest.desc_out += `\n // Black Rock City\n [city_black_rock] = {
|
|
|
|
.id = city_black_rock,
|
|
|
|
.lat = -90.0f,
|
|
|
|
.lon = 0,
|
|
|
|
.sacn_universe = city_black_rock,
|
|
|
|
},\n`;
|
|
|
|
|
|
|
|
dest.strings_out += ` [city_black_rock] = "city_black_rock",\n`;
|
|
|
|
dest.enum_out += " city_count,\n";
|
|
|
|
dest.enum_out += " city_secondary_first = city_count + 1,\n";
|
|
|
|
|
|
|
|
secondary_json.forEach((city) => {
|
|
|
|
print_city_desc(city, "city_secondary", dest, false);
|
|
|
|
});
|
|
|
|
|
|
|
|
dest.enum_out += " city_secondary_count,\n";
|
|
|
|
dest.enum_out += "};\n\n";
|
|
|
|
dest.desc_out += "};\n\n";
|
|
|
|
dest.strings_out += "};\n\n";
|
|
|
|
|
|
|
|
out += dest.enum_out;
|
|
|
|
out += dest.desc_out;
|
|
|
|
out += dest.strings_out;
|
|
|
|
fs.writeFileSync(OUT_FILE_PATH, out, {});
|
|
|
|
}
|
|
|
|
|
|
|
|
main();
|