6 #ifndef _INC_cXSpriteMgr_H
7 #define _INC_cXSpriteMgr_H
12 #include "../GrayGUI.h"
30 class GRAY3D_LINK cXSpriteMap :
public cXTextureFile,
public cSpriteMap
36 virtual ~cXSpriteMap();
40 DeleteDeviceObjects();
48 HRESULT GetSpriteElem(ELEM_t nElem, OUT cDXSpriteElem& elem);
51 typedef cRefPtr<cXSpriteMap> cXSpriteMapPtr;
55 typedef WORD SPRITEID_t;
56 static const SPRITEID_t SPRITEID_0 = 0;
67 SPRITEID_t m_nSpriteId;
70 cXSpriteId(SPRITEID_t nSpriteId = SPRITEID_0)
71 : m_nSpriteId(nSpriteId)
75 : m_nSpriteId(GetId(eMap, nElem))
78 bool isValidId() const noexcept
80 return m_nSpriteId != SPRITEID_0;
82 static inline SPRITEID_t GetId(
SPRITEMAP_t eMap, ELEM_t nElem)
85 return (((SPRITEID_t)eMap) << 10) | (nElem & 0x3ff);
87 SPRITEID_t get_Id()
const
91 void put_Id(SPRITEID_t
id)
95 static inline SPRITEMAP_t GetMap(SPRITEID_t nSpriteId)
103 return GetMap(m_nSpriteId);
107 m_nSpriteId = GetId(eMap, get_Elem());
109 static inline ELEM_t GetElem(SPRITEID_t nSpriteId)
112 return (ELEM_t)(nSpriteId & 0x3ff);
114 ELEM_t get_Elem()
const
117 return GetElem(m_nSpriteId);
119 void put_Elem(ELEM_t nElem)
121 m_nSpriteId = GetId(get_Map(), nElem);
131 cXSpriteAnim(
SPRITEMAP_t eSheet = SPRITEMAP_INVALID, ELEM_t iElemBegin = 0, ELEM_t iElemEnd = 0,
TIMESYSD_t timeElemRateMS = 0,
bool bLoop =
true);
134 void SetAnimation(
SPRITEMAP_t eSheet, ELEM_t iElemBegin, ELEM_t iElemEnd,
TIMESYSD_t timeElemRateMS,
bool bLoop =
true);
136 void put_CurrentElem(ELEM_t nElem)
138 Calc::ClampRef(nElem, m_ElemRange.get_Min(), m_ElemRange.get_Max() + 1);
139 m_nSpriteId = GetId(get_Map(), nElem);
140 m_timeLastElem.InitTimeNow();
143 void UpdateElemTime();
146 cValueRange<ELEM_t> m_ElemRange;
149 cTimeSys m_timeLastElem;
156 cRefPtr<cXSpriteMap> GetSpriteMap(
SPRITEMAP_t eSheet)
const;
157 HRESULT GetSpriteElem(SPRITEID_t nSpriteId, OUT cDXSpriteElem& elem)
const;
158 cArrayRef<cXSpriteMap> m_aSpriteMaps;
#define GRAY3D_LINK
Definition: Gray3D.h:15
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
void ClearMap()
Definition: cSpriteMap.h:60
Definition: Gray3D.cpp:12
Definition: GrayGUI.cpp:11
SPRITEMAP_t
Definition: cXDesktopMgr.h:35
cStringT< FILECHAR_t > cStringF
A file name. checks USE_UNICODE_FN. related to cFilePath.
Definition: cFilePath.h:17
INT32 TIMESYSD_t
Time delta. signed milli-Seconds Span. cTimeSys::k_DMAX, cTimeSys::k_INF = MAILSLOT_WAIT_FOREVER.
Definition: cTimeSys.h:28
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
static void ClampRef(TYPE &rValue, TYPE low, TYPE high)
Definition: Calc.h:123