diff --git a/CHANGELOG.md b/CHANGELOG.md index 7805877..f65d885 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ Crate: - Added feature `no_games` which disables the supported games (useful when you are only using the protocols/services, also saves storage space). +Games: +- [V Rising](https://store.steampowered.com/app/1604030/V_Rising/) support. + Protocols: - Valve: 1. Reversed (from `0.1.0`) "Players with no name are no more added to the `players_details` field.", also added a note in the [protocols](PROTOCOLS.md) file regarding this. diff --git a/GAMES.md b/GAMES.md index 2e80457..d6e4629 100644 --- a/GAMES.md +++ b/GAMES.md @@ -44,6 +44,7 @@ Beware of the `Notes` column, as it contains information about query port offset | BrainBread 2 | BB2 | Valve Protocol | | | Avorion | AVORION | Valve Protocol | Query port is 27020. | | Operation: Harsh Doorstop | OHD | Valve Protocol | Query port is 27005. | +| V Rising | VR | Valve Protocol | Query port is 27016. | ## Planned to add support: _ diff --git a/examples/master_querant.rs b/examples/master_querant.rs index e89c643..2311564 100644 --- a/examples/master_querant.rs +++ b/examples/master_querant.rs @@ -1,6 +1,6 @@ use std::env; -use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned}; +use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, GDResult, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, tf, tf2, tfc, ts, unturned, vr}; use gamedig::protocols::minecraft::LegacyGroup; use gamedig::protocols::valve; use gamedig::protocols::valve::Engine; @@ -82,6 +82,7 @@ fn main() -> GDResult<()> { "bb2" => println!("{:#?}", bb2::query(ip, port)?), "avorion" => println!("{:#?}", avorion::query(ip, port)?), "ohd" => println!("{:#?}", ohd::query(ip, port)?), + "vr" => println!("{:#?}", vr::query(ip, port)?), _ => panic!("Undefined game: {}", args[1]) }; diff --git a/src/games/mod.rs b/src/games/mod.rs index 89cf589..893fbc7 100644 --- a/src/games/mod.rs +++ b/src/games/mod.rs @@ -83,3 +83,5 @@ pub mod bb2; pub mod avorion; /// Operation: Harsh Doorstop pub mod ohd; +/// V Rising +pub mod vr; diff --git a/src/games/vr.rs b/src/games/vr.rs new file mode 100644 index 0000000..acba3a5 --- /dev/null +++ b/src/games/vr.rs @@ -0,0 +1,12 @@ +use crate::GDResult; +use crate::protocols::valve; +use crate::protocols::valve::{game, SteamApp}; + +pub fn query(address: &str, port: Option) -> GDResult { + let valve_response = valve::query(address, match port { + None => 27016, + Some(port) => port + }, SteamApp::VR.as_engine(), None, None)?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/protocols/valve/types.rs b/src/protocols/valve/types.rs index 8c24f9c..5ba6a67 100644 --- a/src/protocols/valve/types.rs +++ b/src/protocols/valve/types.rs @@ -218,6 +218,8 @@ pub enum SteamApp { OHD, /// Onset ONSET, + /// V Rising + VR, } impl SteamApp { @@ -263,7 +265,8 @@ impl SteamApp { SteamApp::ASRD => Engine::new_source(563560), SteamApp::ROR2 => Engine::new_source(632360), SteamApp::OHD => Engine::new_source_with_dedicated(736590, 950900), - SteamApp::ONSET => Engine::new_source(1105810) + SteamApp::ONSET => Engine::new_source(1105810), + SteamApp::VR => Engine::new_source(1604030), } } }