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 monsters: Vec<SceneMonsterInfo>,
pub teleports: HashMap<u32, TeleportInfo>,
pub finished_sub_missions: Vec<u32>,
pub finished_main_missions: Vec<u32>,
pub chests: Vec<u32>,
}
#[derive(Deserialize)]
@@ -123,6 +126,8 @@ pub struct LevelOutputConfig {
pub scenes: HashMap<u32, SceneData>,
pub plane_type: u32,
pub world_id: u32,
pub sections: Vec<u32>,
pub saved_values: HashMap<String, i32>
}
#[derive(Deserialize)]
@@ -138,7 +143,7 @@ pub struct JsonConfig {
/// `entryid` -> `P[planeId]_F[floorId]` -> `groupId`
pub level_output_configs: HashMap<u32, HashMap<String, LevelOutputConfig>>,
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(|| {
+38 -7
View File
@@ -76,11 +76,7 @@ pub async fn on_get_scene_map_info_cs_req(
..Default::default()
};
for i in 0..100 {
map_info.lighten_section_list.push(i)
}
let group_config = GAME_RES
let floor_configs = GAME_RES
.map_default_entrance_map
.get(floor_id)
.and_then(|v| {
@@ -90,8 +86,8 @@ pub async fn on_get_scene_map_info_cs_req(
.and_then(|v| v.iter().next())
});
if let Some((_, group_config)) = group_config {
for (group_id, group) in group_config.scenes.iter() {
if let Some((_, floor_config)) = floor_configs {
for (group_id, group) in floor_config.scenes.iter() {
map_info.maze_group_list.push(MazeGroup {
group_id: *group_id,
..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)
@@ -235,6 +240,32 @@ async fn load_scene(
} else {
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()
};
+10 -10
View File
@@ -14420,7 +14420,7 @@ pub mod fhabeikafbo {
}
#[derive(proto_derive::CmdID)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Feahpjpkgoa {
pub struct MainMissionCustomValue {
#[prost(uint32, tag = "13")]
pub main_mission_id: u32,
#[prost(message, optional, tag = "12")]
@@ -14580,7 +14580,7 @@ pub struct GetMissionStatusScRsp {
#[prost(uint32, repeated, tag = "5")]
pub unfinished_main_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[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")]
pub retcode: u32,
}
@@ -28097,15 +28097,15 @@ pub struct SceneGroupState {
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MissionStatusBySceneInfo {
#[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")]
pub ndnonhfimfi: ::prost::alloc::vec::Vec<u32>,
pub unfinished_main_mission_id_list: ::prost::alloc::vec::Vec<u32>,
#[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")]
pub bigehkdpgpn: ::prost::alloc::vec::Vec<Feahpjpkgoa>,
pub bigehkdpgpn: ::prost::alloc::vec::Vec<MainMissionCustomValue>,
#[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(Clone, PartialEq, ::prost::Message)]
@@ -28116,9 +28116,9 @@ pub struct SceneInfo {
i32,
>,
#[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")]
pub gkpnkmeeibm: ::prost::alloc::vec::Vec<CustomSaveData>,
pub custom_data_list: ::prost::alloc::vec::Vec<CustomSaveData>,
#[prost(uint32, tag = "7")]
pub world_id: u32,
#[prost(uint32, tag = "8")]
@@ -28136,7 +28136,7 @@ pub struct SceneInfo {
#[prost(uint32, tag = "3")]
pub client_pos_version: u32,
#[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")]
pub entity_list: ::prost::alloc::vec::Vec<SceneEntityInfo>,
#[prost(message, repeated, tag = "351")]
+1 -1
View File
File diff suppressed because one or more lines are too long