mirror of
https://github.com/Tribufu/rust-gamedig
synced 2026-08-09 15:11:07 +00:00
* Remove the SteamApp enum. * Further removal * Replace SteamApp with Engine on game! usage * Add removal of SteamApp in changelog * docs: Update reference of SteamApp to Engine * Update the docs of the Engine type to be more descriptive.
47 lines
1.6 KiB
Rust
47 lines
1.6 KiB
Rust
use crate::protocols::valve::Engine;
|
|
use crate::{
|
|
protocols::valve::{self, game},
|
|
GDErrorKind::TypeParse,
|
|
GDResult,
|
|
};
|
|
use std::net::{IpAddr, SocketAddr};
|
|
|
|
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<game::Response> {
|
|
let mut valve_response = valve::query(
|
|
&SocketAddr::new(*address, port.unwrap_or(7780)),
|
|
Engine::new(489_940),
|
|
None,
|
|
None,
|
|
)?;
|
|
|
|
if let Some(rules) = &mut valve_response.rules {
|
|
if let Some(bat_max_players) = rules.get("bat_max_players_i") {
|
|
valve_response.info.players_maximum = bat_max_players.parse().map_err(|e| TypeParse.context(e))?;
|
|
rules.remove("bat_max_players_i");
|
|
}
|
|
|
|
if let Some(bat_player_count) = rules.get("bat_player_count_s") {
|
|
valve_response.info.players_online = bat_player_count.parse().map_err(|e| TypeParse.context(e))?;
|
|
rules.remove("bat_player_count_s");
|
|
}
|
|
|
|
if let Some(bat_has_password) = rules.get("bat_has_password_s") {
|
|
valve_response.info.has_password = bat_has_password == "Y";
|
|
rules.remove("bat_has_password_s");
|
|
}
|
|
|
|
if let Some(bat_name) = rules.get("bat_name_s") {
|
|
valve_response.info.name = bat_name.clone();
|
|
rules.remove("bat_name_s");
|
|
}
|
|
|
|
if let Some(bat_gamemode) = rules.get("bat_gamemode_s") {
|
|
valve_response.info.game_mode = bat_gamemode.clone();
|
|
rules.remove("bat_gamemode_s");
|
|
}
|
|
|
|
rules.remove("bat_map_s");
|
|
}
|
|
|
|
Ok(game::Response::new_from_valve_response(valve_response))
|
|
}
|