einstein/resources.py

55 lines
1.8 KiB
Python
Raw Normal View History

2015-10-30 16:42:05 +00:00
from os import listdir
2015-11-03 15:04:54 +00:00
from .buffer import Buffer
2015-10-30 16:42:05 +00:00
2015-11-03 15:04:54 +00:00
class ResourceFile(object):
def __init__(self, fileName, buf=None):
2015-10-30 16:42:05 +00:00
# Ooooh, what does this button do?
# name(fileName)
2015-11-03 15:04:54 +00:00
if buf is not None:
2015-10-30 16:42:05 +00:00
buffer = buf
ownBuffer = False
else:
buffer = Buffer()
ownBuffer = true
try:
with open(fileName, 'rb') as f:
try:
sign = f.read(4)
if sign[0] != 'C' \
or sign[1] != 'R' \
or sign[2] != 'F' \
or sign[3]:
raise IOError("Failover")
major = f.unpack('i', 4)
minor = f.unpack('i', 4)
priority = f.unpack('i', 4)
if major != 2 or minor < 0:
raise Exception("Incompatible version of resource file '" + name + "'")
except IOError:
raise Exception("Invalid resource file '" + name + "'")
except IOError:
raise Exception("Error loading resource file '" + name + "'")
2015-10-04 12:34:09 +00:00
class ResourcesCollection:
def __init__(self, directories):
2015-10-30 16:42:05 +00:00
self.__files = []
self.__buffer = None
self.loadResourceFiles(directories)
processFiles()
def loadResourceFiles(self, directories):
for directory in directories:
try:
for name in listdir(directory):
if not name.startswith('.') and name.endswith('.res'):
2015-11-03 15:04:54 +00:00
self.__files.append(
ResourceFile(directory + '/' + name,
buf=self.__buffer))
2015-10-30 16:42:05 +00:00
except OSError:
pass