This commit is contained in:
2026-07-27 15:17:13 +08:00
parent 8370ff9e79
commit c99b16d000
15 changed files with 1169 additions and 428 deletions
+38
View File
@@ -7,6 +7,7 @@
#include "MLAT.h"
#include "Source_Feed_Relation.h"
#include <fstream>
#include <map>
#include <vector>
inline bool delete_log = false;
extern std::string default_config_path;
@@ -56,6 +57,10 @@ struct Mode_ACS_Config_Data {
Psc::Copyable_Atomic<std::size_t> mode_other_max_num{};
Psc::Copyable_Atomic<std::size_t> report_data_feed_msg_mum{};
Psc::Copyable_Atomic<std::size_t> default_min_aircraft_list_num{};
Psc::Copyable_Atomic<std::size_t> aircraft_change_list_min_position_points = 2;
Psc::Copyable_Atomic<bool> aircraft_change_list_adsb_range_filter = true;
Psc::Copyable_Atomic<double> aircraft_change_list_adsb_range_factor = 1.2;
Psc::Copyable_Atomic<double> adsb_theoretical_target_altitude_meters = 10000.0;
Psc::Copyable_Atomic<bool> ignore_df_11{};
Psc::Copyable_Atomic<bool> monitor_msg_live{};
PSC_USE_JSON
@@ -148,8 +153,18 @@ struct Map_Camera_Config {
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
};
struct Map_Tile_View_Config {
std::string current_imagery_key = "imagery";
std::string tile_zoom_mode = "native";
std::uint32_t tile_display_maximum_level = 19;
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
[[nodiscard]] static bool is_tile_zoom_mode(std::string_view mode);
};
struct Map_View_Config {
std::string scene_mode = "3d";
Map_Tile_View_Config map2d;
Map_Tile_View_Config map3d;
Map_Camera_Config camera;
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
@@ -173,6 +188,26 @@ struct Cesium_Graphics_Config {
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
};
struct Map_Model_Item_Config {
std::string url;
double built_in_size = 50.0;
double heading_offset_degrees = 0.0;
double pitch_offset_degrees = 0.0;
double roll_offset_degrees = 0.0;
Map_Model_Item_Config() = default;
explicit Map_Model_Item_Config(std::string url);
Map_Model_Item_Config(std::string url, double built_in_size, double heading, double pitch, double roll);
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
};
struct Map_Model_Config {
Map_Model_Item_Config aircraft_model{"/ui/model/aircraft.glb", 50.0, -90.0, 0.0, 0.0};
std::map<std::string, Map_Model_Item_Config> aircraft_models;
Map_Model_Item_Config base_station_model{"/ui/model/base-station.glb", 100.0, 0.0, 0.0, 0.0};
Map_Model_Config();
void from_base_json(const Psc::JSON* that_json);
[[nodiscard]] Psc::JSON to_base_json() const;
};
struct Net_Config {
std::string key{};
std::string ip{};
@@ -229,6 +264,7 @@ public:
Map_Resources_Config map_resources_config;
Map_View_Config map_view_config;
Cesium_Graphics_Config cesium_graphics_config;
Map_Model_Config map_model_config;
Mode_ACS_Config mode_acs;
Log_Config log_config;
Console_Config console_config{};
@@ -261,6 +297,7 @@ public:
map_resources_config.from_base_json(that_json->get("map_resources"));
map_view_config.from_base_json(that_json->get("map_view"));
cesium_graphics_config.from_base_json(that_json->get("cesium_graphics"));
map_model_config.from_base_json(that_json->get("map_models"));
device_config.init(that_json->get("device"));
mode_acs.init(that_json->get("mode_acs"));
console_config.from_base_json(that_json->get("console"));
@@ -279,6 +316,7 @@ public:
{"web_server", web_server_config.to_base_json()},
{"map_resources", map_resources_config.to_base_json()},
{"map_view", map_view_config.to_base_json()},
{"map_models", map_model_config.to_base_json()},
{"device", device_config.to_base_json()},
{"mode_acs", mode_acs.to_base_json()},
//{"ais", ais.to_json()},