You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
4.5 KiB
110 lines
4.5 KiB
5 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef ECON_STORECATEGORY_H
|
||
|
#define ECON_STORECATEGORY_H
|
||
|
#ifdef _WIN32
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#if defined( GC_DLL )
|
||
|
#include "econ/econ_storemetadata.h"
|
||
|
#endif
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
typedef CRC32_t StoreCategoryID_t;
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
// sort by price highest to lowest
|
||
|
class CEconStoreEntryLess
|
||
|
{
|
||
|
public:
|
||
|
bool Less( const uint16& lhs, const uint16& rhs, void *pContext );
|
||
|
};
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
class CEconStoreCategoryManager
|
||
|
{
|
||
|
public:
|
||
|
CEconStoreCategoryManager();
|
||
|
|
||
|
bool BInit( CEconStorePriceSheet *pPriceSheet, KeyValues *pStoreMetaDataKV );
|
||
|
bool BOnPriceSheetLoaded( CEconStorePriceSheet *pPriceSheet );
|
||
|
|
||
|
static StoreCategoryID_t GetCategoryID( const char *pCategoryName );
|
||
|
|
||
|
static StoreCategoryID_t k_CategoryID_Invalid;
|
||
|
static StoreCategoryID_t k_CategoryID_New;
|
||
|
static StoreCategoryID_t k_CategoryID_Weapons;
|
||
|
static StoreCategoryID_t k_CategoryID_Limited;
|
||
|
static StoreCategoryID_t k_CategoryID_Maps;
|
||
|
static StoreCategoryID_t k_CategoryID_Cosmetics;
|
||
|
static StoreCategoryID_t k_CategoryID_Taunts;
|
||
|
static StoreCategoryID_t k_CategoryID_Tools;
|
||
|
static StoreCategoryID_t k_CategoryID_Bundles;
|
||
|
static StoreCategoryID_t k_CategoryID_Collections;
|
||
|
static StoreCategoryID_t k_CategoryID_Popular;
|
||
|
static StoreCategoryID_t k_CategoryID_OnSale;
|
||
|
static StoreCategoryID_t k_CategoryID_Featured;
|
||
|
static StoreCategoryID_t k_CategoryID_ClassBundles;
|
||
|
static StoreCategoryID_t k_CategoryID_Highlighted;
|
||
|
|
||
|
struct StoreCategory_t
|
||
|
{
|
||
|
StoreCategory_t() { V_memset( this, 0, sizeof( StoreCategory_t ) ); }
|
||
|
|
||
|
int GetNumSubcategories() const { return m_vecSubcategories.Count(); }
|
||
|
bool HasSubcategories() const { return m_vecSubcategories.Count() > 1; }
|
||
|
bool BIsSubcategory() const { return m_unParentCategoryID != CEconStoreCategoryManager::k_CategoryID_Invalid; }
|
||
|
|
||
|
bool m_bIsHome:1; // Home page? Default=no.
|
||
|
bool m_bUseLargeCells:1; // Display large icons in the store. Default=no.
|
||
|
bool m_bDefaultTab:1; // Is this the default tab? Default=no
|
||
|
bool m_bVisible:1; // Should this tab be displayed in the store? Default=yes.
|
||
|
bool m_bInGameOnly:1; // Is this category only to be displayed in the in-game store (vs. the web store)?
|
||
|
const char *m_pchRawName; // Raw name of the tab
|
||
|
const char *m_pchName; // Name of the tab
|
||
|
const char *m_pchPageClass; // Code class of the store page.
|
||
|
const char *m_pchSortType; // How to sort the page.
|
||
|
const char *m_pchPageRes; // Res file to use for the page.
|
||
|
StoreCategoryID_t m_unID; // A unique ID that is stable across sessions
|
||
|
StoreCategoryID_t m_unParentCategoryID;
|
||
|
CUtlVector<const StoreCategory_t *> m_vecSubcategories; // A list of ID's for all subcategories
|
||
|
CUtlSortVector<uint16, CEconStoreEntryLess> m_vecEntries; // Vector of items for sale
|
||
|
#if defined( GC_DLL )
|
||
|
const CEconStoreMetaData::DropdownPrefabInfo_t *m_pDropdownPrefab;
|
||
|
#endif
|
||
|
};
|
||
|
|
||
|
const StoreCategoryID_t GetHomeCategoryID() const { Assert( m_unHomeCategoryID != k_CategoryID_Invalid ); return m_unHomeCategoryID; }
|
||
|
|
||
|
const StoreCategory_t *GetStoreCategoryFromID( StoreCategoryID_t unID ) const;
|
||
|
int GetNumCategories( void ) const { return m_vecCategories.Count(); }
|
||
|
const StoreCategory_t *GetCategoryFromIndex( int i ) const { Assert(i >= 0 && i < m_vecCategories.Count()); return &m_vecCategories[i]; }
|
||
|
|
||
|
StoreCategory_t *GetFeaturedItems() const { return NULL; }
|
||
|
|
||
|
private:
|
||
|
bool BInitCategory( CEconStorePriceSheet *pPriceSheet, StoreCategory_t *pCategory, KeyValues *pKVTab );
|
||
|
|
||
|
StoreCategory_t *GetStoreCategoryFromID( StoreCategoryID_t unID );
|
||
|
|
||
|
CUtlVector< StoreCategory_t > m_vecCategories;
|
||
|
|
||
|
StoreCategoryID_t m_unHomeCategoryID; // The ID for the home tab
|
||
|
};
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
CEconStoreCategoryManager *GEconStoreCategoryManager();
|
||
|
void ClearEconStoreCategoryManager();
|
||
|
|
||
|
//-------------------------------------------------------------------------------------------------------------------------------
|
||
|
|
||
|
#endif
|