diff options
| -rw-r--r-- | Script.c | 30 |
1 files changed, 26 insertions, 4 deletions
@@ -830,7 +830,10 @@ global func Menu_Adaptor_EnumSubmenuSymbol(id EnumSubmenuSymbol) { return [DT_Me global func Menu_Adaptor_EnumAllowUnknown(bool EnumAllowUnknown) { return [DT_Menu_Adaptor_EnumAllowUnknown, EnumAllowUnknown]; } global func Menu_Adaptor_EnumInline(bool EnumInline) { return [DT_Menu_Adaptor_EnumInline, EnumInline]; } global func Menu_Adaptor_EnumSubmenu(int callbackType) { return [DT_Menu_Adaptor_EnumSubmenu, callbackType]; } -global func Menu_Adaptor_Limits(int min, int max) { return [DT_Menu_Adaptor_Limits, [min, max]]; } +global func Menu_Adaptor_Limits(min, max, args) +{ + return [DT_Menu_Adaptor_Limits, [min, max, args]]; +} global func Menu_Adaptor_StepSize(int step, force) { return [DT_Menu_Adaptor_StepSize, [step, force]]; } global func Menu_Adaptor_Enum(array enumVals, array layout, bool valuesAsSeparateLists) { @@ -1005,6 +1008,25 @@ func EnumEntrySettings(string& caption, &symbol, string& infoCaption, int index, } } +func AdaptorGetLimits(array limits) +{ + var ret = CreateArray(2); + + for(var i = 0; i < 2; ++i) + { + if(!limits[i] || GetType(limits[i]) == C4V_Int) + { + ret[i] = limits[i]; + } + else + { + ret[i] = Call(limits[i], limits[3]); + } + } + + return ret; +} + func AdaptorFactory(args, int entryIndex) { var origArgs = args; @@ -1033,7 +1055,7 @@ func AdaptorFactory(args, int entryIndex) } else if(args[DT_Menu_Adaptor_Type] == Menu_AdaptorType_Integer) { - var limits = args[DT_Menu_Adaptor_Limits], max, min; + var limits = AdaptorGetLimits(args[DT_Menu_Adaptor_Limits]), max, min; var wrapAround = args[DT_Menu_Adaptor_WrapAround]; if(limits && !wrapAround) { @@ -1334,7 +1356,7 @@ func AdaptorCommand(int action, object obj, args, array allArgs) } else if(args[DT_Menu_Adaptor_Type] == Menu_AdaptorType_Integer) { - var limits = args[DT_Menu_Adaptor_Limits]; + var limits = AdaptorGetLimits(args[DT_Menu_Adaptor_Limits]); var wrapAround = args[DT_Menu_Adaptor_WrapAround]; var step = args[DT_Menu_Adaptor_StepSize]; var stepSize = 1; @@ -1498,7 +1520,7 @@ func InputCallback(string input, int plr) if(msgBoardMode - 1 == Menu_AdaptorType_Integer) { var int = ParseInt(input); - var limits = args[DT_Menu_Adaptor_Limits]; + var limits = AdaptorGetLimits(args[DT_Menu_Adaptor_Limits]); var step = args[DT_Menu_Adaptor_StepSize]; if(GetType(int) == C4V_Int || GetType(int) == C4V_Any) { |
