forked from LtRipley36706/Melt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TextureIdDictionary.cs
56 lines (47 loc) · 2.08 KB
/
TextureIdDictionary.cs
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
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Newtonsoft.Json;
namespace Melt
{
class TextureIdDictionary
{
static public void folderExtractTextureFromHeader(string path)
{
if (!Directory.Exists(path))
{
Console.WriteLine("Unable to open {0}", path);
return;
}
string[] fileEntries = Directory.GetFiles(path);
StreamWriter outputFile = new StreamWriter(new FileStream("./TextureIdDictionary.json", FileMode.Create, FileAccess.Write));
Console.WriteLine("Creating export list...");
Dictionary<uint, uint> dictionary = new Dictionary<uint, uint>();
foreach (string fileName in fileEntries)
{
string keyString = fileName.Replace(".bin", string.Empty);
keyString = keyString.Substring(keyString.LastIndexOf('/') + 1);
uint key = uint.Parse(keyString, System.Globalization.NumberStyles.HexNumber);
uint value = extractTextureFromHeader(fileName);
dictionary.Add(key, value);
}
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.TypeNameHandling = TypeNameHandling.Auto;
settings.TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple;
settings.DefaultValueHandling = DefaultValueHandling.Ignore;
string jsonString = JsonConvert.SerializeObject(dictionary, Formatting.Indented, settings);
outputFile.Write(jsonString);
outputFile.Close();
Console.WriteLine("Done");
}
static public uint extractTextureFromHeader(string filename)
{
StreamReader inputFile = new StreamReader(new FileStream(filename, FileMode.Open, FileAccess.Read));
byte[] buffer = new byte[1024];
uint fileHeader = Utils.ReadUInt32(buffer, inputFile);
uint textureId = Utils.ReadUInt32(buffer, inputFile);
return textureId;
}
}
}