feat: lighten map sections

This commit is contained in:
amizing25
2025-04-15 18:46:35 +07:00
parent 90c2f332a5
commit d14bc79fcc
4 changed files with 55 additions and 19 deletions
+6 -1
View File
@@ -114,6 +114,9 @@ pub struct SceneData {
pub props: Vec<ScenePropInfo>, pub props: Vec<ScenePropInfo>,
pub monsters: Vec<SceneMonsterInfo>, pub monsters: Vec<SceneMonsterInfo>,
pub teleports: HashMap<u32, TeleportInfo>, pub teleports: HashMap<u32, TeleportInfo>,
pub finished_sub_missions: Vec<u32>,
pub finished_main_missions: Vec<u32>,
pub chests: Vec<u32>,
} }
#[derive(Deserialize)] #[derive(Deserialize)]
@@ -123,6 +126,8 @@ pub struct LevelOutputConfig {
pub scenes: HashMap<u32, SceneData>, pub scenes: HashMap<u32, SceneData>,
pub plane_type: u32, pub plane_type: u32,
pub world_id: u32, pub world_id: u32,
pub sections: Vec<u32>,
pub saved_values: HashMap<String, i32>
} }
#[derive(Deserialize)] #[derive(Deserialize)]
@@ -138,7 +143,7 @@ pub struct JsonConfig {
/// `entryid` -> `P[planeId]_F[floorId]` -> `groupId` /// `entryid` -> `P[planeId]_F[floorId]` -> `groupId`
pub level_output_configs: HashMap<u32, HashMap<String, LevelOutputConfig>>, pub level_output_configs: HashMap<u32, HashMap<String, LevelOutputConfig>>,
pub avatar_configs: HashMap<u32, AvatarConfig>, pub avatar_configs: HashMap<u32, AvatarConfig>,
pub map_default_entrance_map: HashMap<u32, u32> pub map_default_entrance_map: HashMap<u32, u32>,
} }
pub static GAME_RES: LazyLock<JsonConfig> = LazyLock::new(|| { pub static GAME_RES: LazyLock<JsonConfig> = LazyLock::new(|| {
+38 -7
View File
@@ -76,11 +76,7 @@ pub async fn on_get_scene_map_info_cs_req(
..Default::default() ..Default::default()
}; };
for i in 0..100 { let floor_configs = GAME_RES
map_info.lighten_section_list.push(i)
}
let group_config = GAME_RES
.map_default_entrance_map .map_default_entrance_map
.get(floor_id) .get(floor_id)
.and_then(|v| { .and_then(|v| {
@@ -90,8 +86,8 @@ pub async fn on_get_scene_map_info_cs_req(
.and_then(|v| v.iter().next()) .and_then(|v| v.iter().next())
}); });
if let Some((_, group_config)) = group_config { if let Some((_, floor_config)) = floor_configs {
for (group_id, group) in group_config.scenes.iter() { for (group_id, group) in floor_config.scenes.iter() {
map_info.maze_group_list.push(MazeGroup { map_info.maze_group_list.push(MazeGroup {
group_id: *group_id, group_id: *group_id,
..Default::default() ..Default::default()
@@ -109,6 +105,15 @@ pub async fn on_get_scene_map_info_cs_req(
}); });
} }
} }
map_info.lighten_section_list = floor_config.sections.clone();
map_info.floor_saved_data = floor_config.saved_values.clone();
// TODO!
map_info.jmldmocnmhm = vec![Npaogkfkaae {
fljindnjphl: 2,
fokcifjmjgl: 2,
slot: 2,
}]
} }
res.map_list.push(map_info) res.map_list.push(map_info)
@@ -235,6 +240,32 @@ async fn load_scene(
} else { } else {
scene.world_id scene.world_id
}, },
lighten_section_list: scene.sections.clone(),
chest_id_list: scene
.scenes
.values()
.flat_map(|v| v.chests.clone())
.collect::<Vec<_>>(),
scene_mission_info: Some(MissionStatusBySceneInfo {
finished_mission_id_list: scene
.scenes
.values()
.flat_map(|s| s.finished_main_missions.clone())
.collect::<Vec<_>>(),
sub_mission_status_list: scene
.scenes
.values()
.flat_map(|s| {
s.finished_sub_missions.iter().map(|sm| Mission {
id: *sm,
status: MissionStatus::MissionFinish.into(),
progress: 0,
})
})
.collect::<Vec<_>>(),
..Default::default()
}),
floor_saved_data: scene.saved_values.clone(),
..Default::default() ..Default::default()
}; };
+10 -10
View File
@@ -14420,7 +14420,7 @@ pub mod fhabeikafbo {
} }
#[derive(proto_derive::CmdID)] #[derive(proto_derive::CmdID)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct Feahpjpkgoa { pub struct MainMissionCustomValue {
#[prost(uint32, tag = "13")] #[prost(uint32, tag = "13")]
pub main_mission_id: u32, pub main_mission_id: u32,
#[prost(message, optional, tag = "12")] #[prost(message, optional, tag = "12")]
@@ -14580,7 +14580,7 @@ pub struct GetMissionStatusScRsp {
#[prost(uint32, repeated, tag = "5")] #[prost(uint32, repeated, tag = "5")]
pub unfinished_main_mission_id_list: ::prost::alloc::vec::Vec<u32>, pub unfinished_main_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "12")] #[prost(message, repeated, tag = "12")]
pub main_mission_mcv_list: ::prost::alloc::vec::Vec<Feahpjpkgoa>, pub main_mission_mcv_list: ::prost::alloc::vec::Vec<MainMissionCustomValue>,
#[prost(uint32, tag = "6")] #[prost(uint32, tag = "6")]
pub retcode: u32, pub retcode: u32,
} }
@@ -28097,15 +28097,15 @@ pub struct SceneGroupState {
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
pub struct MissionStatusBySceneInfo { pub struct MissionStatusBySceneInfo {
#[prost(uint32, repeated, tag = "8")] #[prost(uint32, repeated, tag = "8")]
pub icbikgmghik: ::prost::alloc::vec::Vec<u32>, pub disabled_main_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "11")] #[prost(uint32, repeated, tag = "11")]
pub ndnonhfimfi: ::prost::alloc::vec::Vec<u32>, pub unfinished_main_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "6")] #[prost(uint32, repeated, tag = "6")]
pub finished_mission_id: ::prost::alloc::vec::Vec<u32>, pub finished_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "14")] #[prost(message, repeated, tag = "14")]
pub bigehkdpgpn: ::prost::alloc::vec::Vec<Feahpjpkgoa>, pub bigehkdpgpn: ::prost::alloc::vec::Vec<MainMissionCustomValue>,
#[prost(message, repeated, tag = "13")] #[prost(message, repeated, tag = "13")]
pub dgkjillcfla: ::prost::alloc::vec::Vec<Mission>, pub sub_mission_status_list: ::prost::alloc::vec::Vec<Mission>,
} }
#[derive(proto_derive::CmdID)] #[derive(proto_derive::CmdID)]
#[derive(Clone, PartialEq, ::prost::Message)] #[derive(Clone, PartialEq, ::prost::Message)]
@@ -28116,9 +28116,9 @@ pub struct SceneInfo {
i32, i32,
>, >,
#[prost(message, repeated, tag = "11")] #[prost(message, repeated, tag = "11")]
pub mhknnlmping: ::prost::alloc::vec::Vec<EntityBuffInfo>, pub entity_buff_info_list: ::prost::alloc::vec::Vec<EntityBuffInfo>,
#[prost(message, repeated, tag = "9")] #[prost(message, repeated, tag = "9")]
pub gkpnkmeeibm: ::prost::alloc::vec::Vec<CustomSaveData>, pub custom_data_list: ::prost::alloc::vec::Vec<CustomSaveData>,
#[prost(uint32, tag = "7")] #[prost(uint32, tag = "7")]
pub world_id: u32, pub world_id: u32,
#[prost(uint32, tag = "8")] #[prost(uint32, tag = "8")]
@@ -28136,7 +28136,7 @@ pub struct SceneInfo {
#[prost(uint32, tag = "3")] #[prost(uint32, tag = "3")]
pub client_pos_version: u32, pub client_pos_version: u32,
#[prost(uint32, repeated, tag = "624")] #[prost(uint32, repeated, tag = "624")]
pub djbibijmebh: ::prost::alloc::vec::Vec<u32>, pub chest_id_list: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "15")] #[prost(message, repeated, tag = "15")]
pub entity_list: ::prost::alloc::vec::Vec<SceneEntityInfo>, pub entity_list: ::prost::alloc::vec::Vec<SceneEntityInfo>,
#[prost(message, repeated, tag = "351")] #[prost(message, repeated, tag = "351")]
+1 -1
View File
File diff suppressed because one or more lines are too long