diff --git a/src/scripting/thingdef_data.cpp b/src/scripting/thingdef_data.cpp index 08fd1a910c..a90cb35663 100644 --- a/src/scripting/thingdef_data.cpp +++ b/src/scripting/thingdef_data.cpp @@ -1293,3 +1293,13 @@ DEFINE_ACTION_FUNCTION(FStringStruct, ToDouble) PARAM_SELF_STRUCT_PROLOGUE(FString); ACTION_RETURN_FLOAT(self->ToDouble()); } + +DEFINE_ACTION_FUNCTION(FStringStruct, Split) +{ + PARAM_SELF_STRUCT_PROLOGUE(FString); + PARAM_POINTER(tokens, TArray); + PARAM_STRING(delimiter); + PARAM_INT_DEF(keepEmpty); + self->Split(*tokens, delimiter, static_cast(keepEmpty)); + return 0; +} diff --git a/wadsrc/static/zscript/base.txt b/wadsrc/static/zscript/base.txt index 0d0261a751..877c42b2bb 100644 --- a/wadsrc/static/zscript/base.txt +++ b/wadsrc/static/zscript/base.txt @@ -659,6 +659,12 @@ enum EPickStart PPS_NOBLOCKINGCHECK = 2, } +enum EmptyTokenType +{ + TOK_SKIPEMPTY = 0, + TOK_KEEPEMPTY = 1, +} + // Although String is a builtin type, this is a convenient way to attach methods to it. struct StringStruct native { @@ -678,6 +684,7 @@ struct StringStruct native native void ToLower(); native int ToInt(int base = 0) const; native double ToDouble() const; + native void Split(out Array tokens, String delimiter, EmptyTokenType keepEmpty = TOK_KEEPEMPTY) const; } class SectorEffect : Thinker native