103 lines
3.8 KiB
Rust
103 lines
3.8 KiB
Rust
use common::data::EXCEL_COLLECTION;
|
|
|
|
use super::*;
|
|
|
|
pub async fn on_enter_scene_cs_req(session: &PlayerSession, body: &EnterSceneCsReq) -> Result<()> {
|
|
session
|
|
.send(CMD_ENTER_SCENE_SC_RSP, EnterSceneScRsp::default())
|
|
.await?;
|
|
|
|
let entrance_config = EXCEL_COLLECTION
|
|
.map_entrance_configs
|
|
.iter()
|
|
.find(|c| c.id == body.entry_id)
|
|
.unwrap();
|
|
|
|
let player = session.player_info();
|
|
let enter_scene_by_server = EnterSceneByServerScNotify {
|
|
reason: EnterSceneReason::None.into(),
|
|
lineup: Some(player.lineup.clone()),
|
|
scene: Some(SceneInfo {
|
|
plane_id: entrance_config.plane_id,
|
|
floor_id: entrance_config.floor_id,
|
|
entry_id: entrance_config.id,
|
|
game_mode_type: 1, // TODO: EntranceType -> enum repr(u32)
|
|
..Default::default()
|
|
}),
|
|
};
|
|
|
|
session
|
|
.send(CMD_ENTER_SCENE_BY_SERVER_SC_NOTIFY, enter_scene_by_server)
|
|
.await
|
|
}
|
|
|
|
pub async fn on_get_cur_scene_info_cs_req(
|
|
session: &PlayerSession,
|
|
_body: &GetCurSceneInfoCsReq,
|
|
) -> Result<()> {
|
|
session
|
|
.send(
|
|
CMD_GET_CUR_SCENE_INFO_SC_RSP,
|
|
GetCurSceneInfoScRsp {
|
|
retcode: 0,
|
|
scene: Some(SceneInfo {
|
|
plane_id: 20101,
|
|
floor_id: 20101001,
|
|
entry_id: 2010101,
|
|
game_mode_type: 1,
|
|
leader_entity_id: 1,
|
|
scene_group_list: vec![
|
|
SceneGroupInfo {
|
|
state: 1,
|
|
group_id: 0,
|
|
entity_list: vec![SceneEntityInfo {
|
|
group_id: 0,
|
|
inst_id: 0,
|
|
entity_id: 1,
|
|
actor: Some(SceneActorInfo {
|
|
avatar_type: 3,
|
|
base_avatar_id: 1314,
|
|
map_layer: 2,
|
|
uid: session.player_uid(),
|
|
}),
|
|
motion: Some(MotionInfo {
|
|
pos: Some(Vector {
|
|
x: -550,
|
|
y: 19364,
|
|
z: 4480,
|
|
}),
|
|
rot: Some(Vector::default()),
|
|
}),
|
|
..Default::default()
|
|
}],
|
|
},
|
|
SceneGroupInfo {
|
|
state: 1,
|
|
group_id: 19,
|
|
entity_list: vec![SceneEntityInfo {
|
|
group_id: 19,
|
|
inst_id: 300001,
|
|
entity_id: 228,
|
|
prop: Some(ScenePropInfo {
|
|
prop_id: 808,
|
|
prop_state: 1,
|
|
..Default::default()
|
|
}),
|
|
motion: Some(MotionInfo {
|
|
pos: Some(Vector {
|
|
x: -570,
|
|
y: 19364,
|
|
z: 4480,
|
|
}),
|
|
rot: Some(Vector::default()),
|
|
}),
|
|
..Default::default()
|
|
}],
|
|
},
|
|
],
|
|
..Default::default()
|
|
}),
|
|
},
|
|
)
|
|
.await
|
|
}
|