diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2017-05-23 13:15:27 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2017-05-23 13:15:27 +0200 |
| commit | 5905aab631fcbbcd6089e126b70d1ef4518f962c (patch) | |
| tree | f6569bf462390a15444b6e407f537e1fe8ad0ca7 /Script.c | |
| parent | 684ad14dee5e812ffe0fc272680071841cbd7c50 (diff) | |
| download | DTMenu.c4d-5905aab631fcbbcd6089e126b70d1ef4518f962c.tar.gz DTMenu.c4d-5905aab631fcbbcd6089e126b70d1ef4518f962c.zip | |
Add possibilty to use callbacks for Menu_Adaptor_Limits
Diffstat (limited to 'Script.c')
| -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) { |
