From e206a714482be6ba736b2ac31f775e9b2930ae77 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 23 Jan 2022 20:35:00 +0100 Subject: [PATCH] - added the native property handlers for CoreActor. --- source/core/thingdef.h | 8 +- source/core/thingdef_properties.cpp | 183 +++++++++++++++++++++++++++- 2 files changed, 186 insertions(+), 5 deletions(-) diff --git a/source/core/thingdef.h b/source/core/thingdef.h index 7bf703ca8..746cca577 100644 --- a/source/core/thingdef.h +++ b/source/core/thingdef.h @@ -186,18 +186,18 @@ int MatchString (const char *in, const char **strings); #define DEFINE_PROPERTY_BASE(name, paramlist, clas, cat) \ - static void Handler_##name##_##paramlist##_##clas(A##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params); \ + static void Handler_##name##_##paramlist##_##clas(D##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params); \ static FPropertyInfo Prop_##name##_##paramlist##_##clas = \ { #name, #paramlist, #clas, (PropHandler)Handler_##name##_##paramlist##_##clas, cat }; \ MSVC_PSEG FPropertyInfo *infoptr_##name##_##paramlist##_##clas GCC_PSEG = &Prop_##name##_##paramlist##_##clas; \ - static void Handler_##name##_##paramlist##_##clas(A##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params) + static void Handler_##name##_##paramlist##_##clas(D##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params) #define DEFINE_PREFIXED_PROPERTY_BASE(prefix, name, paramlist, clas, cat) \ - static void Handler_##name##_##paramlist##_##clas(A##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params); \ + static void Handler_##name##_##paramlist##_##clas(D##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params); \ static FPropertyInfo Prop_##name##_##paramlist##_##clas = \ { #prefix"."#name, #paramlist, #clas, (PropHandler)Handler_##name##_##paramlist##_##clas, cat }; \ MSVC_PSEG FPropertyInfo *infoptr_##name##_##paramlist##_##clas GCC_PSEG = &Prop_##name##_##paramlist##_##clas; \ - static void Handler_##name##_##paramlist##_##clas(A##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params) + static void Handler_##name##_##paramlist##_##clas(D##clas *defaults, PClassActor *info, Baggage &bag, FPropParam *params) #define DEFINE_PREFIXED_SCRIPTED_PROPERTY_BASE(prefix, name, paramlist, clas, cat) \ static void Handler_##name##_##paramlist##_##clas(DCoreActor *defaults, PClassActor *info, Baggage &bag, FPropParam *params); \ diff --git a/source/core/thingdef_properties.cpp b/source/core/thingdef_properties.cpp index d6e9139a0..ba3166d09 100644 --- a/source/core/thingdef_properties.cpp +++ b/source/core/thingdef_properties.cpp @@ -307,4 +307,185 @@ static bool PointerCheck(PType *symtype, PType *checktype) // //========================================================================== -// todo +//========================================================================== +// +// Default spritetype fields need to set an additional flag +// so we need native handlers for them +// +//========================================================================== +DEFINE_PROPERTY(pic, S, CoreActor) +{ + PROP_STRING_PARM(str, 0); + defaults->spr.picnum = 0; // todo + bag.Info->ActorInfo()->DefaultCstat |= DEFF_PICNUM; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(statnum, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.statnum = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_STATNUM; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(angle, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.ang = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_ANG; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(xvel, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.xvel = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_XVEL; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(yvel, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.yvel = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_YVEL; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(zvel, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.zvel = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_ZVEL; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(lotag, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.lotag = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_LOTAG; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(hitag, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.lotag = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_HITAG; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(extra, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.lotag = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_EXTRA; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(detail, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.detail = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_DETAIL; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(shade, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.shade = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_SHADE; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(pal, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.pal = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_PAL; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(clipdist, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.clipdist = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_CLIPDIST; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(xrepeat, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.xrepeat = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_XREPEAT; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(yrepeat, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.yrepeat = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_YREPEAT; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(xoffset, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.xoffset = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_XOFFSET; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(yoffset, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.yoffset = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_YOFFSET; +} + +//========================================================================== +// +//========================================================================== +DEFINE_PROPERTY(owner, I, CoreActor) +{ + PROP_INT_PARM(i, 0); + defaults->spr.owner = i; + bag.Info->ActorInfo()->DefaultCstat |= DEFF_OWNER; +}