2
0
mirror of https://github.com/dpethes/rerogue.git synced 2025-06-07 18:58:32 +02:00

hob parser: fix parsing of empty hob-s

This commit is contained in:
dpethes 2014-10-14 00:56:56 +02:00
parent 7075f10021
commit 37c2d95600

View File

@ -33,6 +33,7 @@ type
end; end;
THobFile = record THobFile = record
obj_count: integer;
name: array[0..15] of byte; name: array[0..15] of byte;
face_group_offset: integer; face_group_offset: integer;
face_group_count: integer; face_group_count: integer;
@ -183,25 +184,26 @@ var
f: TMemoryStream; f: TMemoryStream;
hob: THobFile; hob: THobFile;
i: integer; i: integer;
obj_count: integer;
unknown: integer; unknown: integer;
begin begin
f := TMemoryStream.Create; f := TMemoryStream.Create;
f.LoadFromFile(fname); f.LoadFromFile(fname);
obj_count := f.ReadDWord; //object count hob.obj_count := f.ReadDWord; //object count
unknown := f.ReadDWord; //sometimes face block start, but useless in general unknown := f.ReadDWord; //sometimes face block start, but useless in general
if hob.obj_count = 0 then begin
result := hob;
writeln('hob file is empty!');
exit;
end;
f.ReadBuffer(hob.name, 16); f.ReadBuffer(hob.name, 16);
hob.face_group_offset := f.ReadDWord; hob.face_group_offset := f.ReadDWord;
writeln(NameToString(hob.name)); writeln(NameToString(hob.name));
writeln('objects: ', obj_count); writeln('objects: ', hob.obj_count);
writeln('face group offset: ', hob.face_group_offset); writeln('face group offset: ', hob.face_group_offset);
if obj_count = 0 then begin if hob.obj_count > 1 then begin
result := hob;
exit;
end;
if obj_count > 1 then begin
writeln('reading failed: cannot read multiple objects yet!'); writeln('reading failed: cannot read multiple objects yet!');
halt; halt;
end; end;