250e85732d
new shop system more config options arena & hype per season stats battle pass better variant system complete vbuck & starter pack store fix bugs related to deleting account update launcher endpoints fixed gift loot not deleting
92 lines
3.0 KiB
Go
92 lines
3.0 KiB
Go
package shop
|
|
|
|
import "github.com/ectrc/snow/aid"
|
|
|
|
func NewStorefrontCatalogSection(name string, type_ StorefrontCatalogOfferEnum) *StorefrontCatalogSection {
|
|
return &StorefrontCatalogSection{
|
|
Name: name,
|
|
SectionType: type_,
|
|
Offers: make([]interface{}, 0),
|
|
}
|
|
}
|
|
|
|
func (s *StorefrontCatalogSection) GenerateFortniteCatalogSectionResponse() aid.JSON {
|
|
catalogEntiresResponse := []aid.JSON{}
|
|
|
|
for _, entry := range s.Offers {
|
|
switch s.SectionType {
|
|
case StorefrontCatalogOfferEnumItem:
|
|
s := entry.(*StorefrontCatalogOfferTypeItem)
|
|
catalogEntiresResponse = append(catalogEntiresResponse, s.GenerateFortniteCatalogOfferResponse())
|
|
case StorefrontCatalogOfferEnumCurrency:
|
|
s := entry.(*StorefrontCatalogOfferTypeCurrency)
|
|
catalogEntiresResponse = append(catalogEntiresResponse, s.GenerateFortniteCatalogOfferResponse())
|
|
case StorefrontCatalogOfferEnumStarterKit:
|
|
s := entry.(*StorefrontCatalogOfferTypeStarterKit)
|
|
catalogEntiresResponse = append(catalogEntiresResponse, s.GenerateFortniteCatalogOfferResponse())
|
|
case StorefrontCatalogOfferEnumBattlePass:
|
|
s := entry.(*StorefrontCatalogOfferTypeBattlePass)
|
|
catalogEntiresResponse = append(catalogEntiresResponse, s.GenerateFortniteCatalogOfferResponse())
|
|
}
|
|
}
|
|
|
|
return aid.JSON{
|
|
"name": s.Name,
|
|
"catalogEntries": catalogEntiresResponse,
|
|
}
|
|
}
|
|
|
|
func (s *StorefrontCatalogSection) GetGroupedOffersLength() int {
|
|
if s.SectionType != StorefrontCatalogOfferEnumItem {
|
|
return len(s.Offers)
|
|
}
|
|
|
|
newOffers := []*StorefrontCatalogOfferTypeItem{}
|
|
for _, offer := range s.Offers {
|
|
newOffers = append(newOffers, offer.(*StorefrontCatalogOfferTypeItem))
|
|
}
|
|
|
|
groupedOffers := map[string][]*StorefrontCatalogOfferTypeItem{}
|
|
for _, offer := range newOffers {
|
|
if _, ok := groupedOffers[offer.Categories[0]]; !ok {
|
|
groupedOffers[offer.Categories[0]] = []*StorefrontCatalogOfferTypeItem{}
|
|
}
|
|
|
|
groupedOffers[offer.Categories[0]] = append(groupedOffers[offer.Categories[0]], offer)
|
|
}
|
|
|
|
return len(groupedOffers)
|
|
}
|
|
|
|
func (s *StorefrontCatalogSection) AddOffer(offer interface{}) {
|
|
s.Offers = append(s.Offers, offer)
|
|
}
|
|
|
|
func (s *StorefrontCatalogSection) GetOfferByID(offerID string) (interface{}, StorefrontCatalogOfferEnum) {
|
|
for _, offer := range s.Offers {
|
|
switch s.SectionType {
|
|
case StorefrontCatalogOfferEnumItem:
|
|
o := offer.(*StorefrontCatalogOfferTypeItem)
|
|
if o.GetOfferID() == offerID {
|
|
return o, StorefrontCatalogOfferEnumItem
|
|
}
|
|
case StorefrontCatalogOfferEnumCurrency:
|
|
o := offer.(*StorefrontCatalogOfferTypeCurrency)
|
|
if o.GetOfferID() == offerID {
|
|
return o, StorefrontCatalogOfferEnumCurrency
|
|
}
|
|
case StorefrontCatalogOfferEnumStarterKit:
|
|
o := offer.(*StorefrontCatalogOfferTypeStarterKit)
|
|
if o.GetOfferID() == offerID {
|
|
return o, StorefrontCatalogOfferEnumStarterKit
|
|
}
|
|
case StorefrontCatalogOfferEnumBattlePass:
|
|
o := offer.(*StorefrontCatalogOfferTypeBattlePass)
|
|
if o.GetOfferID() == offerID {
|
|
return o, StorefrontCatalogOfferEnumBattlePass
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil, -1
|
|
} |