From 328de37b2d7478ab096f7f72b35cf2dcb26cacd4 Mon Sep 17 00:00:00 2001 From: CosminPerRam Date: Mon, 16 Jan 2023 21:33:28 +0200 Subject: [PATCH] Games: Add Black Mesa support. --- CHANGELOG.md | 5 +++-- GAMES.md | 1 + examples/master_querant.rs | 3 ++- src/games/bm.rs | 12 ++++++++++++ src/games/mod.rs | 2 ++ src/protocols/valve/types.rs | 2 ++ 6 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 src/games/bm.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index ebbc150..0292f6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,13 +5,14 @@ Who knows what the future holds... ### Changes: Games: - [Risk of Rain 2](https://store.steampowered.com/app/632360/Risk_of_Rain_2/) support. -- [Battalion 1944](https://store.steampowered.com/app/489940/BATTALION_Legacy/) support. +- [Battalion 1944](https://store.steampowered.com/app/489940/BATTALION_Legacy/) support. +- [Black Mesa](https://store.steampowered.com/app/362890/Black_Mesa/) support. Protocols: - Valve: Players with no name are no more added to the `players_details` field. Crate: -- `MSRV` is now `1.56.1` (from `1.58.1`) +- `MSRV` is now `1.56.1` (was `1.58.1`) ### Breaking: Protocols: diff --git a/GAMES.md b/GAMES.md index d351c7c..6e0c4c2 100644 --- a/GAMES.md +++ b/GAMES.md @@ -32,6 +32,7 @@ A supported game is defined as a game that has been successfully tested, other g | Half-Life Deathmatch: Source | HLDMS | Valve Protocol | | | Risk of Rain 2 | ROR2 | Valve Protocol | Query port offset: 1. | | Battalion 1944 | BAT1944 | Valve Protocol | Query port offset: 3. It is strongly recommended to also query the rules, as the game sends server information's in them. | +| Black Mesa | BM | Valve Protocol | | ## Planned to add support: _ diff --git a/examples/master_querant.rs b/examples/master_querant.rs index 9d04185..aa912c3 100644 --- a/examples/master_querant.rs +++ b/examples/master_querant.rs @@ -1,6 +1,6 @@ use std::env; -use gamedig::{aliens, arma2oa, ase, asrd, bat1944, cs, cscz, csgo, css, dod, dods, doi, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned}; +use gamedig::{aliens, arma2oa, ase, asrd, bat1944, bm, cs, cscz, csgo, css, dod, dods, doi, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned}; use gamedig::protocols::minecraft::LegacyGroup; use gamedig::protocols::valve; use gamedig::protocols::valve::App; @@ -71,6 +71,7 @@ fn main() -> GDResult<()> { "hldms" => println!("{:#?}", hldms::query(ip, port)?), "ror2" => println!("{:#?}", ror2::query(ip, port)?), "bat1944" => println!("{:#?}", bat1944::query(ip, port)?), + "bm" => println!("{:#?}", bm::query(ip, port)?), _ => panic!("Undefined game: {}", args[1]) }; diff --git a/src/games/bm.rs b/src/games/bm.rs new file mode 100644 index 0000000..93daf35 --- /dev/null +++ b/src/games/bm.rs @@ -0,0 +1,12 @@ +use crate::GDResult; +use crate::protocols::valve; +use crate::protocols::valve::{game, SteamID}; + +pub fn query(address: &str, port: Option) -> GDResult { + let valve_response = valve::query(address, match port { + None => 27015, + Some(port) => port + }, SteamID::BM.as_app(), None, None)?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/games/mod.rs b/src/games/mod.rs index 2b2a688..e038862 100644 --- a/src/games/mod.rs +++ b/src/games/mod.rs @@ -61,3 +61,5 @@ pub mod hldms; pub mod ror2; /// Battalion 1944 pub mod bat1944; +/// Black Mesa +pub mod bm; diff --git a/src/protocols/valve/types.rs b/src/protocols/valve/types.rs index 7e756f8..4e9ad6a 100644 --- a/src/protocols/valve/types.rs +++ b/src/protocols/valve/types.rs @@ -179,6 +179,8 @@ pub enum SteamID { SC = 225840, /// Rust RUST = 252490, + /// Black Mesa + BM = 362890, /// Day of Infamy DOI = 447820, /// The Forrest