1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef ENGINE_SHARED_MAP_H
4#define ENGINE_SHARED_MAP_H
5
6#include "datafile.h"
7
8#include <base/types.h>
9
10#include <engine/map.h>
11
12class CMap : public IMap
13{
14 CDataFileReader m_DataFile;
15
16public:
17 CMap();
18 ~CMap() override;
19
20 int GetDataSize(int Index) const override;
21 void *GetData(int Index) override;
22 void *GetDataSwapped(int Index) override;
23 const char *GetDataString(int Index) override;
24 void UnloadData(int Index) override;
25 int NumData() const override;
26
27 int GetItemSize(int Index) override;
28 void *GetItem(int Index, int *pType = nullptr, int *pId = nullptr) override;
29 void GetType(int Type, int *pStart, int *pNum) override;
30 int FindItemIndex(int Type, int Id) override;
31 void *FindItem(int Type, int Id) override;
32 int NumItems() const override;
33
34 [[nodiscard]] bool Load(const char *pFullName, IStorage *pStorage, const char *pPath, int StorageType) override;
35 [[nodiscard]] bool Load(IStorage *pStorage, const char *pPath, int StorageType) override;
36 void Unload() override;
37 bool IsLoaded() const override;
38 IOHANDLE File() const override;
39
40 const char *FullName() const override;
41 const char *BaseName() const override;
42 const char *Path() const override;
43 SHA256_DIGEST Sha256() const override;
44 unsigned Crc() const override;
45 int Size() const override;
46
47 static void ExtractTiles(class CTile *pDest, size_t DestSize, const class CTile *pSrc, size_t SrcSize);
48};
49
50#endif
51