From 285ae5d29238a6790ed2a5bdd072b3fc6fb2af26 Mon Sep 17 00:00:00 2001 From: Nick Thomas Date: Sat, 24 Mar 2018 23:38:12 +0000 Subject: [PATCH] Make it easier to debug .obj file parsing errors --- internal/data/object.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/data/object.go b/internal/data/object.go index 0469533..9d865b7 100644 --- a/internal/data/object.go +++ b/internal/data/object.go @@ -92,7 +92,7 @@ func LoadObject(filename string) (*Object, error) { out := &Object{Filename: filename} if err := binary.Read(f, binary.LittleEndian, &out.ObjectHeader); err != nil { - return nil, err + return nil, fmt.Errorf("Reading object header: %v", err) } if err := out.ObjectHeader.Check(); err != nil { @@ -102,30 +102,30 @@ func LoadObject(filename string) (*Object, error) { // Now load all sprites into memory dir := make([]dirEntry, out.NumSprites) if _, err := f.Seek(int64(out.DirOffset), io.SeekStart); err != nil { - return nil, err + return nil, fmt.Errorf("Seeking to sprite directory: %v", err) } if err := binary.Read(f, binary.LittleEndian, &dir); err != nil { - return nil, err + return nil, fmt.Errorf("Reading sprite directory: %v", err) } if _, err := f.Seek(int64(out.DataOffset), io.SeekStart); err != nil { - return nil, err + return nil, fmt.Errorf("Seeking to sprites: %v", err) } - for _, dirEntry := range dir { + for i, dirEntry := range dir { if err := dirEntry.Check(); err != nil { return nil, err } if _, err := f.Seek(int64(out.DataOffset+dirEntry.Offset), io.SeekStart); err != nil { - return nil, err + return nil, fmt.Errorf("Seeking to sprite %v: %v", i, err) } sprite := &Sprite{} if err := binary.Read(f, binary.LittleEndian, &sprite.SpriteHeader); err != nil { - return nil, err + return nil, fmt.Errorf("Reading sprite %v header: %v", i, err) } if err := sprite.Check(dirEntry.Size); err != nil { @@ -140,7 +140,7 @@ func LoadObject(filename string) (*Object, error) { for y := 0; y < int(sprite.Height); y++ { if row, err := buf.ReadBytes(0x00); err != nil { - return nil, err + return nil, fmt.Errorf("Reading row %v for sprite %v: %v", y, i, err) } else { sprite.Rows[y] = row }