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, EType Type, int StorageType)
 ~CSkinContainer ()
bool operator< (const CSkinContainer &Other) const
CSkinContaineroperator= (CSkinContainer &&Other)=default
const char * Name () 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]
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 >::iterator > m_UsageEntryIterator

Friends

class CSkins

Detailed Description

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

Member Enumeration Documentation

◆ EState

enum class CSkins::CSkinContainer::EState
strong
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

enum class CSkins::CSkinContainer::EType
strong
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,
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

◆ 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

◆ CSkins

friend class CSkins
friend

Member Data Documentation

◆ m_AlwaysLoaded

bool CSkins::CSkinContainer::m_AlwaysLoaded
private

◆ m_aName

char CSkins::CSkinContainer::m_aName[MAX_SKIN_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: