1 //-----------------------------------------------------------------------------
2 // File: XBResource.h
3 //
4 // Desc: Loads resources from an XPR (Xbox Packed Resource) file.
5 //
6 // Hist: 03.12.01 - New for April XDK release
7 //
8 // Copyright (c) Microsoft Corporation. All rights reserved.
9 //-----------------------------------------------------------------------------
10 #ifndef XBRESOURCE_H
11 #define XBRESOURCE_H
12 
13 
14 
15 //-----------------------------------------------------------------------------
16 // Name: XBResource_SizeOf()
17 // Desc: Determines the byte size of a D3DResource
18 //-----------------------------------------------------------------------------
19 DWORD XBResource_SizeOf( LPDIRECT3DRESOURCE8 pResource );
20 
21 
22 
23 
24 
25 //-----------------------------------------------------------------------------
26 // Name: struct XBRESOURCE
27 // Desc: Name tag for resources. An app may initialize this structure, and pass
28 //       it to the resource's Create() function. From then on, the app may call
29 //       GetResource() to retrieve a resource using an ascii name.
30 //-----------------------------------------------------------------------------
31 struct XBRESOURCE
32 {
33 	CHAR* strName;
34 	DWORD dwOffset;
35 };
36 
37 
38 
39 
40 
41 //-----------------------------------------------------------------------------
42 // Name: class CXBPackedResource
43 // Desc:
44 //-----------------------------------------------------------------------------
45 class CXBPackedResource
46 {
47 protected:
48 	BYTE*       m_pSysMemData;    // Alloc'ed memory for resource headers etc.
49 	BYTE*       m_pVidMemData;    // Alloc'ed memory for resource data, etc.
50 
51 	DWORD       m_dwNumResources; // Number of loaded resources
52 
53 	XBRESOURCE* m_pResourceTags;  // Tags to associate names with the resources
54 
55 public:
56 	// Loads the resources out of the specified bundle
57 	HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, const CHAR* strFilename,
58 					DWORD dwNumResources, XBRESOURCE* pResourceTags = NULL );
59 
60 	VOID Destroy();
61 
62 	// Functions to retrieve resources by their offset
GetData(DWORD dwOffset)63 	VOID* GetData( DWORD dwOffset ) const
64 	{ return &m_pSysMemData[dwOffset]; }
65 
GetResource(DWORD dwOffset)66 	LPDIRECT3DRESOURCE8 GetResource( DWORD dwOffset ) const
67 	{ return (LPDIRECT3DRESOURCE8)GetData(dwOffset); }
68 
GetTexture(DWORD dwOffset)69 	LPDIRECT3DTEXTURE8 GetTexture( DWORD dwOffset ) const
70 	{ return (LPDIRECT3DTEXTURE8)GetData( dwOffset ); }
71 
GetCubemap(DWORD dwOffset)72 	LPDIRECT3DCUBETEXTURE8 GetCubemap( DWORD dwOffset ) const
73 	{ return (LPDIRECT3DCUBETEXTURE8)GetData( dwOffset ); }
74 
GetVolumeTexture(DWORD dwOffset)75 	LPDIRECT3DVOLUMETEXTURE8 GetVolumeTexture( DWORD dwOffset ) const
76 	{ return (LPDIRECT3DVOLUMETEXTURE8)GetData( dwOffset ); }
77 
GetVertexBuffer(DWORD dwOffset)78 	LPDIRECT3DVERTEXBUFFER8 GetVertexBuffer( DWORD dwOffset ) const
79 	{ return (LPDIRECT3DVERTEXBUFFER8)GetData( dwOffset ); }
80 
81 	// Functions to retrieve resources by their name
82 	VOID* GetData( const CHAR* strName ) const;
83 
GetResource(const CHAR * strName)84 	LPDIRECT3DRESOURCE8 GetResource( const CHAR* strName ) const
85 	{ return (LPDIRECT3DRESOURCE8)GetData( strName ); }
86 
GetTexture(const CHAR * strName)87 	LPDIRECT3DTEXTURE8 GetTexture( const CHAR* strName ) const
88 	{ return (LPDIRECT3DTEXTURE8)GetResource( strName ); }
89 
GetCubemap(const CHAR * strName)90 	LPDIRECT3DCUBETEXTURE8 GetCubemap( const CHAR* strName ) const
91 	{ return (LPDIRECT3DCUBETEXTURE8)GetResource( strName ); }
92 
GetVolumeTexture(const CHAR * strName)93 	LPDIRECT3DVOLUMETEXTURE8 GetVolumeTexture( const CHAR* strName ) const
94 	{ return (LPDIRECT3DVOLUMETEXTURE8)GetResource( strName ); }
95 
GetVertexBuffer(const CHAR * strName)96 	LPDIRECT3DVERTEXBUFFER8 GetVertexBuffer( const CHAR* strName ) const
97 	{ return (LPDIRECT3DVERTEXBUFFER8)GetResource( strName ); }
98 
99 	// Constructor/destructor
100 	CXBPackedResource();
101 	~CXBPackedResource();
102 };
103 
104 
105 
106 
107 #endif XBRESOURCE_H
108