1
Fork 0
mirror of https://github.com/Steffo99/lihzahrd.git synced 2024-11-24 17:14:22 +00:00

Begin implementing LEB128

This commit is contained in:
Steffo 2019-08-21 20:33:08 +02:00
parent cab7d810f5
commit d4692f9b79
2 changed files with 13 additions and 4 deletions

View file

@ -57,9 +57,18 @@ class FileReader:
left, right, top, bottom = struct.unpack("iiii", self.file.read(16)) left, right, top, bottom = struct.unpack("iiii", self.file.read(16))
return Rect(left, right, top, bottom) return Rect(left, right, top, bottom)
def leb128(self) -> int:
byte = self.uint1()
while byte & 0b1000_0000:
byte = byte & 0b0111_1111
byte = byte << 7
byte = byte | self.uint1()
# TODO
raise NotImplementedError("TODO")
def string(self, size=None) -> str: def string(self, size=None) -> str:
if size is None: if size is None:
size = self.uint1() size = self.leb128()
return str(self.file.read(size), encoding="latin1") return str(self.file.read(size), encoding="latin1")
def uuid(self) -> uuid.UUID: def uuid(self) -> uuid.UUID:

View file

@ -547,7 +547,7 @@ class World:
unknown_world_header_data = f.read_until(pointers.world_tiles) unknown_world_header_data = f.read_until(pointers.world_tiles)
# Tiles # Tiles
tm = cls._create_tilematrix(f, world_size, tileframeimportant) #`tm = cls._create_tilematrix(f, world_size, tileframeimportant)
unknown_world_tiles_data = f.read_until(pointers.chests) unknown_world_tiles_data = f.read_until(pointers.chests)
@ -577,7 +577,7 @@ class World:
name=chest_name, name=chest_name,
contents=chest_contents) contents=chest_contents)
chests.append(chest) chests.append(chest)
tm[chest.position].extra = chest #`tm[chest.position].extra = chest
unknown_chests_data = f.read_until(pointers.signs) unknown_chests_data = f.read_until(pointers.signs)
@ -590,7 +590,7 @@ class World:
sign = Sign(text=f.string(), sign = Sign(text=f.string(),
position=Coordinates(f.int4(), f.int4())) position=Coordinates(f.int4(), f.int4()))
signs.append(sign) signs.append(sign)
tm[sign.position].extra = sign #`tm[sign.position].extra = sign
unknown_signs_data = f.read_until(pointers.npcs) unknown_signs_data = f.read_until(pointers.npcs)