aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/FolderTexturePack.cpp
blob: 05feca664b0cc87e5fd9644760b97c2f277f7947 (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
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
#include "stdafx.h"
#include "FolderTexturePack.h"

FolderTexturePack::FolderTexturePack(DWORD id, const wstring &name, File *folder, TexturePack *fallback) : AbstractTexturePack(id, folder, name, fallback)
{
	// 4J Stu - These calls need to be in the most derived version of the class
	loadIcon();
	loadName();
	loadDescription();

	bUILoaded = false;
}

InputStream *FolderTexturePack::getResourceImplementation(const wstring &name) //throws IOException
{
#if 0
	final File file = new File(this.file, name.substring(1));
	if (!file.exists()) {
		throw new FileNotFoundException(name);
	}

	return new BufferedInputStream(new FileInputStream(file));
#endif

	wstring wDrive = L"";
	// Make the content package point to to the UPDATE: drive is needed
#ifdef _XBOX
	wDrive=L"GAME:\\DummyTexturePack\\res";
#else
	wDrive = L"Common\\DummyTexturePack\\res";
#endif
	InputStream *resource = InputStream::getResourceAsStream(wDrive + name);
	//InputStream *stream = DefaultTexturePack::class->getResourceAsStream(name);
	//if (stream == nullptr)
	//{
	//	throw new FileNotFoundException(name);
	//}

	//return stream;
	return resource;
}

bool FolderTexturePack::hasFile(const wstring &name)
{
	File file = File( getPath() + name);
	return file.exists() && file.isFile();
	//return true;
}

bool FolderTexturePack::isTerrainUpdateCompatible()
{
#if 0
	final File dir = new File(this.file, "textures/");
	final boolean hasTexturesFolder = dir.exists() && dir.isDirectory();
	final boolean hasOldFiles = hasFile("terrain.png") || hasFile("gui/items.png");
	return hasTexturesFolder || !hasOldFiles;
#endif
	return true;
}

wstring FolderTexturePack::getPath(bool bTitleUpdateTexture /*= false*/,const char *pchBDPatchFilename)
{
	wstring wDrive;
#ifdef _XBOX
		wDrive=L"GAME:\\" + file->getPath() + L"\\";
#else
		wDrive=L"Common\\" + file->getPath() + L"\\";
#endif
	return wDrive;
}

void FolderTexturePack::loadUI()
{
#ifdef _XBOX
	//"file://" + Drive + PathToXZP + "#" + PathInsideXZP

	//L"file://game:/ui.xzp#skin_default.xur"

	// Load new skin
	if(hasFile(L"TexturePack.xzp"))
	{
		const DWORD LOCATOR_SIZE = 256; // Use this to allocate space to hold a ResourceLocator string 
		WCHAR szResourceLocator[ LOCATOR_SIZE ];

		swprintf(szResourceLocator, LOCATOR_SIZE,L"file://%lsTexturePack.xzp#skin_Minecraft.xur",getPath().c_str());

		XuiFreeVisuals(L"");
		app.LoadSkin(szResourceLocator,nullptr);//L"TexturePack");
		bUILoaded = true;
		//CXuiSceneBase::GetInstance()->SetVisualPrefix(L"TexturePack");
	}

	AbstractTexturePack::loadUI();
#endif
}

void FolderTexturePack::unloadUI()
{
#ifdef _XBOX
	// Unload skin
	if(bUILoaded)
	{
		XuiFreeVisuals(L"TexturePack");
		XuiFreeVisuals(L"");
		CXuiSceneBase::GetInstance()->SetVisualPrefix(L"");
		CXuiSceneBase::GetInstance()->SkinChanged(CXuiSceneBase::GetInstance()->m_hObj);
	}
	AbstractTexturePack::unloadUI();
#endif
}