wicked-waifus-rs/wicked-waifus-game-server/src/logic/handler/scene.rs
xavo95 4d6b79aa29 2.4.1 (#9)
Review this, includes:

- Unlocks for weapons
    - All weapons unlock
    - Max level weapons
    - Max resonance weapons
- Fixed unlocks for roles, now max level, breakthrought and resonance come from bindata
- Unlocks for all skin types(flight, wing, role, skin)
- Weapon inventory implemented
- Change role skin implemented
- Change weapon skin implmented
- Change flight skin implemented
- Change wing skin implemented
- Change weapon implemented(basic, no attributes, no switch)
- Created SequenceGenerator to emulate sql sequences with reusable ids

Known bugs:

- In prod only one projection can be equipped simulataneously, we dont care :xdskull:
- Change skin will plot with invalid Rotation so a change of character is required, investigate this

Reviewed-on: WutheringSlaves/wicked-waifus-rs#9
Reviewed-by: RabbyDevs <rabbydevs@gmail.com>
2025-05-23 01:33:05 +00:00

72 lines
2.2 KiB
Rust

use wicked_waifus_protocol::{
AccessPathTimeServerConfigRequest, AccessPathTimeServerConfigResponse, ErrorCode,
JsPatchNotify, PlayerHeadDataRequest, PlayerHeadDataResponse, SceneLoadingFinishRequest,
SceneLoadingFinishResponse, SceneTraceRequest, SceneTraceResponse, UpdateSceneDateRequest,
UpdateSceneDateResponse,
};
const WATER_MASK: &str = include_str!("../../../scripts/watermask-disable.js");
const UID_FIX: &str = include_str!("../../../scripts/uidfix.js");
const CENSORSHIP_FIX: &str = include_str!("../../../scripts/censorshipfix.js");
const DEBUG_DISABLE: &str = include_str!("../../../scripts/debug_disable.js");
use crate::logic::player::Player;
pub fn on_scene_trace_request(
_player: &Player,
request: SceneTraceRequest,
_: &mut SceneTraceResponse,
) {
tracing::debug!("SceneTraceRequest: trace id {}", request.scene_trace_id);
}
pub fn on_scene_loading_finish_request(
player: &Player,
_request: SceneLoadingFinishRequest,
response: &mut SceneLoadingFinishResponse,
) {
player.notify(JsPatchNotify {
content: WATER_MASK.to_string(),
});
player.notify(JsPatchNotify {
content: UID_FIX
.replace("{PLAYER_USERNAME}", &player.basic_info.name)
.replace("{SELECTED_COLOR}", "50FC71"),
});
player.notify(JsPatchNotify {
content: CENSORSHIP_FIX.to_string(),
});
player.notify(JsPatchNotify {
content: DEBUG_DISABLE.to_string(),
});
// TODO: Implement this if needed
response.error_code = ErrorCode::Success.into();
}
pub fn on_update_scene_date_request(
_player: &Player,
_request: UpdateSceneDateRequest,
response: &mut UpdateSceneDateResponse,
) {
// TODO: port this from golang
response.error_code = ErrorCode::Success.into();
}
pub fn on_access_path_time_server_config_request(
_player: &Player,
_request: AccessPathTimeServerConfigRequest,
response: &mut AccessPathTimeServerConfigResponse,
) {
// TODO: port this from golang
response.pb = vec![];
}
pub fn on_player_head_data_request(
_player: &Player,
_request: PlayerHeadDataRequest,
response: &mut PlayerHeadDataResponse,
) {
// TODO: port this from golang
response.pi = vec![];
}