66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package goap
|
|
|
|
type UDIdData struct {
|
|
Next BaseApChain
|
|
Id string
|
|
}
|
|
|
|
func (u *UDIdData) GetSelfOrBase() (BaseApChain, bool) {
|
|
return u.Next, true
|
|
}
|
|
|
|
func (b *UDIdData) MarshalToMap() map[string]any {
|
|
return appendWithKey(b.Next.MarshalToMap(), KEY_ID, b.Id)
|
|
}
|
|
|
|
func ParseUDIdData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
|
|
rawId, ok := raw[KEY_ID]
|
|
if !ok {
|
|
return nil, NoRequiredFieldError{KEY_ID}
|
|
}
|
|
id, ok := rawId.(string)
|
|
if !ok {
|
|
return nil, BadFieldValueError[string]{KEY_ID, rawId, ""}
|
|
}
|
|
delete(raw, KEY_ID)
|
|
return &UDIdData{
|
|
Next: next,
|
|
Id: id,
|
|
}, nil
|
|
}
|
|
|
|
func AppendUDIdData(base BaseApChain, id string) BaseApChain {
|
|
return &UDIdData{base, id}
|
|
}
|
|
|
|
type UDTypeData struct {
|
|
Next BaseApChain
|
|
Type string
|
|
}
|
|
|
|
func (u *UDTypeData) GetSelfOrBase() (BaseApChain, bool) {
|
|
return u.Next, true
|
|
}
|
|
|
|
func (u *UDTypeData) MarshalToMap() map[string]any {
|
|
return appendWithKey(u.Next.MarshalToMap(), KEY_TYPE, []any{u.Type})
|
|
}
|
|
|
|
func ParseUDTypeData(raw map[string]any, next BaseApChain) (BaseApChain, error) {
|
|
rawObjType, ok := raw[KEY_TYPE]
|
|
if !ok {
|
|
return nil, NoRequiredFieldError{KEY_TYPE}
|
|
}
|
|
objType, ok := rawObjType.([]string)
|
|
if !ok {
|
|
return nil, BadFieldValueError[[]string]{KEY_TYPE, rawObjType, []string{}}
|
|
}
|
|
if len(objType) != 1 {
|
|
return nil, BadFieldArrayLengthError{KEY_TYPE, 1, len(objType)}
|
|
}
|
|
return &UDTypeData{Next: next, Type: objType[0]}, nil
|
|
}
|
|
|
|
func AppendUDTypeData(base BaseApChain, typeString string) BaseApChain {
|
|
return &UDTypeData{base, typeString}
|
|
}
|