summaryrefslogtreecommitdiff
path: root/extractor/grf.gd
diff options
context:
space:
mode:
Diffstat (limited to 'extractor/grf.gd')
-rw-r--r--extractor/grf.gd38
1 files changed, 37 insertions, 1 deletions
diff --git a/extractor/grf.gd b/extractor/grf.gd
index 8cb03c1..27dcab0 100644
--- a/extractor/grf.gd
+++ b/extractor/grf.gd
@@ -1,4 +1,40 @@
class_name GRF
+
class Header:
- var signature: int
+ static var byte_length: int = 46
+
+ ## Byte Length: 15
+ ## Master of Magic
+ var signature: String
+
+ ## Byte Length: 15
+ var encryption: PackedByteArray
+
+ ## Byte Type: u32
+ ## Byte Length: 4
+ var file_table_offset: int
+
+ ## Byte Type: u32
+ ## Byte Length: 4
+ var reserved_files: int
+
+ ## Byte Type: u32
+ ## Byte Length: 4
+ var file_count: int
+
+ ## Byte Type: u32
+ ## Byte Length: 4
+ var version: int
+
+
+ static func from_file(file: FileAccess):
+ var header = Header.new()
+ header.signature = file.get_buffer(15).get_string_from_utf8()
+ header.encryption = file.get_buffer(15)
+ header.file_table_offset = file.get_buffer(4).decode_u32(0)
+ header.reserved_files = file.get_buffer(4).decode_u32(0)
+ header.file_count = file.get_buffer(4).decode_u32(0)
+ header.version = file.get_buffer(4).decode_u32(0)
+
+ return header