Commit graph

72 commits

Author SHA1 Message Date
CosminPerRam
8fe521749a [Protocol] Remove bufferer::remaining_data_vec function and replace its usage 2023-06-27 00:18:56 +03:00
Tom
b368877031
[Protocol] Implement generic response with dyn (#56)
* Implement generic response as enum

* First draft of implementing into_common()

* Make common response type generic

* Use macros and generics to reduce repetition

* [Games] Add dynamically dispatched CommonResponse trait

This adds two traits: "CommonResponse", and "CommonPlayer", when the
generic game query function returns a response it returns a pointer to
its original response type that implements "CommonResponse".

Both common traits require that "as_original()" be implemented, this
returns an enum containing a pointer to the original type.

Both traits have a concrete method "as_json()" that returns a struct
containing data fetched from all of its methods as. This struct
implements serde and can hence be serialized as required.

The traits require a few other methods be implemented, those being the
fields that are common across all types. All other methods have a
default None implementation so that each response type only needs to
implement methods for fields that it has.

* [Game] Implement common traits for JCMP2 response

* [Fmt] Run cargo fmt

* Fix doctest failing

* Run cargo fmt
2023-06-25 16:31:23 +03:00
Tom
4b081371f4
[Crate] Add better documentation for generic game implementation (#49) 2023-06-14 23:25:26 +03:00
Tom
d853189e06
[Games] Programmatic games by storing information as data (#45)
* Define games as structs

* Create table of response types

* Ensure serde is always included

* Remove server_ prefix in GenericResponse

* Make players online/max non-optional in generic response

* Use already existing minecraft server enum

* Implement ExtraResponses to prevent cloning when creating generic

* Add game definitions

* Add doc comments to generic types

* Include players in gamespy extra responses

* Add custom response types for TheShip and FFOW

* Cargo format differing files

* Final cleanup
2023-06-13 21:49:58 +03:00
Tom
b95b2abe0f
[Crate] Enforce formatting in CI (#46)
* [CI] Check formatting

* Format all files
2023-06-10 18:15:12 +03:00
CosminPerRam
e0830bdae5
[Protocol] Replace IpAddr with SocketAddr in protocols (#44)
* [Crate] Replace IpAddr with SocketAddr in protocols

* [Crate] Remove usage of address.to_string in socket

* [Crate] Update CHANGELOG.md
2023-06-02 01:06:24 +03:00
CosminPerRam
b3ba7df6d9 [Games] Add Hell Let Loose support. 2023-05-30 16:48:19 +03:00
Tom
3f654e0dfd
[Protocol] Enable the use of Ipv6 addresses (#41)
Replace usages of Ipv4Addr with IpAddr which allows the use of either Ipv4 or Ipv6.

This patch essentially consists of running:
"sed -i 's/Ipv4Addr/IpAddr/g' src/**/*.rs examples/*"
and fixing the errors.
2023-05-29 11:10:21 +03:00
CosminPerRam
e620398615 [Crate] Changed all address &str to &Ipv4Addr 2023-05-27 00:41:41 +03:00
CosminPerRam
fc52f3fe91 [Protocol] Add derives and serde derives to GatheringSettings 2023-05-08 02:08:22 +03:00
CosminPerRam
348147b415
[Game] Add Frontlines: Fuel of War support. (#31)
* [Game] Add initial files

* [Game] Initial support

* [Game] Add response struct

* [Game] Add query_with_timeout

* [Game] FFOW: Added some doc comments
2023-04-22 20:03:30 +03:00
Cain
1b13d39856
[Crate] Add formatting (#22)
* chore: add standard for formatting

* chore: manually tidy up imports and format

* chore: remove vscode and add to gitignore

* chore: alphabetically order and fix

* chore: format

* chore: fix format issue with payload

* chore: format as merge had unformatted code

* [format] Fix comments, change max width and binop operator

---------

Co-authored-by: CosminPerRam <cosmin.p@live.com>
2023-03-14 10:31:37 +02:00
Cain
84af4230f7
[Crate] Add feature: serde (#21)
* feat(serde): add additional derives

* fix: remove attr on internal enum

* fix add missing derive
2023-03-13 16:51:33 +02:00
Cain
bd2e373d66
[Crate] Make clippy happy (#23)
* fix: clippy::type_complexity

* fix: clippy::needless_doctest_main

* fix: clippy::read_zero_byte_vec

* fix: clippy::useless_conversion

* fix: clippy::slow_vector_initialization
2023-03-13 11:28:49 +02:00
CosminPerRam
9ad2f143dd [Crate] Use Byteorder crate 2023-03-09 16:41:13 +02:00
CosminPerRam
e163774685 [Protocols] Cargo clippy optimizations 2023-03-09 01:30:28 +02:00
CosminPerRam
cd4cbc09db [Games] V Rising support. 2023-02-19 18:37:10 +02:00
CosminPerRam
e26f0f871a [Protocol] Valve: Fix queries that require multiple challenge responses 2023-02-19 17:56:39 +02:00
CosminPerRam
99c87557c2 [Protocol] Valve: Reverse: No name players not being added to the list 2023-02-19 16:43:55 +02:00
CosminPerRam
150bc1762e [Protocol] Valve: support app and dedicated app id 2023-02-18 21:44:17 +02:00
CosminPerRam
fe46359e47 Games: Operation Harsh Doorstop support. 2023-02-18 19:00:54 +02:00
CosminPerRam
719ae9d591 Games: Avorion support. 2023-02-18 18:37:02 +02:00
CosminPerRam
e16efee488 Games: BrainBread 2 support. 2023-02-18 18:25:17 +02:00
CosminPerRam
eca9757421 Ballistic Overkill support. 2023-02-18 18:17:19 +02:00
CosminPerRam
df9005cc9f Games: Codename CURE support. 2023-02-18 18:09:20 +02:00
CosminPerRam
bdaa1c4f64 Move up SDTD Steam ID 2023-02-18 18:02:21 +02:00
CosminPerRam
649dfd81ed Games: Onset support. 2023-01-18 18:13:50 +02:00
CosminPerRam
2312ba9114 Games: Colony Survival support. 2023-01-18 18:06:08 +02:00
CosminPerRam
bbd2dd7d97 Games: Don't Starve Together support. 2023-01-18 17:57:19 +02:00
CosminPerRam
6ec2b8952c Update docs. 2023-01-17 01:21:34 +02:00
CosminPerRam
e2f42008b2 Games: Age of Chivalry support. 2023-01-16 23:10:16 +02:00
CosminPerRam
9c9a096b16 Valve Protocol: Extend split packets correctly 2023-01-16 22:44:55 +02:00
CosminPerRam
f03a1de035 Games: Add Project Zomboid support. 2023-01-16 22:03:28 +02:00
CosminPerRam
328de37b2d Games: Add Black Mesa support. 2023-01-16 21:33:28 +02:00
CosminPerRam
9bcbfbc198 Games: Add Battalion 1944 support. 2023-01-13 23:08:09 +02:00
CosminPerRam
018935fd29 Valve Protocol: Fix BadGame reported appid 2023-01-13 22:58:36 +02:00
CosminPerRam
ff789fcb90 Valve: Rename players-related fields 2023-01-13 19:36:03 +02:00
CosminPerRam
824c4d34c0 Add proper MSRV to Cargo.toml 2023-01-13 01:31:57 +02:00
CosminPerRam
e72d7bdf8b Revert error details for the BadGame error 2023-01-13 00:39:58 +02:00
CosminPerRam
c263b17651 Remove errors details as they were quite useless 2023-01-13 00:11:04 +02:00
CosminPerRam
c5a35016d1 Valve Protocol: Players with no name (name length == 0), are no more added to players details 2023-01-12 23:40:43 +02:00
CosminPerRam
5c664187f9 Remove Test: Value server rule from RoR2 2023-01-12 23:19:13 +02:00
CosminPerRam
50012dd49f Change Valve Protocol Rules to HashMap<String, String> 2023-01-12 23:04:57 +02:00
CosminPerRam
ededf93b38 Add Risk of Rain 2 support. 2023-01-09 19:02:31 +02:00
CosminPerRam
7d164d40a1 Add Copy trait to Valve Request Kind enum 2022-12-31 14:52:17 +02:00
CosminPerRam
ef8ac92506 Change valve get_server_rules to not return an Option 2022-12-31 14:35:36 +02:00
CosminPerRam
a37e2506b4 Change valve get_request_data return type from vec<u8> to Bufferer 2022-12-31 14:32:35 +02:00
CosminPerRam
0e68f8c830 Make public functions that are meant to be used internally private. 2022-12-29 16:59:51 +02:00
CosminPerRam
b09fa4ada5
Change buffer reading implementation (#8)
* Add new implementation an valve protocol refactor

* Refactor minecraft protocol with new bufferer
2022-12-29 16:30:24 +02:00
CosminPerRam
d671bb0310 Half-Life Deathmatch: Source support. 2022-11-28 21:33:09 +02:00