From 84cba1b84204b5e4c81a91a541a33192f1439a8b Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sun, 5 Sep 2021 13:30:05 +0200 Subject: [PATCH] Add: support filtering content entries for patchpacks This changes nothing for us, but allows patchpacks to add the right pieces of code to start filtering content entries on patchpack only entries. (cherry picked from commit 77860bb61e61307e4d9cf869ba62be8ca4d9d9b3) --- src/network/core/tcp_content.h | 6 +++++- src/network/network_content.cpp | 15 ++++++++++++++- src/rev.cpp.in | 7 +++++++ src/rev.h | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/network/core/tcp_content.h b/src/network/core/tcp_content.h index 52cae1e0ed..527ad12ca9 100644 --- a/src/network/core/tcp_content.h +++ b/src/network/core/tcp_content.h @@ -28,7 +28,11 @@ protected: /** * Client requesting a list of content info: * byte type - * uint32 openttd version + * uint32 openttd version (or 0xFFFFFFFF if using a list) + * Only if the above value is 0xFFFFFFFF: + * uint8 count + * string branch-name ("vanilla" for upstream OpenTTD) + * string release version (like "12.0") * @param p The packet that was just received. * @return True upon success, otherwise false. */ diff --git a/src/network/network_content.cpp b/src/network/network_content.cpp index b0174c4b66..c03044156f 100644 --- a/src/network/network_content.cpp +++ b/src/network/network_content.cpp @@ -207,7 +207,20 @@ void ClientNetworkContentSocketHandler::RequestContentList(ContentType type) Packet *p = new Packet(PACKET_CONTENT_CLIENT_INFO_LIST); p->Send_uint8 ((byte)type); - p->Send_uint32(_openttd_newgrf_version); + p->Send_uint32(0xffffffff); + p->Send_uint8 (1); + p->Send_string("vanilla"); + p->Send_string(_openttd_content_version); + + /* Patchpacks can extend the list with one. In BaNaNaS metadata you can + * add a branch in the 'compatibility' list, to filter on this. If you want + * your patchpack to be mentioned in the BaNaNaS web-interface, create an + * issue on https://github.com/OpenTTD/bananas-api asking for this. + + p->Send_string("patchpack"); // Or what-ever the name of your patchpack is. + p->Send_string(_openttd_content_version_patchpack); + + */ this->SendPacket(p); } diff --git a/src/rev.cpp.in b/src/rev.cpp.in index 0049c21f8f..976943731e 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -79,6 +79,13 @@ const byte _openttd_revision_modified = ${REV_MODIFIED}; */ const byte _openttd_revision_tagged = ${REV_ISTAG}; +/** + * To check compatibility of BaNaNaS content, this version string is used. + * It should never contain things like "beta", but only the release version + * we are compatible with. + */ +const char _openttd_content_version[] = "12.0"; + /** * The NewGRF revision of OTTD: * bits meaning. diff --git a/src/rev.h b/src/rev.h index dd2674f025..e3bee3538a 100644 --- a/src/rev.h +++ b/src/rev.h @@ -18,6 +18,7 @@ extern const char _openttd_revision_year[]; extern const char _openttd_build_configure_defines[]; extern const byte _openttd_revision_modified; extern const byte _openttd_revision_tagged; +extern const char _openttd_content_version[]; extern const uint32 _openttd_newgrf_version; bool IsReleasedVersion();