aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/McRegionLevelStorageSource.h
blob: d1a4bf30c5b1cff044d388c6cf3e22f6444e7b9e (plain)
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
#pragma once
using namespace std;

#include "DirectoryLevelStorageSource.h"
#include "FileFilter.h"
#include "FilenameFilter.h"

class ProgressListener;
class LevelStorage;

class McRegionLevelStorageSource : public DirectoryLevelStorageSource
{
public:
	class ChunkFile;

	McRegionLevelStorageSource(File dir);
    virtual wstring getName();
    virtual vector<LevelSummary *> *getLevelList();
    virtual void clearAll();
    virtual shared_ptr<LevelStorage> selectLevel(ConsoleSaveFile *saveFile, const wstring& levelId, bool createPlayerDir);
    virtual bool isConvertible(ConsoleSaveFile *saveFile, const wstring& levelId);
    virtual bool requiresConversion(ConsoleSaveFile *saveFile, const wstring& levelId);
    virtual bool convertLevel(ConsoleSaveFile *saveFile, const wstring& levelId, ProgressListener *progress);

private:
#if 0
	// 4J - not required anymore
	void addRegions(File &baseFolder, vector<ChunkFile *> *dest, vector<File *> *firstLevelFolders);
#endif
    void convertRegions(File &baseFolder, vector<ChunkFile *> *chunkFiles, int currentCount, int totalCount, ProgressListener *progress);
    void eraseFolders(vector<File *> *folders, int currentCount, int totalCount, ProgressListener *progress);

public:
#if 0
	// 4J - not required anymore
    static class FolderFilter : public FileFilter 
	{
	public:
		static const std::tr1::wregex chunkFolderPattern; // was Pattern
		bool accept(File *file);
    };

    static class ChunkFilter : public FilenameFilter 
	{
	public:
		static const std::tr1::wregex chunkFilePattern; // was Pattern
        bool accept(File *dir, const wstring& name);
    };

    static class ChunkFile // implements Comparable<ChunkFile>
	{
	private:
		/* const */ File *file;
		/* const */ int x;
		/* const */ int z;

	public:
		ChunkFile(File *file);
		int compareTo(ChunkFile *rhs);
        File *getFile();
        int getX();
        int getZ();

		// a < b
		bool operator<( ChunkFile *b );
    };
#endif
};