diff --git a/ent/atoms.go b/ent/atoms.go index 9fa2d8f..6436886 100644 --- a/ent/atoms.go +++ b/ent/atoms.go @@ -29,6 +29,15 @@ var atom_types = map[string]typeFn{ "CUtlStringToken": func(r bit.Reader) (value, error) { return bit.ReadVarInt(r), r.Err() }, + "Color": func(r bit.Reader) (value, error) { + u := bit.ReadVarInt(r) + return color{ + r: uint8(u >> 6 & 0xff), + g: uint8(u >> 4 & 0xff), + b: uint8(u >> 2 & 0xff), + a: uint8(u >> 0 & 0xff), + }, r.Err() + }, } func atomType(spec *typeSpec, env *Env) tÿpe { @@ -38,3 +47,5 @@ func atomType(spec *typeSpec, env *Env) tÿpe { } return nil } + +type color struct{ r, g, b, a uint8 } diff --git a/ent/generic.go b/ent/generic.go index 15c66ee..8ff8897 100644 --- a/ent/generic.go +++ b/ent/generic.go @@ -26,12 +26,12 @@ func genericType(spec *typeSpec, env *Env) tÿpe { // } switch parts[0] { - case "CStrongHandle": + case "CHandle", "CStrongHandle": return typeFn(func(r bit.Reader) (value, error) { return handle(bit.ReadVarInt(r)), r.Err() }) default: - return typeError("unknown generic name: %v", genericName) + return typeError("unknown generic name: %v", parts[0]) } }