2025-07-03 21:53:34 -04:00
|
|
|
mod validate_game_guid;
|
2025-07-06 17:36:52 -04:00
|
|
|
mod loading_progress;
|
|
|
|
|
mod all_loading_progress;
|
|
|
|
|
mod weapon_select;
|
|
|
|
|
mod activate_sync;
|
2025-07-12 12:49:27 -04:00
|
|
|
mod loading_done;
|
|
|
|
|
//mod player_input;
|
2025-07-20 23:22:37 -04:00
|
|
|
mod spot_player;
|
|
|
|
|
mod kill_player;
|
2025-07-03 21:53:34 -04:00
|
|
|
|
|
|
|
|
pub async fn handler(init_ctx: &crate::InitConfig) -> crate::handler::LnlEventHandler {
|
2025-07-06 17:36:52 -04:00
|
|
|
crate::handler::LnlEventHandler::new(init_ctx.users.clone(), crate::vehicle_motion::handler(init_ctx))
|
2025-07-03 21:53:34 -04:00
|
|
|
.add(validate_game_guid::handler(init_ctx))
|
2025-07-06 17:36:52 -04:00
|
|
|
.add(loading_progress::handler(init_ctx))
|
|
|
|
|
.add(all_loading_progress::handler(init_ctx))
|
|
|
|
|
.add(weapon_select::handler(init_ctx))
|
|
|
|
|
.add(activate_sync::handler(init_ctx))
|
2025-07-12 12:49:27 -04:00
|
|
|
.add(loading_done::handler(init_ctx))
|
|
|
|
|
//.add(player_input::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
|
|
|
|
true,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::OnPlayerInputChanged as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::OnServerReceivedInputChange as i16},
|
|
|
|
|
{literustlib::packet::Property::Unreliable as u8},
|
|
|
|
|
rlnl::events::ingame::MultiPlayerInputChanged,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::DatalessBroadcaster::<
|
|
|
|
|
true,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::AlignmentRectifierStarted as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::AlignmentRectifierStarted as i16},
|
|
|
|
|
{literustlib::packet::Property::Unreliable as u8},
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
|
|
|
|
true,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::FireWeaponEffect as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::FireWeaponEffect as i16},
|
|
|
|
|
{literustlib::packet::Property::Unreliable as u8},
|
|
|
|
|
rlnl::events::ingame::WeaponFireEffect,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
|
|
|
|
true,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::FireMiss as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::FireMiss as i16},
|
|
|
|
|
{literustlib::packet::Property::Unreliable as u8},
|
|
|
|
|
rlnl::events::ingame::FireMiss,
|
|
|
|
|
>::handler(init_ctx))
|
2025-07-20 23:22:37 -04:00
|
|
|
/*.add(crate::handlers::Broadcaster::<
|
2025-07-20 18:31:08 -04:00
|
|
|
true,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::EnemySpotted as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::EnemySpotted as i16},
|
|
|
|
|
{literustlib::packet::Property::ReliableOrdered as u8},
|
|
|
|
|
rlnl::events::ingame::SpottingIds,
|
2025-07-20 23:22:37 -04:00
|
|
|
>::handler(init_ctx))*/
|
|
|
|
|
.add(spot_player::handler(init_ctx))
|
2025-07-20 22:09:23 -04:00
|
|
|
.add(crate::handlers::Broadcaster::<
|
2025-07-20 23:22:37 -04:00
|
|
|
false,
|
2025-07-20 22:09:23 -04:00
|
|
|
{rlnl::event_code::NetworkEvent::DamageCube as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::DestroyCubesFull as i16},
|
|
|
|
|
{literustlib::packet::Property::ReliableOrdered as u8},
|
|
|
|
|
rlnl::events::ingame::DestroyCubesFull,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
2025-07-20 23:22:37 -04:00
|
|
|
false,
|
2025-07-20 22:09:23 -04:00
|
|
|
{rlnl::event_code::NetworkEvent::DamageCubeNoEffect as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::DestroyCubeNoEffect as i16},
|
|
|
|
|
{literustlib::packet::Property::ReliableOrdered as u8},
|
|
|
|
|
rlnl::events::ingame::DestroyCubeNoEffect,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
2025-07-20 23:22:37 -04:00
|
|
|
false,
|
2025-07-20 22:09:23 -04:00
|
|
|
{rlnl::event_code::NetworkEvent::DamageCubeEffectOnly as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::DestroyCubeEffectOnly as i16},
|
|
|
|
|
{literustlib::packet::Property::Unreliable as u8},
|
|
|
|
|
rlnl::events::ingame::DestroyCubeEffectOnly,
|
|
|
|
|
>::handler(init_ctx))
|
2025-07-20 23:22:37 -04:00
|
|
|
.add(crate::handlers::Stub::<
|
|
|
|
|
{rlnl::event_code::NetworkEvent::DestroyCubesBonusRequest as i16},
|
|
|
|
|
rlnl::events::ingame::DestroyedHealedCubesBonus,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Broadcaster::<
|
|
|
|
|
false,
|
|
|
|
|
{rlnl::event_code::NetworkEvent::HealSelf as i16},
|
|
|
|
|
{rlnl::event_code::NetworkEvent::HealSelfResponse as i16},
|
|
|
|
|
{literustlib::packet::Property::ReliableOrdered as u8},
|
|
|
|
|
rlnl::events::HealedCubes,
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(crate::handlers::Stub::<
|
|
|
|
|
{rlnl::event_code::NetworkEvent::KillBonusRequest as i16},
|
|
|
|
|
rlnl::events::ingame::Kill, // FIXME this is not a player ID -- it's actually sending 2 bytes not 1
|
|
|
|
|
>::handler(init_ctx))
|
|
|
|
|
.add(kill_player::handler(init_ctx))
|
2025-07-06 17:36:52 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
|
pub fn log_channel_send_failure<T>(result: Result<(), tokio::sync::mpsc::error::SendError<T>>) {
|
|
|
|
|
if result.is_err() {
|
|
|
|
|
log::error!("Failed to send game message");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[inline]
|
|
|
|
|
pub fn log_lnl_send_failure(result: std::io::Result<usize>) {
|
|
|
|
|
if let Err(e) = result {
|
|
|
|
|
log::error!("Failed to send packet: {}", e);
|
|
|
|
|
}
|
2025-07-03 21:53:34 -04:00
|
|
|
}
|