-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCResourceManager.h
More file actions
113 lines (92 loc) · 3.43 KB
/
Copy pathCResourceManager.h
File metadata and controls
113 lines (92 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#pragma once
#include "OP2Editor.h"
#include "CTileSetSource.h"
class CResourceManager : public IResourceManager, public ISupportErrorInfo
{
public:
// IUnknown
// ********
ULONG __stdcall AddRef();
ULONG __stdcall Release();
HRESULT __stdcall QueryInterface(REFIID riid, void** ppv);
// IResource Manager
// *****************
// [propget]
HRESULT STDMETHODCALLTYPE get_RootPath(
/* [retval][out] */ BSTR __RPC_FAR *path);
// [propput]
HRESULT STDMETHODCALLTYPE put_RootPath(
/* [in] */ BSTR path);
HRESULT STDMETHODCALLTYPE OpenStreamRead(
/* [in] */ BSTR fileName,
/* [retval][out] */ StreamReader __RPC_FAR *__RPC_FAR *stream);
HRESULT STDMETHODCALLTYPE OpenStreamWrite(
/* [in] */ BSTR fileName,
/* [retval][out] */ StreamWriter __RPC_FAR *__RPC_FAR *stream);
HRESULT STDMETHODCALLTYPE LoadMapFile(
/* [in] */ BSTR fileName,
/* [in] */ enum MapLoadSaveFormat loadFlags,
/* [retval][out] */ MapFile __RPC_FAR *__RPC_FAR *mapFile);
HRESULT STDMETHODCALLTYPE LoadMap(
/* [in] */ StreamReader __RPC_FAR *inStream,
/* [in] */ enum MapLoadSaveFormat loadFlags,
/* [retval][out] */ MapFile __RPC_FAR *__RPC_FAR *mapFile);
HRESULT STDMETHODCALLTYPE CreateNewMap(
/* [in] */ int width,
/* [in] */ int height,
/* [retval][out] */ MapFile __RPC_FAR *__RPC_FAR *newMap);
HRESULT STDMETHODCALLTYPE LoadTileSetFile(
/* [in] */ BSTR fileName,
/* [retval][out] */ TileSet __RPC_FAR *__RPC_FAR *tileSet);
HRESULT STDMETHODCALLTYPE LoadTileSet(
/* [in] */ StreamReader __RPC_FAR *inStream,
/* [retval][out] */ TileSet __RPC_FAR *__RPC_FAR *tileSet);
HRESULT STDMETHODCALLTYPE CreateTileSet(
/* [in] */ int numTiles,
/* [in] */ int bitDepth,
/* [in] */ int width,
/* [retval][out] */ TileSet __RPC_FAR *__RPC_FAR *newTileSet);
HRESULT STDMETHODCALLTYPE LoadVolFile(
/* [in] */ BSTR fileName,
/* [in] */ int bAttachToStream,
/* [retval][out] */ ArchiveReader __RPC_FAR *__RPC_FAR *volReader);
HRESULT STDMETHODCALLTYPE LoadVol(
/* [in] */ SeekableStreamReader __RPC_FAR *inStream,
/* [in] */ int bAttachToStream,
/* [retval][out] */ ArchiveReader __RPC_FAR *__RPC_FAR *volReader);
HRESULT STDMETHODCALLTYPE CreateVolFile(
/* [retval][out] */ ArchiveWriter __RPC_FAR *__RPC_FAR *volWriter);
HRESULT STDMETHODCALLTYPE LoadClmFile(
/* [in] */ BSTR fileName,
/* [in] */ int bAttachToStream,
/* [retval][out] */ ArchiveReader __RPC_FAR *__RPC_FAR *clmReader);
HRESULT STDMETHODCALLTYPE LoadClm(
/* [in] */ SeekableStreamReader __RPC_FAR *inStream,
/* [in] */ int bAttachToStream,
/* [retval][out] */ ArchiveReader __RPC_FAR *__RPC_FAR *clmReader);
HRESULT STDMETHODCALLTYPE CreateClmFile(
/* [retval][out] */ ArchiveWriter __RPC_FAR *__RPC_FAR *clmWriter);
HRESULT STDMETHODCALLTYPE AddArchiveToSearch(
/* [in] */ ArchiveReader __RPC_FAR *volReader);
HRESULT STDMETHODCALLTYPE ClearSearchPath(void);
// ISupportErrorInfo
// *****************
HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(REFIID riid);
// Constructor/Destructor
// **********************
CResourceManager(BSTR gamePath);
~CResourceManager();
private:
ULONG m_cRef; // COM object reference count
struct LinkedListNode
{
LinkedListNode *next;
ArchiveReader *archive;
};
// Class specific variables
BSTR path;
CTileSetSource *tileSetSource;
// LinkedList
LinkedListNode *head;
LinkedListNode *tail;
};