65 lines
1.2 KiB
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
|
|
}
|