diff --git a/.github/badges/node.svg b/.github/badges/node.svg index 19112f1..18d8a03 100644 --- a/.github/badges/node.svg +++ b/.github/badges/node.svg @@ -1,5 +1,5 @@ - - Node game coverage: 17% + + Node game coverage: 12% @@ -13,8 +13,8 @@ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 5fc7376..ca0e1de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,8 +33,7 @@ Generics: - Changed `score` type (and the function) of player from `u32` to `i32`. Games: -- Renamed game definitions to better match node-gamedig (subject to change again in the next release). (by @Douile) -- Renamed game implementations to match new definition names. (by @Douile) +- Rename some game definitions and implementations to follow a stable ID naming system. Protocols: - Valve: @@ -64,6 +63,8 @@ reported by the server are the same, errors if not, enabled by default. (by @Dou 3. Renamed `players_sample` to `players`. 4. Added an optional parameter, `RequestSettings`, which contains fields that are used when creating the handshake packet (this solves some servers not responding to the query). (by @Douile) +5. Legacy versions naming has been changed to represent up to what version they can query, `LegacyBV1_8` (Beta 1.8 to +1.3) -> `LegacyV1_3` and `LegacyV1_4` (1.4 to 1.5) -> `LegacyV1_5` (and their enums accordingly). - Minecraft Bedrock 1. Renamed `version_protocol` to `protocol_version`. diff --git a/GAMES.md b/GAMES.md index 54b0a36..633ce7e 100644 --- a/GAMES.md +++ b/GAMES.md @@ -3,64 +3,64 @@ one of the implemented protocols might work too, but that isn't guaranteed. Beware of the `Notes` column, as it contains information about query port offsets or other query requirements/information. # Supported games: -| Game | Use name | Protocol | Notes | -|------------------------------------|-------------|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Team Fortress 2 | TF2 | Valve | | -| The Ship | SHIP | Valve (*Altered) | | -| Counter-Strike: Global Offensive | CSGO | Valve | The server must have the cvar `host_players_show` set to `2` to get the full player list. | -| Counter-Strike: Source | CSS | Valve | | -| Day of Defeat: Source | DODS | Valve | | -| Left 4 Dead | LEFT4DEAD | Valve | | -| Left 4 Dead 2 | LEFT4DEAD2 | Valve | | -| Half-Life 2 Deathmatch | HL2DM | Valve | | -| Alien Swarm | ALIENSWARM | Valve | | -| Alien Swarm: Reactive Drop | ASRD | Valve | | -| Insurgency | INSURGENCY | Valve | | +| Game | Use name | Protocol | Notes | +|------------------------------------|---------------------|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Team Fortress 2 | TEAMFORTRESS2 | Valve | | +| The Ship | THESHIP | Valve (*Altered) | | +| Counter-Strike: Global Offensive | CSGO | Valve | The server must have the cvar `host_players_show` set to `2` to get the full player list. | +| Counter-Strike: Source | CSS | Valve | | +| Day of Defeat: Source | DODS | Valve | | +| Left 4 Dead | LEFT4DEAD | Valve | | +| Left 4 Dead 2 | LEFT4DEAD2 | Valve | | +| Half-Life 2 Deathmatch | HL2D | Valve | | +| Alien Swarm | ALIENSWARM | Valve | | +| Alien Swarm: Reactive Drop | ASRD | Valve | | +| Insurgency | INSURGENCY | Valve | | | Insurgency: Sandstorm | INSURGENCYSANDSTORM | Valve | Query port offset: 1. | -| Insurgency: Modern Infantry Combat | INSURGENCYMIC | Valve | | -| Counter-Strike: Condition Zero | CSCZ | Valve GoldSrc | | -| Day of Defeat | DOD | Valve GoldSrc | | -| Minecraft | MINECRAFT | Proprietary | Bedrock edition provides a different response compared to the Java edition, query specifically for bedrock to get them, otherwise, only matching fields will be provided. | -| 7 Days To Die | SD2D | Valve | | -| ARK: Survival Evolved | ARKSE | Valve | | -| Unturned | UNTURNED | Valve | | -| The Forest | THEFOREST | Valve GoldSrc | Query port offset: 1. | -| Team Fortress Classic | TFC | Valve | | -| Sven Co-op | SVENCOOP | Valve GoldSrc | | -| Rust | RUST | Valve | | -| Counter-Strike | CS | Valve GoldSrc | | -| Arma 2: Operation Arrowhead | ARMA2OA | Valve | Query port offset: 1. | -| Day of Infamy | DOI | Valve | | -| Half-Life Deathmatch: Source | HLDMS | Valve | | -| Risk of Rain 2 | ROR2 | Valve | Query port offset: 1. | -| Battalion 1944 | BAT1944 | Valve | Query port offset: 3. It is strongly recommended to also query the rules, as it sends basic server info in them. | -| Black Mesa | BLACKMESA | Valve | | -| Project Zomboid | PRZOMBOID | Valve | | -| Age of Chivalry | AGEOFCHIVALRY | Valve | | -| Don't Starve Together | DST | Valve | Query port is 27016. | -| Colony Survival | COLONYSURVIVAL | Valve | | -| Onset | ONSET | Valve | Query port is 7776. | -| Codename CURE | CODENAMECURE | Valve | | -| Ballistic Overkill | BALLISTICOVERKILL | Valve | Query port is 27016. | -| BrainBread 2 | BRAINBREAD2 | Valve | | -| Avorion | AVORION | Valve | Query port is 27020. | -| Operation: Harsh Doorstop | OHD | Valve | Query port is 27005. | -| V Rising | VRISING | Valve | Query port is 27016. | -| Unreal Tournament | UT | GameSpy 1 | Query Port offset: 1. | -| Battlefield 1942 | BF1942 | GameSpy 1 | Query port is 23000. | -| Serious Sam | SS | GameSpy 1 | Query Port offset: 1. | -| Frontlines: Fuel of War | FFOW | Valve (*Altered) | Query Port offset: 2. | +| Insurgency: Modern Infantry Combat | IMIC | Valve | | +| Counter-Strike: Condition Zero | CSCZ | Valve GoldSrc | | +| Day of Defeat | DOD | Valve GoldSrc | | +| Minecraft | MINECRAFT | Proprietary | Bedrock edition provides a different response compared to the Java edition, query specifically for bedrock to get them, otherwise, only matching fields will be provided. | +| 7 Days To Die | SD2D | Valve | | +| ARK: Survival Evolved | ASE | Valve | | +| Unturned | UNTURNED | Valve | | +| The Forest | THEFOREST | Valve GoldSrc | Query port offset: 1. | +| Team Fortress Classic | TFC | Valve | | +| Sven Co-op | SCO | Valve GoldSrc | | +| Rust | RUST | Valve | | +| Counter-Strike | COUNTERSTRIKE | Valve GoldSrc | | +| Arma 2: Operation Arrowhead | A2OA | Valve | Query port offset: 1. | +| Day of Infamy | DOI | Valve | | +| Half-Life Deathmatch: Source | HLDS | Valve | | +| Risk of Rain 2 | ROR2 | Valve | Query port offset: 1. | +| Battalion 1944 | BATTALION1944 | Valve | Query port offset: 3. It is strongly recommended to also query the rules, as it sends basic server info in them. | +| Black Mesa | BLACKMESA | Valve | | +| Project Zomboid | PROJECTZOMBOID | Valve | | +| Age of Chivalry | AOC | Valve | | +| Don't Starve Together | DST | Valve | Query port is 27016. | +| Colony Survival | COLONYSURVIVAL | Valve | | +| Onset | ONSET | Valve | Query port is 7776. | +| Codename CURE | CODENAMECURE | Valve | | +| Ballistic Overkill | BALLISTICOVERKILL | Valve | Query port is 27016. | +| BrainBread 2 | BRAINBREAD2 | Valve | | +| Avorion | AVORION | Valve | Query port is 27020. | +| Operation: Harsh Doorstop | OHD | Valve | Query port is 27005. | +| V Rising | VRISING | Valve | Query port is 27016. | +| Unreal Tournament | UNREALTOURNAMENT | GameSpy 1 | Query Port offset: 1. | +| Battlefield 1942 | B1942 | GameSpy 1 | Query port is 23000. | +| Serious Sam | SERIOUSSAM | GameSpy 1 | Query Port offset: 1. | +| Frontlines: Fuel of War | FFOW | Valve (*Altered) | Query Port offset: 2. | | Crysis Wars | CRYSISWARS | GameSpy 3 | | -| Quake 2 | QUAKE2 | Quake 2 | | -| Quake 1 | QUAKE1 | Quake 1 | | -| Quake 3: Arena | QUAKE3 | 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 | | -| Halo: Combat Evolved | HALOCE | GameSpy 2 | | -| Just Cause 2: Multiplayer | JC2MP | GameSpy 3 (*Altered) | | -| Warsow | WARSOW | Quake 3 | | -| Creativerse | CREATIVERSE | Valve | Query Port offset: 1. | -| Garry's Mod | GARRYSMOD | Valve | +| Quake 2 | QUAKE2 | Quake 2 | | +| Quake 1 | QUAKE1 | Quake 1 | | +| Quake 3: Arena | QUAKE3 | 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 | | +| Halo: Combat Evolved | HCE | GameSpy 2 | | +| Just Cause 2: Multiplayer | JC2M | GameSpy 3 (*Altered) | | +| Warsow | WARSOW | Quake 3 | | +| Creativerse | CREATIVERSE | Valve | Query Port offset: 1. | +| Garry's Mod | GARRYSMOD | Valve | | ## Planned to add support: _ diff --git a/README.md b/README.md index efa95b4..f537825 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,10 @@ Pick a game/service/protocol (check the [GAMES](GAMES.md), [SERVICES](SERVICES.m [Team Fortress 2](https://store.steampowered.com/app/440/Team_Fortress_2/) query example: ```rust -use gamedig::games::tf2; +use gamedig::games::teamfortress2; fn main() { - let response = tf2::query(&"127.0.0.1".parse().unwrap(), None); + let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), None); // None is the default port (which is 27015), could also be Some(27015) match response { // Result type, must check what it is... diff --git a/examples/generic.rs b/examples/generic.rs index 3c0650c..4935bee 100644 --- a/examples/generic.rs +++ b/examples/generic.rs @@ -99,13 +99,13 @@ mod test { } #[test] - fn battlefield() { test_game("bf1942"); } + fn battlefield1942() { test_game("battlefield1942"); } #[test] fn minecraft() { test_game("minecraft"); } #[test] - fn tf2() { test_game("tf2"); } + fn teamfortress2() { test_game("teamfortress2"); } #[test] fn quake() { test_game("quake3"); } diff --git a/examples/minecraft.rs b/examples/minecraft.rs index 84ba123..00ffb14 100644 --- a/examples/minecraft.rs +++ b/examples/minecraft.rs @@ -1,10 +1,10 @@ -use gamedig::games::mc; +use gamedig::games::minecraft; use gamedig::protocols::minecraft::RequestSettings; fn main() { // or Some(), None is the default protocol port (which is 25565 for java // and 19132 for bedrock) - let response = mc::query(&"127.0.0.1".parse().unwrap(), None); + let response = minecraft::query(&"127.0.0.1".parse().unwrap(), None); // This will fail if no server is available locally! match response { @@ -15,7 +15,7 @@ fn main() { // This is an example to query a server with a hostname to be specified in the // packet. Passing -1 on the protocol_version means anything, note that // an invalid value here might result in server not responding. - let response = mc::query_java( + let response = minecraft::query_java( &"209.222.114.62".parse().unwrap(), Some(25565), Some(RequestSettings { diff --git a/examples/tf2.rs b/examples/teamfortress2.rs similarity index 70% rename from examples/tf2.rs rename to examples/teamfortress2.rs index 75cd95f..787497c 100644 --- a/examples/tf2.rs +++ b/examples/teamfortress2.rs @@ -1,7 +1,7 @@ -use gamedig::games::tf2; +use gamedig::games::teamfortress2; fn main() { - let response = tf2::query(&"127.0.0.1".parse().unwrap(), None); + let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), None); // or Some(27015), None is the default protocol port (which is 27015) match response { diff --git a/src/games/arma2oa.rs b/src/games/a2oa.rs similarity index 90% rename from src/games/arma2oa.rs rename to src/games/a2oa.rs index 83f3c77..ba83f54 100644 --- a/src/games/arma2oa.rs +++ b/src/games/a2oa.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(2304)), - SteamApp::ARMA2OA.as_engine(), + SteamApp::A2OA.as_engine(), None, None, )?; diff --git a/src/games/cs.rs b/src/games/aoc.rs similarity index 91% rename from src/games/cs.rs rename to src/games/aoc.rs index f6a5c85..acf88ae 100644 --- a/src/games/cs.rs +++ b/src/games/aoc.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::CS.as_engine(), + SteamApp::AOC.as_engine(), None, None, )?; diff --git a/src/games/tf2.rs b/src/games/ase.rs similarity index 91% rename from src/games/tf2.rs rename to src/games/ase.rs index e94b543..07467dc 100644 --- a/src/games/tf2.rs +++ b/src/games/ase.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::TF2.as_engine(), + SteamApp::ASE.as_engine(), None, None, )?; diff --git a/src/games/bat1944.rs b/src/games/battalion1944.rs similarity index 97% rename from src/games/bat1944.rs rename to src/games/battalion1944.rs index a55e56e..dc49d9e 100644 --- a/src/games/bat1944.rs +++ b/src/games/battalion1944.rs @@ -8,7 +8,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let mut valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(7780)), - SteamApp::BAT1944.as_engine(), + SteamApp::BATTALION1944.as_engine(), None, None, )?; diff --git a/src/games/bf1942.rs b/src/games/battlefield1942.rs similarity index 100% rename from src/games/bf1942.rs rename to src/games/battlefield1942.rs diff --git a/src/games/ageofchivalry.rs b/src/games/counterstrike.rs similarity index 89% rename from src/games/ageofchivalry.rs rename to src/games/counterstrike.rs index fc56901..83fa4e7 100644 --- a/src/games/ageofchivalry.rs +++ b/src/games/counterstrike.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::AGEOFCHIVALRY.as_engine(), + SteamApp::COUNTERSTRIKE.as_engine(), None, None, )?; diff --git a/src/games/definitions.rs b/src/games/definitions.rs index 95c04f3..dac75e3 100644 --- a/src/games/definitions.rs +++ b/src/games/definitions.rs @@ -28,26 +28,26 @@ pub static GAMES: Map<&'static str, Game> = phf_map! { "minecraft" => game!("Minecraft", 25565, Protocol::Minecraft(None)), "minecraftping" => game!("Minecraft", 25565, Protocol::Minecraft(None)), // Query with specific minecraft protocols - "minecraftbe" => game!("Minecraft (bedrock)", 19132, Protocol::Minecraft(Some(Server::Bedrock))), - "minecraftpe" => game!("Minecraft (bedrock/pocket edition)", 19132, Protocol::Minecraft(Some(Server::Bedrock))), + "minecraftbedrock" => game!("Minecraft (bedrock)", 19132, Protocol::Minecraft(Some(Server::Bedrock))), + "minecraftpocket" => game!("Minecraft (bedrock/pocket edition)", 19132, Protocol::Minecraft(Some(Server::Bedrock))), "minecraftjava" => game!("Minecraft (java)", 25565, Protocol::Minecraft(Some(Server::Java))), - "minecraft-legacy-1.6" => game!("Minecraft (legacy v1.6)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_6)))), - "minecraft-legacy-1.4" => game!("Minecraft (legacy v1.4-1.5)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_4)))), - "minecraft-legacy-b1.8" => game!("Minecraft (legacy vB1.8-1.3)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::VB1_8)))), + "minecraftlegacy16" => game!("Minecraft (legacy v1.6)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_6)))), + "minecraftlegacy15" => game!("Minecraft (legacy v1.4-1.5)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_5)))), + "minecraftlegacy13" => game!("Minecraft (legacy vB1.8-1.3)", 25565, Protocol::Minecraft(Some(Server::Legacy(LegacyGroup::V1_3)))), "alienswarm" => game!("Alien Swarm", 27015, Protocol::Valve(SteamApp::ALIENSWARM)), - "ageofchivalry" => game!("Age of Chivalry", 27015, Protocol::Valve(SteamApp::AGEOFCHIVALRY)), - "arma2oa" => game!("ARMA 2: Operation Arrowhead", 2304, Protocol::Valve(SteamApp::ARMA2OA)), - "arkse" => game!("ARK: Survival Evolved", 27015, Protocol::Valve(SteamApp::ARKSE)), + "aoc" => game!("Age of Chivalry", 27015, Protocol::Valve(SteamApp::AOC)), + "a2oa" => game!("ARMA 2: Operation Arrowhead", 2304, Protocol::Valve(SteamApp::A2OA)), + "ase" => game!("ARK: Survival Evolved", 27015, Protocol::Valve(SteamApp::ASE)), "asrd" => game!("Alien Swarm: Reactive Drop", 2304, Protocol::Valve(SteamApp::ASRD)), "avorion" => game!("Avorion", 27020, Protocol::Valve(SteamApp::AVORION)), - "bat1944" => game!("Battalion 1944", 7780, Protocol::Valve(SteamApp::BAT1944)), + "battalion1944" => game!("Battalion 1944", 7780, Protocol::Valve(SteamApp::BATTALION1944)), "brainbread2" => game!("BrainBread 2", 27015, Protocol::Valve(SteamApp::BRAINBREAD2)), - "bf1942" => game!("Battlefield 1942", 23000, Protocol::Gamespy(GameSpyVersion::One)), + "battlefield1942" => game!("Battlefield 1942", 23000, Protocol::Gamespy(GameSpyVersion::One)), "blackmesa" => game!("Black Mesa", 27015, Protocol::Valve(SteamApp::BLACKMESA)), "ballisticoverkill" => game!("Ballistic Overkill", 27016, Protocol::Valve(SteamApp::BALLISTICOVERKILL)), "codenamecure" => game!("Codename CURE", 27015, Protocol::Valve(SteamApp::CODENAMECURE)), "colonysurvival" => game!("Colony Survival", 27004, Protocol::Valve(SteamApp::COLONYSURVIVAL)), - "cs" => game!("Counter-Strike", 27015, Protocol::Valve(SteamApp::CS)), + "counterstrike" => game!("Counter-Strike", 27015, Protocol::Valve(SteamApp::COUNTERSTRIKE)), "cscz" => game!("Counter Strike: Condition Zero", 27015, Protocol::Valve(SteamApp::CSCZ)), "csgo" => game!("Counter-Strike: Global Offensive", 27015, Protocol::Valve(SteamApp::CSGO)), "css" => game!("Counter-Strike: Source", 27015, Protocol::Valve(SteamApp::CSS)), @@ -59,35 +59,35 @@ pub static GAMES: Map<&'static str, Game> = phf_map! { "dst" => game!("Don't Starve Together", 27016, Protocol::Valve(SteamApp::DST)), "ffow" => game!("Frontlines: Fuel of War", 5478, Protocol::PROPRIETARY(ProprietaryProtocol::FFOW)), "garrysmod" => game!("Garry's Mod", 27016, Protocol::Valve(SteamApp::GARRYSMOD)), - "hl2dm" => game!("Half-Life 2 Deathmatch", 27015, Protocol::Valve(SteamApp::HL2DM)), - "haloce" => game!("Halo: Combat Evolved", 2302, Protocol::Gamespy(GameSpyVersion::Two)), - "hldms" => game!("Half-Life Deathmatch: Source", 27015, Protocol::Valve(SteamApp::HLDMS)), + "hl2d" => game!("Half-Life 2 Deathmatch", 27015, Protocol::Valve(SteamApp::HL2D)), + "hce" => game!("Halo: Combat Evolved", 2302, Protocol::Gamespy(GameSpyVersion::Two)), + "hlds" => game!("Half-Life Deathmatch: Source", 27015, Protocol::Valve(SteamApp::HLDS)), "hll" => game!("Hell Let Loose", 26420, Protocol::Valve(SteamApp::HLL)), "insurgency" => game!("Insurgency", 27015, Protocol::Valve(SteamApp::INSURGENCY)), - "insurgencymic" => game!("Insurgency: Modern Infantry Combat", 27015, Protocol::Valve(SteamApp::INSURGENCYMIC)), + "imic" => game!("Insurgency: Modern Infantry Combat", 27015, Protocol::Valve(SteamApp::IMIC)), "insurgencysandstorm" => game!("Insurgency: Sandstorm", 27131, Protocol::Valve(SteamApp::INSURGENCYSANDSTORM)), "left4dead" => game!("Left 4 Dead", 27015, Protocol::Valve(SteamApp::LEFT4DEAD)), "left4dead2" => game!("Left 4 Dead 2", 27015, Protocol::Valve(SteamApp::LEFT4DEAD2)), "ohd" => game!("Operation: Harsh Doorstop", 27005, Protocol::Valve(SteamApp::OHD)), "onset" => game!("Onset", 7776, Protocol::Valve(SteamApp::ONSET)), - "przomboid" => game!("Project Zomboid", 16261, Protocol::Valve(SteamApp::PRZOMBOID)), + "projectzomboid" => game!("Project Zomboid", 16261, Protocol::Valve(SteamApp::PROJECTZOMBOID)), "quake1" => game!("Quake 1", 27500, Protocol::Quake(QuakeVersion::One)), "quake2" => game!("Quake 2", 27910, Protocol::Quake(QuakeVersion::Two)), "quake3" => game!("Quake 3: Arena", 27960, Protocol::Quake(QuakeVersion::Three)), "ror2" => game!("Risk of Rain 2", 27016, Protocol::Valve(SteamApp::ROR2)), "rust" => game!("Rust", 27015, Protocol::Valve(SteamApp::RUST)), - "svencoop" => game!("Sven Co-op", 27015, Protocol::Valve(SteamApp::SVEENCOOP)), + "sco" => game!("Sven Co-op", 27015, Protocol::Valve(SteamApp::SCO)), "7d2d" => game!("7 Days To Die", 26900, Protocol::Valve(SteamApp::SD2D)), "sof2" => game!("Soldier of Fortune 2", 20100, Protocol::Quake(QuakeVersion::Three)), - "ss" => game!("Serious Sam", 25601, Protocol::Gamespy(GameSpyVersion::One)), + "serioussam" => game!("Serious Sam", 25601, Protocol::Gamespy(GameSpyVersion::One)), "theforest" => game!("The Forest", 27016, Protocol::Valve(SteamApp::THEFOREST)), - "tf2" => game!("Team Fortress 2", 27015, Protocol::Valve(SteamApp::TF2)), + "teamfortress2" => game!("Team Fortress 2", 27015, Protocol::Valve(SteamApp::TEAMFORTRESS2)), "tfc" => game!("Team Fortress Classic", 27015, Protocol::Valve(SteamApp::TFC)), - "ship" => game!("The Ship", 27015, Protocol::PROPRIETARY(ProprietaryProtocol::TheShip)), + "theship" => game!("The Ship", 27015, Protocol::PROPRIETARY(ProprietaryProtocol::TheShip)), "unturned" => game!("Unturned", 27015, Protocol::Valve(SteamApp::UNTURNED)), - "ut" => game!("Unreal Tournament", 7778, Protocol::Gamespy(GameSpyVersion::One)), + "unrealtournament" => game!("Unreal Tournament", 7778, Protocol::Gamespy(GameSpyVersion::One)), "vrising" => game!("V Rising", 27016, Protocol::Valve(SteamApp::VRISING)), - "jc2mp" => game!("Just Cause 2: Multiplayer", 7777, Protocol::PROPRIETARY(ProprietaryProtocol::JC2MP)), + "jc2m" => game!("Just Cause 2: Multiplayer", 7777, Protocol::PROPRIETARY(ProprietaryProtocol::JC2M)), "warsow" => game!("Warsow", 44400, Protocol::Quake(QuakeVersion::Three)), }; @@ -101,7 +101,7 @@ mod test { let ignore = [ "mod", // Module file "definitions", // This file - "mc", // Has various defs + "minecraft", // Has various defs "sd2d", // Module names cannot start with numbers ]; diff --git a/src/games/haloce.rs b/src/games/hce.rs similarity index 100% rename from src/games/haloce.rs rename to src/games/hce.rs diff --git a/src/games/arkse.rs b/src/games/hl2d.rs similarity index 91% rename from src/games/arkse.rs rename to src/games/hl2d.rs index 0b03459..0553f73 100644 --- a/src/games/arkse.rs +++ b/src/games/hl2d.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::ARKSE.as_engine(), + SteamApp::HL2D.as_engine(), None, None, )?; diff --git a/src/games/hldms.rs b/src/games/hldms.rs deleted file mode 100644 index f8236e0..0000000 --- a/src/games/hldms.rs +++ /dev/null @@ -1,16 +0,0 @@ -use crate::{ - protocols::valve::{self, game, SteamApp}, - GDResult, -}; -use std::net::{IpAddr, SocketAddr}; - -pub fn query(address: &IpAddr, port: Option) -> GDResult { - let valve_response = valve::query( - &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::HLDMS.as_engine(), - None, - None, - )?; - - Ok(game::Response::new_from_valve_response(valve_response)) -} diff --git a/src/games/hl2dm.rs b/src/games/hlds.rs similarity index 91% rename from src/games/hl2dm.rs rename to src/games/hlds.rs index 70f311d..1b9fc42 100644 --- a/src/games/hl2dm.rs +++ b/src/games/hlds.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::HL2DM.as_engine(), + SteamApp::HLDS.as_engine(), None, None, )?; diff --git a/src/games/imic.rs b/src/games/imic.rs new file mode 100644 index 0000000..0d5aaa8 --- /dev/null +++ b/src/games/imic.rs @@ -0,0 +1,16 @@ +use crate::{ + protocols::valve::{self, game, SteamApp}, + GDResult, +}; +use std::net::{IpAddr, SocketAddr}; + +pub fn query(address: &IpAddr, port: Option) -> GDResult { + let valve_response = valve::query( + &SocketAddr::new(*address, port.unwrap_or(27015)), + SteamApp::IMIC.as_engine(), + None, + None, + )?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/games/insurgencymic.rs b/src/games/insurgencymic.rs deleted file mode 100644 index df287e8..0000000 --- a/src/games/insurgencymic.rs +++ /dev/null @@ -1,16 +0,0 @@ -use crate::{ - protocols::valve::{self, game, SteamApp}, - GDResult, -}; -use std::net::{IpAddr, SocketAddr}; - -pub fn query(address: &IpAddr, port: Option) -> GDResult { - let valve_response = valve::query( - &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::INSURGENCYMIC.as_engine(), - None, - None, - )?; - - Ok(game::Response::new_from_valve_response(valve_response)) -} diff --git a/src/games/jc2mp.rs b/src/games/jc2m.rs similarity index 99% rename from src/games/jc2mp.rs rename to src/games/jc2m.rs index 67948c0..3ad22b2 100644 --- a/src/games/jc2mp.rs +++ b/src/games/jc2m.rs @@ -37,7 +37,7 @@ pub struct Response { } impl CommonResponse for Response { - fn as_original(&self) -> GenericResponse { GenericResponse::JC2MP(self) } + fn as_original(&self) -> GenericResponse { GenericResponse::JC2M(self) } fn game_version(&self) -> Option<&str> { Some(&self.game_version) } fn description(&self) -> Option<&str> { Some(&self.description) } diff --git a/src/games/mc.rs b/src/games/minecraft.rs similarity index 100% rename from src/games/mc.rs rename to src/games/minecraft.rs diff --git a/src/games/mod.rs b/src/games/mod.rs index a7c85c8..46ed2c2 100644 --- a/src/games/mod.rs +++ b/src/games/mod.rs @@ -3,14 +3,14 @@ #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; -/// Age of Chivalry -pub mod ageofchivalry; +/// ARMA 2: Operation Arrowhead +pub mod a2oa; /// Alien Swarm pub mod alienswarm; +/// Age of Chivalry +pub mod aoc; /// ARK: Survival Evolved -pub mod arkse; -/// ARMA 2: Operation Arrowhead -pub mod arma2oa; +pub mod ase; /// Alien Swarm: Reactive Drop pub mod asrd; /// Avorion @@ -18,9 +18,9 @@ pub mod avorion; /// Ballistic Overkill pub mod ballisticoverkill; /// Battalion 1944 -pub mod bat1944; +pub mod battalion1944; /// Battlefield 1942 -pub mod bf1942; +pub mod battlefield1942; /// Black Mesa pub mod blackmesa; /// BrainBread 2 @@ -29,12 +29,12 @@ pub mod brainbread2; pub mod codenamecure; /// Colony Survival pub mod colonysurvival; +/// Counter-Strike +pub mod counterstrike; /// Creativerse pub mod creativerse; /// Crysis Wars pub mod crysiswars; -/// Counter-Strike -pub mod cs; /// Counter Strike: Condition Zero pub mod cscz; /// Counter-Strike: Global Offensive @@ -54,33 +54,33 @@ pub mod ffow; /// Garry's Mod pub mod garrysmod; /// Halo: Combat Evolved -pub mod haloce; +pub mod hce; /// Half-Life 2 Deathmatch -pub mod hl2dm; +pub mod hl2d; /// Half-Life Deathmatch: Source -pub mod hldms; +pub mod hlds; /// Hell Let Loose pub mod hll; +/// Insurgency: Modern Infantry Combat +pub mod imic; /// Insurgency pub mod insurgency; -/// Insurgency: Modern Infantry Combat -pub mod insurgencymic; /// Insurgency: Sandstorm pub mod insurgencysandstorm; /// Just Cause 2: Multiplayer -pub mod jc2mp; +pub mod jc2m; /// Left 4 Dead pub mod left4dead; /// Left 4 Dead 2 pub mod left4dead2; /// Minecraft -pub mod mc; +pub mod minecraft; /// Operation: Harsh Doorstop pub mod ohd; /// Onset pub mod onset; /// Project Zomboid -pub mod przomboid; +pub mod projectzomboid; /// Quake 1 pub mod quake1; /// Quake 2 @@ -91,26 +91,26 @@ pub mod quake3; pub mod ror2; /// Rust pub mod rust; +/// Sven Co-op +pub mod sco; /// 7 Days To Die pub mod sd2d; -/// The Ship -pub mod ship; +/// Serious Sam +pub mod serioussam; /// Soldier of Fortune 2 pub mod sof2; -/// Serious Sam -pub mod ss; -/// Sven Co-op -pub mod svencoop; /// Team Fortress 2 -pub mod tf2; +pub mod teamfortress2; /// Team Fortress Classic pub mod tfc; /// The Forest pub mod theforest; +/// The Ship +pub mod theship; +/// Unreal Tournament +pub mod unrealtournament; /// Unturned pub mod unturned; -/// Unreal Tournament -pub mod ut; /// V Rising pub mod vrising; /// Warsow @@ -222,12 +222,10 @@ pub fn query_with_timeout_and_extra_settings( Protocol::PROPRIETARY(protocol) => { match protocol { ProprietaryProtocol::TheShip => { - ship::query_with_timeout(address, port, timeout_settings).map(Box::new)? + theship::query_with_timeout(address, port, timeout_settings).map(Box::new)? } ProprietaryProtocol::FFOW => ffow::query_with_timeout(address, port, timeout_settings).map(Box::new)?, - ProprietaryProtocol::JC2MP => { - jc2mp::query_with_timeout(address, port, timeout_settings).map(Box::new)? - } + ProprietaryProtocol::JC2M => jc2m::query_with_timeout(address, port, timeout_settings).map(Box::new)?, } } }) diff --git a/src/games/przomboid.rs b/src/games/projectzomboid.rs similarity index 89% rename from src/games/przomboid.rs rename to src/games/projectzomboid.rs index 37a23cb..24e2a24 100644 --- a/src/games/przomboid.rs +++ b/src/games/projectzomboid.rs @@ -7,7 +7,7 @@ use std::net::{IpAddr, SocketAddr}; pub fn query(address: &IpAddr, port: Option) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(16261)), - SteamApp::PRZOMBOID.as_engine(), + SteamApp::PROJECTZOMBOID.as_engine(), None, None, )?; diff --git a/src/games/sco.rs b/src/games/sco.rs new file mode 100644 index 0000000..f7b08cc --- /dev/null +++ b/src/games/sco.rs @@ -0,0 +1,16 @@ +use crate::{ + protocols::valve::{self, game, SteamApp}, + GDResult, +}; +use std::net::{IpAddr, SocketAddr}; + +pub fn query(address: &IpAddr, port: Option) -> GDResult { + let valve_response = valve::query( + &SocketAddr::new(*address, port.unwrap_or(27015)), + SteamApp::SCO.as_engine(), + None, + None, + )?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/games/ss.rs b/src/games/serioussam.rs similarity index 100% rename from src/games/ss.rs rename to src/games/serioussam.rs diff --git a/src/games/svencoop.rs b/src/games/svencoop.rs deleted file mode 100644 index 5707f87..0000000 --- a/src/games/svencoop.rs +++ /dev/null @@ -1,16 +0,0 @@ -use crate::{ - protocols::valve::{self, game, SteamApp}, - GDResult, -}; -use std::net::{IpAddr, SocketAddr}; - -pub fn query(address: &IpAddr, port: Option) -> GDResult { - let valve_response = valve::query( - &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::SVEENCOOP.as_engine(), - None, - None, - )?; - - Ok(game::Response::new_from_valve_response(valve_response)) -} diff --git a/src/games/teamfortress2.rs b/src/games/teamfortress2.rs new file mode 100644 index 0000000..418c8e6 --- /dev/null +++ b/src/games/teamfortress2.rs @@ -0,0 +1,16 @@ +use crate::{ + protocols::valve::{self, game, SteamApp}, + GDResult, +}; +use std::net::{IpAddr, SocketAddr}; + +pub fn query(address: &IpAddr, port: Option) -> GDResult { + let valve_response = valve::query( + &SocketAddr::new(*address, port.unwrap_or(27015)), + SteamApp::TEAMFORTRESS2.as_engine(), + None, + None, + )?; + + Ok(game::Response::new_from_valve_response(valve_response)) +} diff --git a/src/games/ship.rs b/src/games/theship.rs similarity index 99% rename from src/games/ship.rs rename to src/games/theship.rs index 7abf515..47de24f 100644 --- a/src/games/ship.rs +++ b/src/games/theship.rs @@ -136,7 +136,7 @@ pub fn query_with_timeout( ) -> GDResult { let valve_response = valve::query( &SocketAddr::new(*address, port.unwrap_or(27015)), - SteamApp::SHIP.as_engine(), + SteamApp::THESHIP.as_engine(), None, timeout_settings, )?; diff --git a/src/games/ut.rs b/src/games/unrealtournament.rs similarity index 100% rename from src/games/ut.rs rename to src/games/unrealtournament.rs diff --git a/src/lib.rs b/src/lib.rs index 2819ab9..7cafba7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,9 +4,9 @@ //! //! ## For a specific game //! ``` -//! use gamedig::games::tf2; +//! use gamedig::games::teamfortress2; //! -//! let response = tf2::query(&"127.0.0.1".parse().unwrap(), None); // None is the default port (which is 27015), could also be Some(27015) +//! let response = teamfortress2::query(&"127.0.0.1".parse().unwrap(), None); // None is the default port (which is 27015), could also be Some(27015) //! match response { // Result type, must check what it is... //! Err(error) => println!("Couldn't query, error: {}", error), //! Ok(r) => println!("{:#?}", r) @@ -17,7 +17,7 @@ //! ``` //! use gamedig::games::{GAMES, query}; //! -//! let game = GAMES.get("tf2").unwrap(); // Get a game definition, the full list can be found in src/games/mod.rs +//! let game = GAMES.get("teamfortress2").unwrap(); // Get a game definition, the full list can be found in src/games/mod.rs //! let response = query(game, &"127.0.0.1".parse().unwrap(), None); // None will use the default port //! match response { //! Err(error) => println!("Couldn't query, error: {}", error), diff --git a/src/protocols/minecraft/protocol/legacy_bv1_8.rs b/src/protocols/minecraft/protocol/legacy_v1_3.rs similarity index 96% rename from src/protocols/minecraft/protocol/legacy_bv1_8.rs rename to src/protocols/minecraft/protocol/legacy_v1_3.rs index b2140e2..5658912 100644 --- a/src/protocols/minecraft/protocol/legacy_bv1_8.rs +++ b/src/protocols/minecraft/protocol/legacy_v1_3.rs @@ -14,12 +14,12 @@ use std::net::SocketAddr; use byteorder::BigEndian; -pub struct LegacyBV1_8 { +pub struct LegacyV1_3 { socket: TcpSocket, retry_count: usize, } -impl LegacyBV1_8 { +impl LegacyV1_3 { fn new(address: &SocketAddr, timeout_settings: Option) -> GDResult { let socket = TcpSocket::new(address)?; socket.apply_timeout(&timeout_settings)?; @@ -72,7 +72,7 @@ impl LegacyBV1_8 { favicon: None, previews_chat: None, enforces_secure_chat: None, - server_type: Server::Legacy(LegacyGroup::VB1_8), + server_type: Server::Legacy(LegacyGroup::V1_3), }) } diff --git a/src/protocols/minecraft/protocol/legacy_v1_4.rs b/src/protocols/minecraft/protocol/legacy_v1_5.rs similarity index 96% rename from src/protocols/minecraft/protocol/legacy_v1_4.rs rename to src/protocols/minecraft/protocol/legacy_v1_5.rs index ba4733e..c94738d 100644 --- a/src/protocols/minecraft/protocol/legacy_v1_4.rs +++ b/src/protocols/minecraft/protocol/legacy_v1_5.rs @@ -13,12 +13,12 @@ use crate::{ }; use std::net::SocketAddr; -pub struct LegacyV1_4 { +pub struct LegacyV1_5 { socket: TcpSocket, retry_count: usize, } -impl LegacyV1_4 { +impl LegacyV1_5 { fn new(address: &SocketAddr, timeout_settings: Option) -> GDResult { let socket = TcpSocket::new(address)?; socket.apply_timeout(&timeout_settings)?; @@ -75,7 +75,7 @@ impl LegacyV1_4 { favicon: None, previews_chat: None, enforces_secure_chat: None, - server_type: Server::Legacy(LegacyGroup::V1_4), + server_type: Server::Legacy(LegacyGroup::V1_5), }) } diff --git a/src/protocols/minecraft/protocol/mod.rs b/src/protocols/minecraft/protocol/mod.rs index 00e9eba..885f990 100644 --- a/src/protocols/minecraft/protocol/mod.rs +++ b/src/protocols/minecraft/protocol/mod.rs @@ -4,8 +4,8 @@ use crate::{ protocol::{ bedrock::Bedrock, java::Java, - legacy_bv1_8::LegacyBV1_8, - legacy_v1_4::LegacyV1_4, + legacy_v1_3::LegacyV1_3, + legacy_v1_5::LegacyV1_5, legacy_v1_6::LegacyV1_6, }, BedrockResponse, @@ -20,8 +20,8 @@ use std::net::SocketAddr; mod bedrock; mod java; -mod legacy_bv1_8; -mod legacy_v1_4; +mod legacy_v1_3; +mod legacy_v1_5; mod legacy_v1_6; /// Queries a Minecraft server with all the protocol variants one by one (Java @@ -61,11 +61,11 @@ pub fn query_legacy(address: &SocketAddr, timeout_settings: Option GDResult { match group { LegacyGroup::V1_6 => LegacyV1_6::query(address, timeout_settings), - LegacyGroup::V1_4 => LegacyV1_4::query(address, timeout_settings), - LegacyGroup::VB1_8 => LegacyBV1_8::query(address, timeout_settings), + LegacyGroup::V1_5 => LegacyV1_5::query(address, timeout_settings), + LegacyGroup::V1_3 => LegacyV1_3::query(address, timeout_settings), } } diff --git a/src/protocols/minecraft/types.rs b/src/protocols/minecraft/types.rs index 0a9b49d..fafc77a 100644 --- a/src/protocols/minecraft/types.rs +++ b/src/protocols/minecraft/types.rs @@ -35,9 +35,9 @@ pub enum LegacyGroup { /// 1.6 V1_6, /// 1.4 - 1.5 - V1_4, + V1_5, /// Beta 1.8 - 1.3 - VB1_8, + V1_3, } /// Information about a player. diff --git a/src/protocols/types.rs b/src/protocols/types.rs index a2855eb..a830e63 100644 --- a/src/protocols/types.rs +++ b/src/protocols/types.rs @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; pub enum ProprietaryProtocol { TheShip, FFOW, - JC2MP, + JC2M, } /// Enumeration of all valid protocol types @@ -36,11 +36,11 @@ pub enum GenericResponse<'a> { Quake(quake::VersionedResponse<'a>), Valve(&'a valve::Response), #[cfg(feature = "games")] - TheShip(&'a crate::games::ship::Response), + TheShip(&'a crate::games::theship::Response), #[cfg(feature = "games")] FFOW(&'a crate::games::ffow::Response), #[cfg(feature = "games")] - JC2MP(&'a crate::games::jc2mp::Response), + JC2M(&'a crate::games::jc2m::Response), } /// All player types @@ -52,9 +52,9 @@ pub enum GenericPlayer<'a> { Minecraft(&'a minecraft::Player), Gamespy(gamespy::VersionedPlayer<'a>), #[cfg(feature = "games")] - TheShip(&'a crate::games::ship::TheShipPlayer), + TheShip(&'a crate::games::theship::TheShipPlayer), #[cfg(feature = "games")] - JCMP2(&'a crate::games::jc2mp::Player), + JCMP2(&'a crate::games::jc2m::Player), } pub trait CommonResponse { diff --git a/src/protocols/valve/protocol.rs b/src/protocols/valve/protocol.rs index 4fd95a1..4cde7e9 100644 --- a/src/protocols/valve/protocol.rs +++ b/src/protocols/valve/protocol.rs @@ -304,7 +304,7 @@ impl ValveProtocol { let environment_type = Environment::from_gldsrc(buffer.read()?)?; let has_password = buffer.read::()? == 1; let vac_secured = buffer.read::()? == 1; - let the_ship = match *engine == SteamApp::SHIP.as_engine() { + let the_ship = match *engine == SteamApp::THESHIP.as_engine() { false => None, true => { Some(TheShip { @@ -389,11 +389,11 @@ impl ValveProtocol { name: buffer.read_string::(None)?, score: buffer.read()?, duration: buffer.read()?, - deaths: match *engine == SteamApp::SHIP.as_engine() { + deaths: match *engine == SteamApp::THESHIP.as_engine() { false => None, true => Some(buffer.read()?), }, - money: match *engine == SteamApp::SHIP.as_engine() { + money: match *engine == SteamApp::THESHIP.as_engine() { false => None, true => Some(buffer.read()?), }, diff --git a/src/protocols/valve/types.rs b/src/protocols/valve/types.rs index 26cfcf6..4082ece 100644 --- a/src/protocols/valve/types.rs +++ b/src/protocols/valve/types.rs @@ -254,7 +254,7 @@ impl Request { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum SteamApp { /// Counter-Strike - CS, + COUNTERSTRIKE, /// Creativerse CREATIVERSE, /// Team Fortress Classic @@ -268,11 +268,11 @@ pub enum SteamApp { /// Day of Defeat: Source DODS, /// Half-Life 2 Deathmatch - HL2DM, + HL2D, /// Half-Life Deathmatch: Source - HLDMS, + HLDS, /// Team Fortress 2 - TF2, + TEAMFORTRESS2, /// Left 4 Dead LEFT4DEAD, /// Left 4 Dead @@ -282,26 +282,26 @@ pub enum SteamApp { /// Counter-Strike: Global Offensive CSGO, /// The Ship - SHIP, + THESHIP, /// Garry's Mod GARRYSMOD, /// Age of Chivalry - AGEOFCHIVALRY, + AOC, /// Insurgency: Modern Infantry Combat - INSURGENCYMIC, + IMIC, /// ARMA 2: Operation Arrowhead - ARMA2OA, + A2OA, /// Project Zomboid - PRZOMBOID, + PROJECTZOMBOID, /// Insurgency INSURGENCY, /// Sven Co-op - SVEENCOOP, + SCO, /// 7 Days To Die SD2D, /// Rust RUST, - /// Vallistic Overkill + /// Ballistic Overkill BALLISTICOVERKILL, /// Don't Starve Together DST, @@ -322,9 +322,9 @@ pub enum SteamApp { /// Unturned UNTURNED, /// ARK: Survival Evolved - ARKSE, + ASE, /// Battalion 1944 - BAT1944, + BATTALION1944, /// Insurgency: Sandstorm INSURGENCYSANDSTORM, /// Alien Swarm: Reactive Drop @@ -347,19 +347,19 @@ impl SteamApp { match self { Self::CSS => Engine::new_source(240), Self::DODS => Engine::new_source(300), - Self::HL2DM => Engine::new_source(320), - Self::HLDMS => Engine::new_source(360), - Self::TF2 => Engine::new_source(440), + Self::HL2D => Engine::new_source(320), + Self::HLDS => Engine::new_source(360), + Self::TEAMFORTRESS2 => Engine::new_source(440), Self::LEFT4DEAD => Engine::new_source(500), Self::LEFT4DEAD2 => Engine::new_source(550), Self::ALIENSWARM => Engine::new_source(630), Self::CSGO => Engine::new_source(730), - Self::SHIP => Engine::new_source(2400), + Self::THESHIP => Engine::new_source(2400), Self::GARRYSMOD => Engine::new_source(4000), - Self::AGEOFCHIVALRY => Engine::new_source(17510), - Self::INSURGENCYMIC => Engine::new_source(17700), - Self::ARMA2OA => Engine::new_source(33930), - Self::PRZOMBOID => Engine::new_source(108_600), + Self::AOC => Engine::new_source(17510), + Self::IMIC => Engine::new_source(17700), + Self::A2OA => Engine::new_source(33930), + Self::PROJECTZOMBOID => Engine::new_source(108_600), Self::INSURGENCY => Engine::new_source(222_880), Self::SD2D => Engine::new_source(251_570), Self::RUST => Engine::new_source(252_490), @@ -374,8 +374,8 @@ impl SteamApp { Self::DOI => Engine::new_source(447_820), Self::THEFOREST => Engine::new_source(556_450), Self::UNTURNED => Engine::new_source(304_930), - Self::ARKSE => Engine::new_source(346_110), - Self::BAT1944 => Engine::new_source(489_940), + Self::ASE => Engine::new_source(346_110), + Self::BATTALION1944 => Engine::new_source(489_940), Self::INSURGENCYSANDSTORM => Engine::new_source(581_320), Self::ASRD => Engine::new_source(563_560), Self::ROR2 => Engine::new_source(632_360),