openquell/util/ldtkhelpers.go

65 lines
1.2 KiB
Go

package util
import (
"openquell/config"
"github.com/solarlune/ldtkgo"
)
type TileSetSubRect struct {
X, Y, W, H int
}
func Map2Subrect(raw map[string]any) *TileSetSubRect {
// we need to translate this map for less typing
return &TileSetSubRect{
W: int(raw["w"].(float64)),
H: int(raw["h"].(float64)),
X: int(raw["x"].(float64)),
Y: int(raw["y"].(float64)),
}
}
func GetPropertyRef(entity *ldtkgo.Entity) string {
ref := entity.PropertyByIdentifier(config.LDTK_Entity_Ref)
if ref != nil {
if ref.Value != nil {
refid := ref.Value.(map[string]interface{})
ref := refid["entityIid"].(string)
if ref != "" {
return ref
}
}
}
return ""
}
func GetPropertyString(entity *ldtkgo.Entity, property string) string {
ref := entity.PropertyByIdentifier(property)
if ref != nil {
return ref.AsString()
}
return ""
}
func GetPropertyBool(entity *ldtkgo.Entity, property string) bool {
ref := entity.PropertyByIdentifier(property)
if ref != nil {
return ref.AsBool()
}
return false
}
func GetPropertyToggleTile(entity *ldtkgo.Entity) *TileSetSubRect {
ref := entity.PropertyByIdentifier(config.LDTK_Toggle_Tile)
if ref != nil {
return Map2Subrect(ref.AsMap())
}
return nil
}