Restructured app format, goldsrc full support and added implementation for Day of Defeat and Counter-Strike: Condition Zero (#5)

* [valve_app_restructure] Initial change

* [valve_app_restructure] Some GoldSrc split packet changes

* [valve_app_restructure] Counter-Strike: Condition Zero implementation.

* [valve_app_restructure] Docs changes

* [valve_app_restructure] Added obsolete gold src response

* [valve_app_restructure] Day of Defeat implementation.
This commit is contained in:
CosminPerRam 2022-10-27 01:01:11 +03:00 committed by GitHub
parent 96c2c8a335
commit d3a1dba3c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 276 additions and 116 deletions

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::ALIENS), None)?;
}, SteamID::ALIENS.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::ASRD), None)?;
}, SteamID::ASRD.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

12
src/games/cscz.rs Normal file
View file

@ -0,0 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, SteamID::CSCZ.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,6 +1,6 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, Server, GatheringSettings, get_optional_extracted_data};
use crate::protocols::valve::{Server, GatheringSettings, get_optional_extracted_data, SteamID};
use crate::protocols::valve::game::Player;
#[derive(Debug)]
@ -54,7 +54,7 @@ pub fn query(address: &str, port: Option<u16>) -> GDResult<Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::CSGO), Some(GatheringSettings {
}, SteamID::CSGO.app(), Some(GatheringSettings {
players: true,
rules: false // cause csgo doesnt reply with rules anymore
}))?;

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::CSS), None)?;
}, SteamID::CSS.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

12
src/games/dod.rs Normal file
View file

@ -0,0 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, SteamID::DOD.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::DODS), None)?;
}, SteamID::DODS.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::GM), None)?;
}, SteamID::GM.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::HL2DM), None)?;
}, SteamID::HL2DM.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::INS), None)?;
}, SteamID::INS.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::INSMIC), None)?;
}, SteamID::INSMIC.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27131,
Some(port) => port
}, Some(App::INSS), None)?;
}, SteamID::INSS.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::L4D), None)?;
}, SteamID::L4D.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::L4D2), None)?;
}, SteamID::L4D2.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -29,3 +29,7 @@ pub mod ins;
pub mod inss;
/// Insurgency: Modern Infantry Combat
pub mod insmic;
/// Counter Strike: Condition Zero
pub mod cscz;
/// Day of Defeat
pub mod dod;

View file

@ -1,12 +1,12 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, game};
use crate::protocols::valve::{game, SteamID};
pub fn query(address: &str, port: Option<u16>) -> GDResult<game::Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::TF2), None)?;
}, SteamID::TF2.app(), None)?;
Ok(game::Response::new_from_valve_response(valve_response))
}

View file

@ -1,6 +1,6 @@
use crate::GDResult;
use crate::protocols::valve;
use crate::protocols::valve::{App, Server, ServerRule, ServerPlayer, get_optional_extracted_data};
use crate::protocols::valve::{Server, ServerRule, ServerPlayer, get_optional_extracted_data, SteamID};
#[derive(Debug)]
pub struct TheShipPlayer {
@ -84,7 +84,7 @@ pub fn query(address: &str, port: Option<u16>) -> GDResult<Response> {
let valve_response = valve::query(address, match port {
None => 27015,
Some(port) => port
}, Some(App::TS), None)?;
}, SteamID::TS.app(), None)?;
Ok(Response::new_from_valve_response(valve_response))
}