diff options
Diffstat (limited to 'deserialize.go')
-rw-r--r-- | deserialize.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/deserialize.go b/deserialize.go index 8722bd7..7e3ffb6 100644 --- a/deserialize.go +++ b/deserialize.go @@ -4,6 +4,7 @@ import ( "compress/zlib" "encoding/binary" "errors" + "fmt" "github.com/anon55555/mt" "io" ) @@ -15,9 +16,24 @@ var ( ErrInvalidNodeMetaVer = errors.New("invalid node meta version") ErrInvalidNameIdMapVer = errors.New("invalid name id mapping version") ErrInvalidStaticObjVer = errors.New("invalid static object version") - ErrInvalidNode = errors.New("invalid node") ) +type ErrInvalidNodeName struct { + Name string +} + +func (e ErrInvalidNodeName) Error() string { + return fmt.Sprintf("invalid node %v", e.Name) +} + +type ErrInvalidNodeId struct { + Id mt.Content +} + +func (e ErrInvalidNodeId) Error() string { + return fmt.Sprintf("invalid node %v", e.Id) +} + func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk { var blk = &MapBlk{} @@ -247,12 +263,12 @@ func Deserialize(r io.Reader, idNameMap map[string]mt.Content) *MapBlk { for i := 0; i < 4096; i++ { name, ok := nameIdMap[blk.Param0[i]] if !ok { - panic(ErrInvalidNode) + panic(ErrInvalidNodeId{blk.Param0[i]}) } id, ok := idNameMap[name] if !ok { - panic(ErrInvalidNode) + panic(ErrInvalidNodeName{name}) } blk.Param0[i] = id |