diff --git a/fortnite/shop.go b/fortnite/shop.go index 3f97fa5..af5fda1 100644 --- a/fortnite/shop.go +++ b/fortnite/shop.go @@ -56,7 +56,18 @@ func (c *Catalog) GenerateFortniteCatalog(p *person.Person) aid.JSON { } return json +} +func (c *Catalog) IsDuplicate(entry Entry) bool { + for _, storefront := range c.Storefronts { + for _, catalogEntry := range storefront.CatalogEntries { + if catalogEntry.Grants[0] == entry.Grants[0] { + return true + } + } + } + + return false } type Storefront struct { @@ -109,7 +120,6 @@ func NewCatalogEntry(meta ...aid.JSON) *Entry { } } - func (e *Entry) AddGrant(templateId string) *Entry { e.Grants = append(e.Grants, templateId) return e @@ -170,7 +180,10 @@ func (e *Entry) SetNewDisplayAsset(asset string) *Entry { } func (e *Entry) SetDisplayAssetPath(path string) *Entry { - e.DisplayAssetPath = strings.ReplaceAll(path, "FortniteGame/Content", "/Game") + paths := strings.Split(path, "/") + id := paths[len(paths)-1] + + e.DisplayAssetPath = "/Game/Catalog/DisplayAssets/" + id + "." + id return e } @@ -301,12 +314,18 @@ func GenerateStorefront() { } entry.SetNewDisplayAsset(item.ID) - entry.SetDisplayAssetPath(item.DisplayAssetPath) + if item.DisplayAssetPath != "" { + entry.SetDisplayAssetPath(item.DisplayAssetPath) + } entry.SetPrice(GetPriceForRarity(item.Rarity.BackendValue)) entry.AddGrant(item.Type.BackendValue + ":" + item.ID) entry.SetTileSize("Normal") entry.Priority = 1 + if storefront.IsDuplicate(*entry) { + continue + } + daily.Add(*entry) } @@ -321,16 +340,27 @@ func GenerateStorefront() { } entry.SetNewDisplayAsset(item.ID) - entry.SetDisplayAssetPath(item.DisplayAssetPath) + if item.DisplayAssetPath != "" { + entry.SetDisplayAssetPath(item.DisplayAssetPath) + } entry.SetPrice(GetPriceForRarity(item.Rarity.BackendValue)) entry.AddGrant(item.Type.BackendValue + ":" + item.ID) entry.SetTileSize("Small") + if storefront.IsDuplicate(*entry) { + continue + } + daily.Add(*entry) } + minimum := 8 + if aid.Config.Fortnite.Season < 14 { + minimum = 3 + } + setsAdded := 0 - for len(weekly.CatalogEntries) < 8 || setsAdded < 2 { + for len(weekly.CatalogEntries) < minimum || setsAdded < 2 { set := Cosmetics.GetRandomSet() itemsAdded := 0 @@ -346,7 +376,11 @@ func GenerateStorefront() { if item.Type.BackendValue == "AthenaCharacter" { entry.SetTileSize("Normal") - itemsAdded += 2 + if aid.Config.Fortnite.Season < 14 { + itemsAdded += 1 + } else { + itemsAdded += 2 + } entry.Priority = 1 } else { entry.SetTileSize("Small") @@ -354,7 +388,9 @@ func GenerateStorefront() { } entry.SetNewDisplayAsset(item.ID) - entry.SetDisplayAssetPath(item.DisplayAssetPath) + if item.DisplayAssetPath != "" { + entry.SetDisplayAssetPath(item.DisplayAssetPath) + } entry.SetPrice(GetPriceForRarity(item.Rarity.BackendValue)) entry.AddGrant(item.Type.BackendValue + ":" + item.ID) @@ -366,6 +402,10 @@ func GenerateStorefront() { } for _, entry := range itemsToAdd { + if storefront.IsDuplicate(*entry) { + continue + } + weekly.Add(*entry) } diff --git a/handlers/common.go b/handlers/common.go index 676ab59..68c6b82 100644 --- a/handlers/common.go +++ b/handlers/common.go @@ -57,12 +57,12 @@ func GetContentPages(c *fiber.Ctx) error { seasonString := strconv.Itoa(aid.Config.Fortnite.Season) return c.Status(fiber.StatusOK).JSON(aid.JSON{ - "battlepassaboutmessages": aid.JSON{ - "news": aid.JSON{ - "messages": []aid.JSON{}, - }, - "lastModified": "0000-00-00T00:00:00.000Z", - }, + // "battlepassaboutmessages": aid.JSON{ + // "news": aid.JSON{ + // "messages": []aid.JSON{}, + // }, + // "lastModified": "0000-00-00T00:00:00.000Z", + // }, "subgameselectdata": aid.JSON{ "saveTheWorldUnowned": aid.JSON{ "message": aid.JSON{ @@ -160,40 +160,6 @@ func GetContentPages(c *fiber.Ctx) error { "sectionDisplayName": "Battle Pass", "bShowIneligibleOffers": false, }, - { - "bSortOffersByOwnership": false, - "bShowIneligibleOffersIfGiftable": false, - "bEnableToastNotification": false, - "background": aid.JSON{ - "stage": "default", - "_type": "DynamicBackground", - "key": "vault", - }, - "_type": "ShopSection", - "landingPriority": 3, - "bHidden": false, - "sectionId": "SnowSection", - "bShowTimer": false, - "sectionDisplayName": "Snow Specials", - "bShowIneligibleOffers": false, - }, - { - "bSortOffersByOwnership": false, - "bShowIneligibleOffersIfGiftable": false, - "bEnableToastNotification": false, - "background": aid.JSON{ - "stage": "default", - "_type": "DynamicBackground", - "key": "vault", - }, - "_type": "ShopSection", - "landingPriority": 3, - "bHidden": false, - "sectionId": "OGBundles", - "bShowTimer": false, - "sectionDisplayName": "OG Bundles", - "bShowIneligibleOffers": false, - }, }, }, "lastModified": "0000-00-00T00:00:00.000Z",