From 8c17f896b403dc5eb271cecb5e6703d88585dee5 Mon Sep 17 00:00:00 2001 From: funman300 Date: Wed, 19 Aug 2026 00:02:13 +0000 Subject: [PATCH] fifa17 store: native category art via displayGroupAssetId The all-groups landing (shown on first store entry) renders one tile per group whose background is the client-bundled packs_backgrounds_%d.dds, selected by displayGroupAssetId. Live-probed on the retail client 2026-08-18: index 0 is blank; indices 1/2/3 render real pack art. Assign non-zero per category (bronze=1, silver=2, gold/mypacks=3) so that landing shows native pack art instead of blank shields. The persistent tabbed store (MY PACKS/BRONZE/SILVER/ GOLD PACKS) draws pack art from the packs themselves and is unaffected. LIVE-CONFIRMED end-to-end: native tabbed store renders the real 6-pack catalogue with correct prices (Gold 5000 / Premium Gold 7500), counts (12 items, 10 gold, 1/3 rares), pack art, and no "or %1s" line. --- openfut-adapter-fifa17/src/fut/store_catalog.rs | 17 +++++++++++++++++ .../tests/fixtures/purchasegroup_pack70.json | 7 +++++++ .../fixtures/purchasegroup_zero_clean.json | 6 ++++++ .../fixtures/purchasegroup_zero_sentinel.json | 7 +++++++ 4 files changed, 37 insertions(+) diff --git a/openfut-adapter-fifa17/src/fut/store_catalog.rs b/openfut-adapter-fifa17/src/fut/store_catalog.rs index f37c49f..16d9eac 100644 --- a/openfut-adapter-fifa17/src/fut/store_catalog.rs +++ b/openfut-adapter-fifa17/src/fut/store_catalog.rs @@ -116,6 +116,22 @@ pub fn pack_body(p: &PackDef, idx: u64, owned: bool) -> Value { "silver" => "SILVER", _ => "BRONZE", }; + // Group background texture: FIFA 17's all-groups landing (shown on first store + // entry) renders one tile per group whose art is the client-bundled + // `packs_backgrounds_%d.dds` selected by this field. LIVE-PROBED 2026-08-18: + // index 0 is blank; 1/2/3 render real pack art — so assign non-zero per + // category and that landing shows native art instead of blank shields. The + // persistent tabbed store draws its pack art from the packs themselves and + // does not depend on this. + let group_bg: u64 = if owned { + 3 + } else { + match p.category { + "gold" => 3, + "silver" => 2, + _ => 1, + } + }; let mut body = json!({ "assetId": p.id, "id": p.id, @@ -129,6 +145,7 @@ pub fn pack_body(p: &PackDef, idx: u64, owned: bool) -> Value { "purchaseCount": 0, "isPremium": false, "sortPriority": idx, + "displayGroupAssetId": group_bg, // The tile renders `finalFunds` as its coin price; the HUD balance reads // `funds` from the /credits currencies array. We keep the pair equal. // diff --git a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_pack70.json b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_pack70.json index b51813b..218d8a5 100644 --- a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_pack70.json +++ b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_pack70.json @@ -13,6 +13,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 1, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -45,6 +46,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 2, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -77,6 +79,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 3, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -109,6 +112,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 4, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -141,6 +145,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 5, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", @@ -173,6 +178,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 6, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", @@ -205,6 +211,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 1, + "displayGroupAssetId": 3, "packContentInfo": { "bronzeQuantity": 0, "silverQuantity": 0, diff --git a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_clean.json b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_clean.json index bf34014..7f03c91 100644 --- a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_clean.json +++ b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_clean.json @@ -13,6 +13,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 1, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -45,6 +46,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 2, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -77,6 +79,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 3, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -109,6 +112,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 4, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -141,6 +145,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 5, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", @@ -173,6 +178,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 6, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", diff --git a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_sentinel.json b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_sentinel.json index 39bd88b..b2c61a6 100644 --- a/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_sentinel.json +++ b/openfut-adapter-fifa17/tests/fixtures/purchasegroup_zero_sentinel.json @@ -13,6 +13,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 1, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -45,6 +46,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 2, + "displayGroupAssetId": 1, "currencies": [ { "name": "coins", @@ -77,6 +79,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 3, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -109,6 +112,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 4, + "displayGroupAssetId": 2, "currencies": [ { "name": "coins", @@ -141,6 +145,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 5, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", @@ -173,6 +178,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 6, + "displayGroupAssetId": 3, "currencies": [ { "name": "coins", @@ -205,6 +211,7 @@ "purchaseCount": 0, "isPremium": false, "sortPriority": 1, + "displayGroupAssetId": 3, "packContentInfo": { "bronzeQuantity": 0, "silverQuantity": 0,