DDraceNetwork Documentation
Loading...
Searching...
No Matches
CSkins::CSkinContainer Class Reference

#include <skins.h>

Collaboration diagram for CSkins::CSkinContainer:
[legend]

Public Types

enum class  EType { LOCAL , DOWNLOAD }
 
enum class  EState {
  UNLOADED , PENDING , LOADING , LOADED ,
  ERROR , NOT_FOUND
}
 

Public Member Functions

 CSkinContainer (CSkinContainer &&Other)=default
 
 CSkinContainer (CSkins *pSkins, const char *pName, const char *pNormalizedName, EType Type, int StorageType)
 
 ~CSkinContainer ()
 
bool operator< (const CSkinContainer &Other) const
 
CSkinContaineroperator= (CSkinContainer &&Other)=default
 
const charName () const
 
const charNormalizedName () const
 
EType Type () const
 
int StorageType () const
 
bool IsVanilla () const
 
bool IsSpecial () const
 
bool IsAlwaysLoaded () const
 
EState State () const
 
const std::unique_ptr< CSkin > & Skin () const
 
void RequestLoad ()
 

Private Member Functions

EState DetermineInitialState () const
 
void SetState (EState State)
 

Private Attributes

CSkinsm_pSkins
 
char m_aName [MAX_SKIN_LENGTH]
 
char m_aNormalizedName [NORMALIZED_SKIN_NAME_LENGTH]
 
EType m_Type
 
int m_StorageType
 
bool m_Vanilla
 
bool m_Special
 
bool m_AlwaysLoaded
 
EState m_State = EState::UNLOADED
 
std::unique_ptr< CSkinm_pSkin = nullptr
 
std::shared_ptr< CAbstractSkinLoadJobm_pLoadJob = nullptr
 
std::optional< std::chrono::nanoseconds > m_FirstLoadRequest
 
std::optional< std::chrono::nanoseconds > m_LastLoadRequest
 
std::optional< std::list< std::string_view >::iteratorm_UsageEntryIterator
 

Friends

class CSkins
 

Detailed Description

Container for a skin, its loading state, job and various meta data.

Member Enumeration Documentation

◆ EState

Enumerator
UNLOADED 

Skin is unloaded and loading is not desired.

PENDING 

Skin is unloaded and should be loaded when a slot is free. Skin will enter LOADING state when maximum number of loaded skins is not exceeded.

LOADING 

Skin is currently loading, iff m_pLoadJob is set.

LOADED 

Skin is loaded, iff m_pSkin is set.

ERROR 

Skin failed to be loaded due to an unexpected error.

NOT_FOUND 

Skin failed to be downloaded because it could not be found.

◆ EType

Enumerator
LOCAL 

Skin should be loaded locally (from skins folder).

DOWNLOAD 

Skin should be downloaded (or loaded from downloadedskins).

Constructor & Destructor Documentation

◆ CSkinContainer() [1/2]

CSkins::CSkinContainer::CSkinContainer ( CSkinContainer &&  Other)
default

◆ CSkinContainer() [2/2]

CSkins::CSkinContainer::CSkinContainer ( CSkins pSkins,
const char pName,
const char pNormalizedName,
EType  Type,
int  StorageType 
)

◆ ~CSkinContainer()

CSkins::CSkinContainer::~CSkinContainer ( )

Member Function Documentation

◆ DetermineInitialState()

CSkins::CSkinContainer::EState CSkins::CSkinContainer::DetermineInitialState ( ) const
private

◆ IsAlwaysLoaded()

bool CSkins::CSkinContainer::IsAlwaysLoaded ( ) const
inline

◆ IsSpecial()

bool CSkins::CSkinContainer::IsSpecial ( ) const
inline

◆ IsVanilla()

bool CSkins::CSkinContainer::IsVanilla ( ) const
inline

◆ Name()

const char * CSkins::CSkinContainer::Name ( ) const
inline

◆ NormalizedName()

const char * CSkins::CSkinContainer::NormalizedName ( ) const
inline

◆ operator<()

bool CSkins::CSkinContainer::operator< ( const CSkinContainer Other) const

◆ operator=()

CSkinContainer & CSkins::CSkinContainer::operator= ( CSkinContainer &&  Other)
default

◆ RequestLoad()

void CSkins::CSkinContainer::RequestLoad ( )

Request that this skin should be loaded and should stay loaded.

◆ SetState()

void CSkins::CSkinContainer::SetState ( EState  State)
private

◆ Skin()

const std::unique_ptr< CSkin > & CSkins::CSkinContainer::Skin ( ) const
inline

◆ State()

EState CSkins::CSkinContainer::State ( ) const
inline

◆ StorageType()

int CSkins::CSkinContainer::StorageType ( ) const
inline

◆ Type()

EType CSkins::CSkinContainer::Type ( ) const
inline

Friends And Related Symbol Documentation

◆ CSkins

Member Data Documentation

◆ m_AlwaysLoaded

bool CSkins::CSkinContainer::m_AlwaysLoaded
private

◆ m_aName

char CSkins::CSkinContainer::m_aName[MAX_SKIN_LENGTH]
private

◆ m_aNormalizedName

char CSkins::CSkinContainer::m_aNormalizedName[NORMALIZED_SKIN_NAME_LENGTH]
private

◆ m_FirstLoadRequest

std::optional<std::chrono::nanoseconds> CSkins::CSkinContainer::m_FirstLoadRequest
private

The time when loading of this skin was first requested.

◆ m_LastLoadRequest

std::optional<std::chrono::nanoseconds> CSkins::CSkinContainer::m_LastLoadRequest
private

The time when loading of this skin was most recently requested.

◆ m_pLoadJob

std::shared_ptr<CAbstractSkinLoadJob> CSkins::CSkinContainer::m_pLoadJob = nullptr
private

◆ m_pSkin

std::unique_ptr<CSkin> CSkins::CSkinContainer::m_pSkin = nullptr
private

◆ m_pSkins

CSkins* CSkins::CSkinContainer::m_pSkins
private

◆ m_Special

bool CSkins::CSkinContainer::m_Special
private

◆ m_State

EState CSkins::CSkinContainer::m_State = EState::UNLOADED
private

◆ m_StorageType

int CSkins::CSkinContainer::m_StorageType
private

◆ m_Type

EType CSkins::CSkinContainer::m_Type
private

◆ m_UsageEntryIterator

std::optional<std::list<std::string_view>::iterator> CSkins::CSkinContainer::m_UsageEntryIterator
private

Iterator into CSkins::m_SkinsUsageList for this skin container.

◆ m_Vanilla

bool CSkins::CSkinContainer::m_Vanilla
private

The documentation for this class was generated from the following files: