|
|
|
@ -9,36 +9,32 @@ use serde_derive::Serialize;
|
|
|
|
|
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
type UnprocessedAreas = Vec<UnprocessedArea>;
|
|
|
|
|
type StepOneUnprocessedAreas = HashMap<String, UnprocessedArea>;
|
|
|
|
|
|
|
|
|
|
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
|
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
|
struct UnprocessedArea {
|
|
|
|
|
#[serde(rename = "Id")]
|
|
|
|
|
pub named_id: String,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "_rid")]
|
|
|
|
|
pub key_id: usize,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "Name")]
|
|
|
|
|
#[serde(rename = "name")]
|
|
|
|
|
pub name: String,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "Act")]
|
|
|
|
|
#[serde(rename = "id")]
|
|
|
|
|
pub named_id: String,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "area_level")]
|
|
|
|
|
pub area_level: i64,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "act")]
|
|
|
|
|
pub act: i64,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "IsTown")]
|
|
|
|
|
#[serde(rename = "is_town")]
|
|
|
|
|
pub is_town: bool,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "HasWaypoint")]
|
|
|
|
|
#[serde(rename = "has_waypoint")]
|
|
|
|
|
pub has_waypoint: bool,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "Connections_WorldAreasKeys")]
|
|
|
|
|
pub connections_world_areas_keys: Vec<i64>,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "IsVaalArea")]
|
|
|
|
|
pub is_vaal_area: bool,
|
|
|
|
|
|
|
|
|
|
#[serde(rename = "Unknown9")]
|
|
|
|
|
pub unknown9: i64,
|
|
|
|
|
#[serde(rename = "connections")]
|
|
|
|
|
pub connections_world_areas_keys: Vec<String>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub type AreaName = String;
|
|
|
|
@ -47,11 +43,11 @@ pub type AreaName = String;
|
|
|
|
|
pub struct WorldArea {
|
|
|
|
|
pub name: String,
|
|
|
|
|
pub named_id: String,
|
|
|
|
|
pub area_level: i64,
|
|
|
|
|
pub act: i64,
|
|
|
|
|
pub key_id: usize,
|
|
|
|
|
pub is_town: bool,
|
|
|
|
|
pub has_waypoint: bool,
|
|
|
|
|
pub connections_world_areas_keys: Vec<i64>,
|
|
|
|
|
pub connections_world_areas_keys: Vec<String>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub type AreaId = usize;
|
|
|
|
@ -105,7 +101,7 @@ impl WorldAreas {
|
|
|
|
|
.score
|
|
|
|
|
.cmp(&entry2.score)
|
|
|
|
|
.reverse()
|
|
|
|
|
.then(entry1.area.key_id.cmp(&entry2.area.key_id))
|
|
|
|
|
.then(entry1.area.area_level.cmp(&entry2.area.area_level))
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
let matches_areas = matches
|
|
|
|
@ -193,30 +189,27 @@ impl Matcher {
|
|
|
|
|
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
pub fn repack(content: &str, out_path: &str) {
|
|
|
|
|
let areas_json = serde_json::from_str::<UnprocessedAreas>(content);
|
|
|
|
|
let areas_json = serde_json::from_str::<StepOneUnprocessedAreas>(content).unwrap().into_iter().map(|(k,v)| v).collect::<Vec<UnprocessedArea>>();
|
|
|
|
|
|
|
|
|
|
let area_map = areas_json
|
|
|
|
|
.expect("Could not read world areas")
|
|
|
|
|
.into_iter()
|
|
|
|
|
.filter_map(|w_a| {
|
|
|
|
|
if w_a.act < 11
|
|
|
|
|
&& !w_a.is_vaal_area
|
|
|
|
|
&& !w_a.connections_world_areas_keys.is_empty()
|
|
|
|
|
&& !w_a.named_id.starts_with("Map")
|
|
|
|
|
&& !w_a.named_id.starts_with("Descent")
|
|
|
|
|
&& !w_a.named_id.starts_with("EndlessLedge")
|
|
|
|
|
&& w_a.unknown9 != 20
|
|
|
|
|
{
|
|
|
|
|
Some((
|
|
|
|
|
w_a.named_id.clone(),
|
|
|
|
|
WorldArea {
|
|
|
|
|
name: w_a.name,
|
|
|
|
|
named_id: w_a.named_id,
|
|
|
|
|
area_level: w_a.area_level,
|
|
|
|
|
act: w_a.act,
|
|
|
|
|
is_town: w_a.is_town,
|
|
|
|
|
has_waypoint: w_a.has_waypoint,
|
|
|
|
|
connections_world_areas_keys: w_a.connections_world_areas_keys,
|
|
|
|
|
key_id: w_a.key_id,
|
|
|
|
|
},
|
|
|
|
|
))
|
|
|
|
|
} else {
|
|
|
|
@ -232,10 +225,9 @@ pub fn repack(content: &str, out_path: &str) {
|
|
|
|
|
|
|
|
|
|
#[allow(dead_code)]
|
|
|
|
|
pub fn repack_full(content: &str, out_path: &str) {
|
|
|
|
|
let areas_json = serde_json::from_str::<UnprocessedAreas>(content);
|
|
|
|
|
let areas_json = serde_json::from_str::<StepOneUnprocessedAreas>(content).unwrap().into_iter().map(|(k,v)| v).collect::<Vec<UnprocessedArea>>();
|
|
|
|
|
|
|
|
|
|
let area_map = areas_json
|
|
|
|
|
.expect("Could not read world areas")
|
|
|
|
|
.into_iter()
|
|
|
|
|
.map(|w_a| {
|
|
|
|
|
(
|
|
|
|
@ -243,11 +235,11 @@ pub fn repack_full(content: &str, out_path: &str) {
|
|
|
|
|
WorldArea {
|
|
|
|
|
name: w_a.name,
|
|
|
|
|
named_id: w_a.named_id,
|
|
|
|
|
area_level: w_a.area_level,
|
|
|
|
|
act: w_a.act,
|
|
|
|
|
is_town: w_a.is_town,
|
|
|
|
|
has_waypoint: w_a.has_waypoint,
|
|
|
|
|
connections_world_areas_keys: w_a.connections_world_areas_keys,
|
|
|
|
|
key_id: w_a.key_id,
|
|
|
|
|
},
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|