-
-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathutils.py
90 lines (66 loc) · 1.96 KB
/
utils.py
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
import importlib
from struct import unpack, pack
def getPaletteFromName(palette_name):
palette_module_name = "..{0}pal".format(palette_name.lower())
palette = importlib.import_module(palette_module_name, __name__).palette
return palette
# File reading and writing utils
# Reading
def read_byte(file, count=1):
size = 1 * count
data = file.read(size)
data = unpack("<%dB" % count, data)
if count == 1:
return data[0]
return data
def read_int(file, count=1):
size = 4 * count
data = file.read(size)
data = unpack("<%di" % count, data)
if count == 1:
return data[0]
return data
def read_ushort(file, count=1):
size = 2 * count
data = file.read(size)
data = unpack("<%dH" % count, data)
if count == 1:
return data[0]
return data
def read_float(file, count=1):
size = 4 * count
data = file.read(size)
data = unpack("<%df" % count, data)
if count == 1:
return data[0]
return data
def read_bytestring(file, size):
return file.read(size)
def read_string(file, size):
data = file.read(size)
s = ""
for c in data:
s = s + chr(c)
return s
# Writing
def write_byte(file, data):
if not hasattr(data, "__len__"):
data = (data,)
file.write(pack(("<%dB" % len(data)), *data))
def write_int(file, data):
if not hasattr(data, "__len__"):
data = (data,)
file.write(pack(("<%di" % len(data)), *data))
def write_float(file, data):
if not hasattr(data, "__len__"):
data = (data,)
file.write(pack(("<%df" % len(data)), *data))
def write_bytestring(file, data, size=-1):
if size == -1:
size = len(data)
file.write(data[:size])
if size > len(data):
file.write(bytes(size - len(data)))
def write_string(file, data, size=-1):
data = data.encode()
write_bytestring(file, data, size)