summaryrefslogtreecommitdiffstats
path: root/Script.c
diff options
context:
space:
mode:
Diffstat (limited to 'Script.c')
-rw-r--r--Script.c30
1 files changed, 26 insertions, 4 deletions
diff --git a/Script.c b/Script.c
index 76d63b1..f6c4598 100644
--- a/Script.c
+++ b/Script.c
@@ -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)
{