1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00
Files
ojrc/rc_multiplayer/src/events/mod.rs
2026-01-07 21:09:38 -05:00

280 lines
13 KiB
Rust

mod validate_game_guid;
mod loading_progress;
mod all_loading_progress;
mod weapon_select;
mod activate_sync;
mod loading_done;
mod player_input;
mod spot_player;
mod kill_player;
mod client_unregister;
mod flipper_start;
mod self_destruct_elimination;
mod map_ping;
mod kill_bonus;
mod assist_bonus;
mod damage_bonus;
mod heal_bonus;
mod player_leave;
mod heal_assist_bonus;
pub async fn handler(init_ctx: &crate::InitConfig) -> crate::handler::LnlEventHandler {
crate::handler::LnlEventHandler::new(
init_ctx.users.clone(),
crate::vehicle_motion::handler(init_ctx),
crate::disconnect::handler(init_ctx),
)
.add(validate_game_guid::handler(init_ctx))
.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))
.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::PlayerIdAndInputData,
>::handler(init_ctx))*/
.add(flipper_start::handler(init_ctx))
/*.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::AlignmentRectifierStarted as i16},
{rlnl::event_code::NetworkEvent::AlignmentRectifierStarted as i16},
{literustlib::packet::Property::Unreliable as u8},
rlnl::events::ingame::PlayerId,
>::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))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::MultipleFireMisses as i16},
{rlnl::event_code::NetworkEvent::MultipleFireMisses as i16},
{literustlib::packet::Property::Unreliable as u8},
rlnl::events::ingame::MultipleFireMisses,
>::handler(init_ctx))
.add(spot_player::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
false,
{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::<
false,
{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::<
false,
{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))
.add(damage_bonus::handler(init_ctx))
.add(heal_bonus::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(kill_bonus::handler(init_ctx))
.add(assist_bonus::handler(init_ctx))
.add(kill_player::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::EnergyModuleActivated as i16},
{rlnl::event_code::NetworkEvent::EnergyModuleActivated as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::PlayerId,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::RadarModuleActivated as i16},
{rlnl::event_code::NetworkEvent::RemoteRadarModuleActivated as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::PlayerId,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::BroadcastActivateTeleportEffect as i16},
{rlnl::event_code::NetworkEvent::ActivateTeleportEffect as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::TeleportActivateEffect,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::BroadcastSpawnEmpLocator as i16},
{rlnl::event_code::NetworkEvent::SpawnEmpLocator as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::SpawnEmpLocator,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::BroadcastSpawnEmpMachineEffect as i16},
{rlnl::event_code::NetworkEvent::SpawnEmpMachineEffect as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::NetworkStunnedMachineEffect,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::ShieldSpawned as i16},
{rlnl::event_code::NetworkEvent::SpawnShield as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::ShieldModuleEvent,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::Taunt as i16},
{rlnl::event_code::NetworkEvent::Taunt as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::Taunt,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::CosmeticAction as i16},
{rlnl::event_code::NetworkEvent::CosmeticAction as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::CosmeticAction,
>::handler(init_ctx))
.add(client_unregister::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::BroadcastInvisible as i16},
{rlnl::event_code::NetworkEvent::MakeInvisible as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::PlayerId,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::BroadcastVisible as i16},
{rlnl::event_code::NetworkEvent::MakeVisible as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::PlayerId,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
true,
{rlnl::event_code::NetworkEvent::UpdateVotingAfterBattle as i16},
{rlnl::event_code::NetworkEvent::UpdateVotingAfterBattle as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::UpdateVotingAfterBattle,
>::handler(init_ctx))
.add(self_destruct_elimination::handler(init_ctx))
.add(map_ping::handler(init_ctx))
// battle arena
.add(crate::handlers::GamemodeSpecific::<
{rlnl::event_code::NetworkEvent::SendDamagedByEnemyShield as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::DamagedByEnemyShield,
>::handler(init_ctx))
.add(crate::handlers::GamemodeSpecific::<
{rlnl::event_code::NetworkEvent::SurrenderRequest as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::InitiateSurrender,
>::handler(init_ctx))
.add(crate::handlers::GamemodeSpecific::<
{rlnl::event_code::NetworkEvent::SurrenderVoteCast as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::SurrenderVoteCast,
>::handler(init_ctx))
.add(crate::handlers::GamemodeSpecific::<
{rlnl::event_code::NetworkEvent::AwardTeamBaseProtoniumDestroyedRequest as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::AwardProtoniumDestroyedCubes,
>::handler(init_ctx))
.add(crate::handlers::Stub::<
{rlnl::event_code::NetworkEvent::ProtectTeamMateBonusRequest as i16},
rlnl::events::ingame::DestroyedHealedCubesBonus,
>::handler(init_ctx))
.add(player_leave::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
false,
{rlnl::event_code::NetworkEvent::LockOnNotification as i16},
{rlnl::event_code::NetworkEvent::LockOnNotificationBroadcast as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::LockOnNotifier,
>::handler(init_ctx))
.add(crate::handlers::Broadcaster::<
false,
{rlnl::event_code::NetworkEvent::HealAlly as i16},
{rlnl::event_code::NetworkEvent::HealAllyResponse as i16},
{literustlib::packet::Property::ReliableOrdered as u8},
rlnl::events::ingame::HealAllyCubes,
>::handler(init_ctx))
.add(heal_assist_bonus::handler(init_ctx))
}
#[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);
}
}
mod _broadcast_impls {
use crate::Broadcastable;
impl Broadcastable for rlnl::events::ingame::PlayerIdAndInputData {}
impl Broadcastable for rlnl::events::ingame::WeaponFireEffect {}
impl Broadcastable for rlnl::events::ingame::FireMiss {}
impl Broadcastable for rlnl::events::ingame::MultipleFireMisses {}
impl Broadcastable for rlnl::events::ingame::DestroyCubesFull {}
impl Broadcastable for rlnl::events::ingame::DestroyCubeNoEffect {}
impl Broadcastable for rlnl::events::ingame::DestroyCubeEffectOnly {}
impl Broadcastable for rlnl::events::HealedCubes {}
impl Broadcastable for rlnl::events::ingame::PlayerId {}
impl Broadcastable for rlnl::events::ingame::SpawnEmpLocator {}
impl Broadcastable for rlnl::events::ingame::NetworkStunnedMachineEffect {}
impl Broadcastable for rlnl::events::ingame::ShieldModuleEvent {}
impl Broadcastable for rlnl::events::ingame::Taunt {}
impl Broadcastable for rlnl::events::ingame::CosmeticAction {}
impl Broadcastable for rlnl::events::ingame::UpdateVotingAfterBattle {}
impl Broadcastable for rlnl::events::ingame::TeleportActivateEffect {}
impl Broadcastable for rlnl::events::ingame::MapPing {}
impl Broadcastable for rlnl::events::ingame::DamagedByEnemyShield {}
impl Broadcastable for rlnl::events::ingame::InitiateSurrender {}
impl Broadcastable for rlnl::events::ingame::SurrenderVoteCast {}
impl Broadcastable for rlnl::events::ingame::AwardProtoniumDestroyedCubes {}
impl Broadcastable for rlnl::events::ingame::LockOnNotifier {}
impl Broadcastable for rlnl::events::ingame::HealAllyCubes {}
impl Broadcastable for rlnl::events::sync::UpdateGameModeSettings {}
impl Broadcastable for rlnl::events::sync::GetTeamBase {}
impl Broadcastable for rlnl::events::sync::GetCapturePoints {}
impl Broadcastable for rlnl::events::sync::GetEqualizer {}
impl Broadcastable for rlnl::events::sync::FusionShieldState {}
impl Broadcastable for rlnl::events::sync::EqualizerNotification {}
impl Broadcastable for rlnl::events::sync::SpawnPoint {}
impl Broadcastable for rlnl::events::sync::UpdateTeamDeathmatchSettings {}
impl Broadcastable for rlnl::events::GameTime {}
impl Broadcastable for rlnl::events::ingame::TeamBaseState {}
impl Broadcastable for rlnl::events::ingame::GameEnd {}
}