mirror of
https://git.neonteam.dev/amizing/robinsr.git
synced 2025-03-12 03:28:30 -04:00
fix(scene): Fixed some scene that can't be loaded
This commit is contained in:
parent
6e97b516f4
commit
d7696f4769
@ -52,6 +52,9 @@ pub async fn on_enter_scene_cs_req(
|
|||||||
{
|
{
|
||||||
res.retcode = Nbbhhpnhond::RetSceneEntryIdNotMatch as u32;
|
res.retcode = Nbbhhpnhond::RetSceneEntryIdNotMatch as u32;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
res.alckpiobhlb = req.alckpiobhlb;
|
||||||
|
res.gpjeedfjhaj = player.scene.entry_id != req.entry_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn on_get_scene_map_info_cs_req(
|
pub async fn on_get_scene_map_info_cs_req(
|
||||||
@ -86,24 +89,21 @@ pub async fn on_get_scene_map_info_cs_req(
|
|||||||
|
|
||||||
let group_config = GAME_RES
|
let group_config = GAME_RES
|
||||||
.level_output_configs
|
.level_output_configs
|
||||||
.get(&entry_id)
|
.get(entry_id)
|
||||||
.and_then(|v| v.iter().next());
|
.and_then(|v| v.iter().next());
|
||||||
|
|
||||||
if let Some((_, group_config)) = group_config {
|
if let Some((_, group_config)) = group_config {
|
||||||
for (_, (group_id, group)) in group_config.scenes.iter().enumerate() {
|
for (group_id, group) in group_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()
|
||||||
});
|
});
|
||||||
|
|
||||||
for (teleport, _) in &group.teleports {
|
for teleport in group.teleports.keys() {
|
||||||
map_info.unlocked_teleport_list.push(*teleport)
|
map_info.unlocked_teleport_list.push(*teleport)
|
||||||
}
|
}
|
||||||
|
|
||||||
for prop in &group.props {
|
for prop in &group.props {
|
||||||
if prop.prop_state != 8 {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
map_info.maze_prop_list.push(MazeProp {
|
map_info.maze_prop_list.push(MazeProp {
|
||||||
group_id: prop.group_id,
|
group_id: prop.group_id,
|
||||||
state: prop.prop_state,
|
state: prop.prop_state,
|
||||||
@ -164,7 +164,7 @@ pub async fn on_get_entered_scene_cs_req(
|
|||||||
res.entered_scene_info = GAME_RES
|
res.entered_scene_info = GAME_RES
|
||||||
.level_output_configs
|
.level_output_configs
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(_, v)| {
|
.flat_map(|(_, v)| {
|
||||||
v.iter()
|
v.iter()
|
||||||
.filter(|(_, v)| v.is_entered_scene_info)
|
.filter(|(_, v)| v.is_entered_scene_info)
|
||||||
.map(|(k, _)| {
|
.map(|(k, _)| {
|
||||||
@ -178,7 +178,6 @@ pub async fn on_get_entered_scene_cs_req(
|
|||||||
})
|
})
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
})
|
})
|
||||||
.flatten()
|
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,16 +191,15 @@ async fn load_scene(
|
|||||||
let (name, scene) = GAME_RES
|
let (name, scene) = GAME_RES
|
||||||
.level_output_configs
|
.level_output_configs
|
||||||
.get(&entry_id)
|
.get(&entry_id)
|
||||||
.map(|v| v.iter().next())
|
.and_then(|v| v.iter().next())
|
||||||
.flatten()
|
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| {
|
||||||
tracing::error!("Map Entrance Not Found {}", entry_id);
|
tracing::error!("Map Entrance Not Found {}", entry_id);
|
||||||
anyhow::format_err!("Map Entrance Not Found {}", entry_id)
|
anyhow::format_err!("Map Entrance Not Found {}", entry_id)
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let split: Vec<_> = name.split("_").collect();
|
let split: Vec<_> = name.split("_").collect();
|
||||||
let plane_id = *&split[0][1..].parse::<u32>()?;
|
let plane_id = split[0][1..].parse::<u32>()?;
|
||||||
let floor_id = *&split[1][1..].parse::<u32>()?;
|
let floor_id = split[1][1..].parse::<u32>()?;
|
||||||
|
|
||||||
let mut json_pos = json.position.clone();
|
let mut json_pos = json.position.clone();
|
||||||
if let Some(teleport_id) = teleport_id {
|
if let Some(teleport_id) = teleport_id {
|
||||||
@ -214,17 +212,15 @@ async fn load_scene(
|
|||||||
json_pos.y = teleport.pos.y;
|
json_pos.y = teleport.pos.y;
|
||||||
json_pos.z = teleport.pos.z;
|
json_pos.z = teleport.pos.z;
|
||||||
json_pos.rot_y = teleport.rot.y;
|
json_pos.rot_y = teleport.rot.y;
|
||||||
} else {
|
} else if let Some((_, teleport)) = scene
|
||||||
if let Some((_, teleport)) = scene
|
.scenes
|
||||||
.scenes
|
.iter()
|
||||||
.iter()
|
.find_map(|v| v.1.teleports.iter().next())
|
||||||
.find_map(|v| v.1.teleports.iter().next())
|
{
|
||||||
{
|
json_pos.x = teleport.pos.x;
|
||||||
json_pos.x = teleport.pos.x;
|
json_pos.y = teleport.pos.y;
|
||||||
json_pos.y = teleport.pos.y;
|
json_pos.z = teleport.pos.z;
|
||||||
json_pos.z = teleport.pos.z;
|
json_pos.rot_y = teleport.rot.y;
|
||||||
json_pos.rot_y = teleport.rot.y;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,7 +228,7 @@ async fn load_scene(
|
|||||||
floor_id,
|
floor_id,
|
||||||
plane_id,
|
plane_id,
|
||||||
entry_id,
|
entry_id,
|
||||||
game_mode_type: *(&scene.plane_type) as u32,
|
game_mode_type: scene.plane_type,
|
||||||
leader_entity_id: 1,
|
leader_entity_id: 1,
|
||||||
world_id: scene.world_id,
|
world_id: scene.world_id,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
@ -298,10 +294,10 @@ async fn load_scene(
|
|||||||
loaded_npc.push(npc.npc_id);
|
loaded_npc.push(npc.npc_id);
|
||||||
|
|
||||||
let npc_position = Position {
|
let npc_position = Position {
|
||||||
x: (npc.pos.x) as i32,
|
x: npc.pos.x,
|
||||||
y: (npc.pos.y) as i32,
|
y: npc.pos.y,
|
||||||
z: (npc.pos.z) as i32,
|
z: npc.pos.z,
|
||||||
rot_y: (npc.rot.y) as i32,
|
rot_y: npc.rot.y,
|
||||||
};
|
};
|
||||||
|
|
||||||
let info = SceneEntityInfo {
|
let info = SceneEntityInfo {
|
||||||
@ -322,10 +318,10 @@ async fn load_scene(
|
|||||||
for monster in &group.monsters {
|
for monster in &group.monsters {
|
||||||
monster_entity_id += 1;
|
monster_entity_id += 1;
|
||||||
let monster_position = Position {
|
let monster_position = Position {
|
||||||
x: (monster.pos.x) as i32,
|
x: monster.pos.x,
|
||||||
y: (monster.pos.y) as i32,
|
y: monster.pos.y,
|
||||||
z: (monster.pos.z) as i32,
|
z: monster.pos.z,
|
||||||
rot_y: (monster.rot.y) as i32,
|
rot_y: monster.rot.y,
|
||||||
};
|
};
|
||||||
|
|
||||||
let npc_monster = SceneNpcMonsterInfo {
|
let npc_monster = SceneNpcMonsterInfo {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user