From 00ff4083d21c72cde5062243f4a0e99b9a729694 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Sun, 27 Oct 2019 16:36:59 +0200 Subject: [PATCH] - extended level post-processing with thing IDs --- src/maploader/maploader.cpp | 23 ++++++++++++++++++++ wadsrc/static/zscript/level_postprocessor.zs | 3 +++ 2 files changed, 26 insertions(+) diff --git a/src/maploader/maploader.cpp b/src/maploader/maploader.cpp index 279f331e1e..c7524f43f7 100644 --- a/src/maploader/maploader.cpp +++ b/src/maploader/maploader.cpp @@ -3599,6 +3599,29 @@ DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetThingArgument) return 0; } +DEFINE_ACTION_FUNCTION(DLevelPostProcessor, GetThingID) +{ + PARAM_SELF_PROLOGUE(DLevelPostProcessor); + PARAM_UINT(thing); + + const int id = thing < self->loader->MapThingsConverted.Size() + ? self->loader->MapThingsConverted[thing].thingid : 0; + ACTION_RETURN_INT(id); +} + +DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetThingID) +{ + PARAM_SELF_PROLOGUE(DLevelPostProcessor); + PARAM_UINT(thing); + PARAM_INT(id); + + if (thing < self->loader->MapThingsConverted.Size()) + { + self->loader->MapThingsConverted[thing].thingid = id; + } + return 0; +} + DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetVertex) { PARAM_SELF_PROLOGUE(DLevelPostProcessor); diff --git a/wadsrc/static/zscript/level_postprocessor.zs b/wadsrc/static/zscript/level_postprocessor.zs index 29a7473104..e1f05bec73 100644 --- a/wadsrc/static/zscript/level_postprocessor.zs +++ b/wadsrc/static/zscript/level_postprocessor.zs @@ -35,6 +35,9 @@ class LevelPostProcessor native play protected native uint GetThingFlags(uint thing); protected native void SetThingFlags(uint thing, uint flags); + protected native int GetThingID(uint thing); + protected native void SetThingID(uint thing, int id); + protected native int GetThingSpecial(uint thing); protected native void SetThingSpecial(uint thing, int special);