Make it easier to debug .obj file parsing errors
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user