[Games] Add Soldier of Fortune 2 support.

This commit is contained in:
CosminPerRam 2023-05-30 18:53:23 +03:00
parent b3ba7df6d9
commit a0681f4259
5 changed files with 15 additions and 1 deletions

View file

@ -12,6 +12,7 @@ Games:
- [Quake 1](https://store.steampowered.com/app/2310/Quake/) support.
- [Quake 3: Arena](https://store.steampowered.com/app/2200/Quake_III_Arena/) support.
- [Hell Let Loose](https://store.steampowered.com/app/686810/Hell_Let_Loose/) support.
- [Soldier of Fortune 2](https://www.gog.com/en/game/soldier_of_fortune_ii_double_helix_gold_edition) support.
### Breaking:
- Every function that used `&str` for the address has been changed to `&IpAddr` (thanks [@Douile](https://github.com/Douile) for the re-re-write).

View file

@ -54,6 +54,7 @@ Beware of the `Notes` column, as it contains information about query port offset
| Quake 1 | QUAKE1 | Quake 1 | |
| Quake 3: Arena | QUAKE3A | Quake 3 | |
| Hell Let Loose | HLL | Valve Protocol | Query port is 26420. Note that on this port it might not send players data, as there might be another query port that does send players data. |
| Soldier of Fortune 2 | SOF2 | Quake 3 | |
## Planned to add support:
_

View file

@ -2,7 +2,7 @@ use gamedig::protocols::{gamespy, quake};
use gamedig::protocols::minecraft::LegacyGroup;
use gamedig::protocols::valve;
use gamedig::protocols::valve::Engine;
use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bf1942, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, ffow, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, ss, tf, tf2, tfc, ts, unturned, ut, vr, GDResult, cw, quake2, quake1, quake3a, hll};
use gamedig::{aliens, aoc, arma2oa, ase, asrd, avorion, bat1944, bb2, bf1942, bm, bo, ccure, cosu, cs, cscz, csgo, css, dod, dods, doi, dst, ffow, gm, hl2dm, hldms, ins, insmic, inss, l4d, l4d2, mc, ohd, onset, pz, ror2, rust, sc, sdtd, ss, tf, tf2, tfc, ts, unturned, ut, vr, GDResult, cw, quake2, quake1, quake3a, hll, sof2};
use std::env;
use std::net::IpAddr;
@ -130,6 +130,7 @@ fn main() -> GDResult<()> {
"quake1" => println!("{:#?}", quake1::query(ip, port)?),
"quake3a" => println!("{:#?}", quake3a::query(ip, port)?),
"hll" => println!("{:#?}", hll::query(ip, port)?),
"sof2" => println!("{:#?}", sof2::query(ip, port)?),
_ => panic!("Undefined game: {}", args[1]),
};

View file

@ -102,3 +102,5 @@ pub mod quake1;
pub mod quake3a;
/// Hell Let Loose
pub mod hll;
/// Soldier of Fortune 2
pub mod sof2;

9
src/games/sof2.rs Normal file
View file

@ -0,0 +1,9 @@
use std::net::IpAddr;
use crate::GDResult;
use crate::protocols::quake;
use crate::protocols::quake::Response;
use crate::protocols::quake::two::Player;
pub fn query(address: &IpAddr, port: Option<u16>) -> GDResult<Response<Player>> {
quake::three::query(address, port.unwrap_or(20100), None)
}