19 dataTypes.push_back(dataType);
22 void MathMethods::registerConstants() {
28 void MathMethods::registerMethods() {
39 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"a", .optional =
false, .reference =
false, .nullable =
false },
40 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"b", .optional =
false, .reference =
false, .nullable =
false },
41 { .type = MinitScript::TYPE_INTEGER, .name =
"operator", .optional =
true, .reference =
false, .nullable =
false }
43 MinitScript::TYPE_PSEUDO_MIXED
45 minitScript(minitScript) {}
46 const string getMethodName()
override {
53 return MinitScript::OPERATOR_ADDITION;
56 minitScript->registerMethod(
new MethodAdd(minitScript));
67 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"a", .optional =
false, .reference =
false, .nullable =
false },
68 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"b", .optional =
false, .reference =
false, .nullable =
false },
69 { .type = MinitScript::TYPE_INTEGER, .name =
"operator", .optional =
true, .reference =
false, .nullable =
false }
71 MinitScript::TYPE_PSEUDO_MIXED
73 minitScript(minitScript) {}
74 const string getMethodName()
override {
81 return MinitScript::OPERATOR_SUBTRACTION;
84 minitScript->registerMethod(
new MethodSub(minitScript));
95 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"a", .optional =
false, .reference =
false, .nullable =
false },
96 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"b", .optional =
false, .reference =
false, .nullable =
false },
97 { .type = MinitScript::TYPE_INTEGER, .name =
"operator", .optional =
true, .reference =
false, .nullable =
false }
99 MinitScript::TYPE_PSEUDO_MIXED
101 minitScript(minitScript) {}
102 const string getMethodName()
override {
109 return MinitScript::OPERATOR_MULTIPLICATION;
112 minitScript->registerMethod(
new MethodMul(minitScript));
123 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"a", .optional =
false, .reference =
false, .nullable =
false },
124 { .type = MinitScript::TYPE_PSEUDO_MIXED, .name =
"b", .optional =
false, .reference =
false, .nullable =
false },
125 { .type = MinitScript::TYPE_INTEGER, .name =
"operator", .optional =
true, .reference =
false, .nullable =
false }
127 MinitScript::TYPE_PSEUDO_MIXED
129 minitScript(minitScript) {}
130 const string getMethodName()
override {
137 return MinitScript::OPERATOR_DIVISION;
140 minitScript->registerMethod(
new MethodDiv(minitScript));
150 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
151 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"range", .optional =
false, .reference =
false, .nullable =
false },
152 { .type = MinitScript::TYPE_INTEGER, .name =
"operator", .optional =
true, .reference =
false, .nullable =
false }
154 MinitScript::TYPE_PSEUDO_NUMBER
155 ), minitScript(minitScript) {}
156 const string getMethodName()
override {
160 if (arguments.size() == 2 || arguments.size() == 3) {
161 if (MinitScript::hasType(arguments, MinitScript::TYPE_INTEGER) ==
true) {
165 if (MinitScript::getIntegerValue(arguments, 0, value,
false) ==
true &&
166 MinitScript::getIntegerValue(arguments, 1, range,
false) ==
true) {
175 if (MinitScript::getFloatValue(arguments, 0, value,
false) ==
true &&
176 MinitScript::getFloatValue(arguments, 1, range,
false) ==
true) {
187 return MinitScript::OPERATOR_MODULO;
190 minitScript->registerMethod(
new MethodMod(minitScript));
200 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
202 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
203 const string getMethodName()
override {
208 if (arguments.size() == 1 &&
209 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
216 minitScript->registerMethod(
new MethodAcos(minitScript));
226 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
228 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
229 const string getMethodName()
override {
234 if (arguments.size() == 1 &&
235 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
242 minitScript->registerMethod(
new MethodAsin(minitScript));
252 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
254 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
255 const string getMethodName()
override {
260 if (arguments.size() == 1 &&
261 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
268 minitScript->registerMethod(
new MethodAtan(minitScript));
278 { .type = MinitScript::TYPE_FLOAT, .name =
"y", .optional =
false, .reference =
false, .nullable =
false },
279 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
281 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
282 const string getMethodName()
override {
288 if (arguments.size() == 2 &&
289 MinitScript::getFloatValue(arguments, 0, y) ==
true &&
290 MinitScript::getFloatValue(arguments, 1, x) ==
true) {
297 minitScript->registerMethod(
new MethodAtan2(minitScript));
307 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
309 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
310 const string getMethodName()
override {
315 if (arguments.size() == 1 &&
316 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
323 minitScript->registerMethod(
new MethodTan(minitScript));
333 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
335 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
336 const string getMethodName()
override {
341 if (arguments.size() == 1 &&
342 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
349 minitScript->registerMethod(
new MethodCos(minitScript));
359 { .type = MinitScript::TYPE_FLOAT, .name =
"x", .optional =
false, .reference =
false, .nullable =
false },
361 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
362 const string getMethodName()
override {
367 if (arguments.size() == 1 &&
368 MinitScript::getFloatValue(arguments, 0, x) ==
true) {
375 minitScript->registerMethod(
new MethodSin(minitScript));
385 { .type = MinitScript::TYPE_FLOAT, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
387 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
388 const string getMethodName()
override {
393 if (arguments.size() == 1 &&
394 MinitScript::getFloatValue(arguments, 0, value) ==
true) {
401 minitScript->registerMethod(
new MethodFloor(minitScript));
411 { .type = MinitScript::TYPE_FLOAT, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
413 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
414 const string getMethodName()
override {
419 if (arguments.size() == 1 &&
420 MinitScript::getFloatValue(arguments, 0, value) ==
true) {
427 minitScript->registerMethod(
new MethodCeil(minitScript));
437 { .type = MinitScript::TYPE_FLOAT, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
439 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
440 const string getMethodName()
override {
445 if (arguments.size() == 1 &&
446 MinitScript::getFloatValue(arguments, 0, value) ==
true) {
453 minitScript->registerMethod(
new MethodRound(minitScript));
463 { .type = MinitScript::TYPE_FLOAT, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
465 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
466 const string getMethodName()
override {
471 if (arguments.size() == 1 &&
472 MinitScript::getFloatValue(arguments, 0, value) ==
true) {
479 minitScript->registerMethod(
new MethodSqrt(minitScript));
488 const string getMethodName()
override {
489 return "math.random";
492 if (arguments.size() == 0) {
499 minitScript->registerMethod(
new MethodRandom(minitScript));
509 { .type = MinitScript::TYPE_FLOAT, .name =
"power", .optional =
false, .reference =
false, .nullable =
false },
511 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
512 const string getMethodName()
override {
517 if (arguments.size() == 1 &&
518 MinitScript::getFloatValue(arguments, 0, power) ==
true) {
525 minitScript->registerMethod(
new MethodExp(minitScript));
535 { .type = MinitScript::TYPE_FLOAT, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
537 MinitScript::TYPE_FLOAT), minitScript(minitScript) {}
538 const string getMethodName()
override {
543 if (arguments.size() == 1 &&
544 MinitScript::getFloatValue(arguments, 0, value) ==
true) {
551 minitScript->registerMethod(
new MethodLog(minitScript));
561 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
563 MinitScript::TYPE_PSEUDO_NUMBER),
564 minitScript(minitScript) {}
565 const string getMethodName()
override {
569 if (arguments.size() == 1) {
572 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true && MinitScript::getFloatValue(arguments, 0, floatValue) ==
true) {
575 if (MinitScript::getIntegerValue(arguments, 0, intValue) ==
true) {
585 minitScript->registerMethod(
new MethodSign(minitScript));
595 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
597 MinitScript::TYPE_PSEUDO_NUMBER),
598 minitScript(minitScript) {}
599 const string getMethodName()
override {
600 return "math.square";
603 if (arguments.size() == 1) {
606 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true && MinitScript::getFloatValue(arguments, 0, floatValue) ==
true) {
609 if (MinitScript::getIntegerValue(arguments, 0, intValue) ==
true) {
619 minitScript->registerMethod(
new MethodSquare(minitScript));
629 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value1", .optional =
false, .reference =
false, .nullable =
false },
630 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value2", .optional =
false, .reference =
false, .nullable =
false },
632 MinitScript::TYPE_PSEUDO_NUMBER),
633 minitScript(minitScript) {}
634 const string getMethodName()
override {
638 if (arguments.size() == 2) {
643 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true &&
644 MinitScript::getFloatValue(arguments, 0, floatValue1) ==
true &&
645 MinitScript::getFloatValue(arguments, 1, floatValue2) ==
true) {
648 if (MinitScript::getIntegerValue(arguments, 0, intValue1) ==
true &&
649 MinitScript::getIntegerValue(arguments, 1, intValue2) ==
true) {
659 minitScript->registerMethod(
new MethodMin(minitScript));
669 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value1", .optional =
false, .reference =
false, .nullable =
false },
670 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value2", .optional =
false, .reference =
false, .nullable =
false },
672 MinitScript::TYPE_PSEUDO_NUMBER),
673 minitScript(minitScript) {}
674 const string getMethodName()
override {
678 if (arguments.size() == 2) {
683 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true &&
684 MinitScript::getFloatValue(arguments, 0, floatValue1) ==
true &&
685 MinitScript::getFloatValue(arguments, 1, floatValue2) ==
true) {
688 if (MinitScript::getIntegerValue(arguments, 0, intValue1) ==
true &&
689 MinitScript::getIntegerValue(arguments, 1, intValue2) ==
true) {
699 minitScript->registerMethod(
new MethodMax(minitScript));
709 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
711 MinitScript::TYPE_PSEUDO_NUMBER),
712 minitScript(minitScript) {}
713 const string getMethodName()
override {
717 if (arguments.size() == 1) {
720 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true && MinitScript::getFloatValue(arguments, 0, floatValue) ==
true) {
723 if (MinitScript::getIntegerValue(arguments, 0, intValue) ==
true) {
733 minitScript->registerMethod(
new MethodAbs(minitScript));
743 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
744 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"min", .optional =
false, .reference =
false, .nullable =
false },
745 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"max", .optional =
false, .reference =
false, .nullable =
false },
747 MinitScript::TYPE_PSEUDO_NUMBER),
748 minitScript(minitScript) {}
749 const string getMethodName()
override {
753 if (arguments.size() == 3) {
760 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true &&
761 MinitScript::getFloatValue(arguments, 0, floatValueA) ==
true &&
762 MinitScript::getFloatValue(arguments, 1, floatValueB) ==
true &&
763 MinitScript::getFloatValue(arguments, 2, floatValueC) ==
true) {
766 if (MinitScript::getIntegerValue(arguments, 0, intValueA) ==
true &&
767 MinitScript::getIntegerValue(arguments, 1, intValueB) ==
true &&
768 MinitScript::getIntegerValue(arguments, 2, intValueC) ==
true) {
778 minitScript->registerMethod(
new MethodClamp(minitScript));
788 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"base", .optional =
false, .reference =
false, .nullable =
false },
789 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"power", .optional =
false, .reference =
false, .nullable =
false },
791 MinitScript::TYPE_PSEUDO_NUMBER),
792 minitScript(minitScript) {}
793 const string getMethodName()
override {
797 if (arguments.size() == 2) {
798 int64_t intValueBase;
799 int64_t intValuePower;
800 float floatValueBase;
801 float floatValuePower;
802 if (MinitScript::hasType(arguments, MinitScript::TYPE_FLOAT) ==
true &&
803 MinitScript::getFloatValue(arguments, 0, floatValueBase) ==
true &&
804 MinitScript::getFloatValue(arguments, 1, floatValuePower) ==
true) {
807 if (MinitScript::getIntegerValue(arguments, 0, intValueBase) ==
true &&
808 MinitScript::getIntegerValue(arguments, 1, intValuePower) ==
true) {
818 minitScript->registerMethod(
new MethodPow(minitScript));
828 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
829 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"range", .optional =
false, .reference =
false, .nullable =
false },
831 MinitScript::TYPE_PSEUDO_NUMBER
832 ), minitScript(minitScript) {}
833 const string getMethodName()
override {
837 if (arguments.size() == 2) {
838 if (MinitScript::hasType(arguments, MinitScript::TYPE_INTEGER) ==
true) {
841 if (MinitScript::getIntegerValue(arguments, 0, value) ==
true &&
842 MinitScript::getIntegerValue(arguments, 1, range) ==
true) {
850 if (MinitScript::getFloatValue(arguments, 0, value) ==
true &&
851 MinitScript::getFloatValue(arguments, 1, range) ==
true) {
862 minitScript->registerMethod(
new MethodMod(minitScript));
872 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"value", .optional =
false, .reference =
false, .nullable =
false },
873 { .type = MinitScript::TYPE_PSEUDO_NUMBER, .name =
"range", .optional =
false, .reference =
false, .nullable =
false },
875 MinitScript::TYPE_PSEUDO_NUMBER
876 ), minitScript(minitScript) {}
877 const string getMethodName()
override {
878 return "math.absmod";
881 if (arguments.size() == 2) {
882 if (MinitScript::hasType(arguments, MinitScript::TYPE_INTEGER) ==
true) {
885 if (MinitScript::getIntegerValue(arguments, 0, value) ==
true &&
886 MinitScript::getIntegerValue(arguments, 1, range) ==
true) {
889 minitScript->
complain(getMethodName(), subStatement);
895 if (MinitScript::getFloatValue(arguments, 0, value) ==
true &&
896 MinitScript::getFloatValue(arguments, 1, range) ==
true) {
907 minitScript->registerMethod(
new MethodAbsMod(minitScript));
912 if (arguments.size() != 2 && arguments.size() != 3) {
913 minitScript->complain(MinitScript::decodeOperator(arguments, 2,
"mul"), subStatement); minitScript->startErrorScript();
917 for (
const auto dataType: dataTypes) {
918 if (dataType->mul(minitScript, arguments, returnValue, subStatement) ==
true)
return;
921 if (MinitScript::hasTypeForOperatorArguments(arguments, MinitScript::TYPE_FLOAT) ==
true) {
924 auto isAFloat = MinitScript::getFloatValue(arguments, 0, a,
false);
925 auto isBFloat = MinitScript::getFloatValue(arguments, 1, b,
false);
926 if (isAFloat ==
true &&
931 minitScript->complainOperator(
933 MinitScript::decodeOperator(arguments, 2,
"mul"),
935 string(isAFloat ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a float value":
"") +
936 string(isBFloat ==
false?
string(isAFloat ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a float value":
"")
938 minitScript->startErrorScript();
945 auto isAInteger = MinitScript::getIntegerValue(arguments, 0, a,
false) ==
true;
946 auto isBInteger = MinitScript::getIntegerValue(arguments, 1, b,
false) ==
true;
947 if (isAInteger ==
true &&
948 isBInteger ==
true) {
952 minitScript->complainOperator(
954 MinitScript::decodeOperator(arguments, 2,
"mul"),
956 string(isAInteger ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a integer value":
"") +
957 string(isBInteger ==
false?
string(isAInteger ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a integer value":
"")
959 minitScript->startErrorScript();
966 if (arguments.size() != 2 && arguments.size() != 3) {
967 minitScript->complain(MinitScript::decodeOperator(arguments, 2,
"div"), subStatement); minitScript->startErrorScript();
971 for (
const auto dataType: dataTypes) {
972 if (dataType->div(minitScript, arguments, returnValue, subStatement) ==
true)
return;
975 if (MinitScript::hasTypeForOperatorArguments(arguments, MinitScript::TYPE_FLOAT) ==
true) {
978 auto isAFloat = MinitScript::getFloatValue(arguments, 0, a,
false);
979 auto isBFloat = MinitScript::getFloatValue(arguments, 1, b,
false);
980 if (isAFloat ==
true &&
985 minitScript->complainOperator(
987 MinitScript::decodeOperator(arguments, 2,
"div"),
989 string(isAFloat ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a float value":
"") +
990 string(isBFloat ==
false?
string(isAFloat ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a float value":
"")
992 minitScript->startErrorScript();
999 auto isAInteger = MinitScript::getIntegerValue(arguments, 0, a,
false) ==
true;
1000 auto isBInteger = MinitScript::getIntegerValue(arguments, 1, b,
false) ==
true;
1001 if (isAInteger ==
true &&
1002 isBInteger ==
true) {
1006 minitScript->complainOperator(
1008 MinitScript::decodeOperator(arguments, 2,
"div"),
1010 string(isAInteger ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a integer value":
"") +
1011 string(isBInteger ==
false?
string(isAInteger ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a integer value":
"")
1013 minitScript->startErrorScript();
1020 if (arguments.size() != 2 && arguments.size() != 3) {
1021 minitScript->complain(MinitScript::decodeOperator(arguments, 2,
"add"), subStatement); minitScript->startErrorScript();
1025 if (MinitScript::hasTypeForOperatorArguments(arguments, MinitScript::TYPE_STRING) ==
true) {
1027 for (
auto i = 0; i < arguments.size() - 1; i++) {
1028 result+= arguments[i].getValueAsString();
1034 for (
const auto dataType: dataTypes) {
1035 if (dataType->add(minitScript, arguments, returnValue, subStatement) ==
true)
return;
1038 if (MinitScript::hasTypeForOperatorArguments(arguments, MinitScript::TYPE_FLOAT) ==
true) {
1041 auto isAFloat = MinitScript::getFloatValue(arguments, 0, a,
false);
1042 auto isBFloat = MinitScript::getFloatValue(arguments, 1, b,
false);
1043 if (isAFloat ==
true &&
1048 minitScript->complainOperator(
1050 MinitScript::decodeOperator(arguments, 2,
"add"),
1052 string(isAFloat ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a float value":
"") +
1053 string(isBFloat ==
false?
string(isAFloat ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a float value":
"")
1055 minitScript->startErrorScript();
1062 auto isAInteger = MinitScript::getIntegerValue(arguments, 0, a,
false) ==
true;
1063 auto isBInteger = MinitScript::getIntegerValue(arguments, 1, b,
false) ==
true;
1064 if (isAInteger ==
true &&
1065 isBInteger ==
true) {
1069 minitScript->complainOperator(
1071 MinitScript::decodeOperator(arguments, 2,
"add"),
1073 string(isAInteger ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a integer value":
"") +
1074 string(isBInteger ==
false?
string(isAInteger ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a integer value":
"")
1076 minitScript->startErrorScript();
1083 if (arguments.size() != 2 && arguments.size() != 3) {
1084 minitScript->complain(MinitScript::decodeOperator(arguments, 2,
"sub"), subStatement); minitScript->startErrorScript();
1088 for (
const auto dataType: dataTypes) {
1089 if (dataType->sub(minitScript, arguments, returnValue, subStatement) ==
true)
return;
1092 if (MinitScript::hasTypeForOperatorArguments(arguments, MinitScript::TYPE_FLOAT) ==
true) {
1095 auto isAFloat = MinitScript::getFloatValue(arguments, 0, a,
false);
1096 auto isBFloat = MinitScript::getFloatValue(arguments, 1, b,
false);
1097 if (isAFloat ==
true &&
1102 minitScript->complainOperator(
1104 MinitScript::decodeOperator(arguments, 2,
"sub"),
1106 string(isAFloat ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a float value":
"") +
1107 string(isBFloat ==
false?
string(isAFloat ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a float value":
"")
1109 minitScript->startErrorScript();
1116 auto isAInteger = MinitScript::getIntegerValue(arguments, 0, a,
false) ==
true;
1117 auto isBInteger = MinitScript::getIntegerValue(arguments, 1, b,
false) ==
true;
1118 if (isAInteger ==
true &&
1119 isBInteger ==
true) {
1123 minitScript->complainOperator(
1125 MinitScript::decodeOperator(arguments, 2,
"sub"),
1127 string(isAInteger ==
false?
"Left argument '" + arguments[0].getValueAsString() +
"' is not a integer value":
"") +
1128 string(isBInteger ==
false?
string(isAInteger ==
false?
" and right argument":
"Right argument") +
" '" + arguments[1].getValueAsString() +
"' is not a integer value":
"")
1130 minitScript->startErrorScript();
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
static float sqrt(float value)
Returns the square root of given value.
static float log(float value)
Returns the natural (base e) logarithm of value.
static float round(float value)
Returns the rounded value of given float value.
static float sin(float x)
Returns the sine of x.
static float tan(float x)
Returns the tangent of x.
static float atan(float x)
Returns the arc tangent of x.
static auto mod(auto value, auto range)
Returns modulo of value, so that return value is -range < value < range.
static auto square(auto value)
Do the square product.
static float floor(float value)
Returns the lower integer value of given value.
static float cos(float x)
Returns the cosine of x.
static constexpr float EPSILON
static auto abs(auto value)
Returns absolute value.
static float asin(float x)
Returns the arc sine of x.
static float random()
Returns a random value between 0.0 .
static auto absmod(auto value, auto range)
Returns absolute modulo of value, so that return value is 0 <= value < range.
static auto min(auto value1, auto value2)
Returns the lesser value of given values.
static float acos(float x)
Returns the arc cosine of x.
static auto max(auto value1, auto value2)
Returns the higher value of given values.
static float atan2(float y, float x)
Returns the angle from the conversion of rectangular coordinates to polar coordinates.
static float exp(float power)
Returns e raised to the given power.
static auto pow(auto base, auto power)
Returns the value of base raised to the power.
static constexpr float PI
static auto sign(auto value)
Returns sign of value.
static float ceil(float value)
Returns the higher integer value of given value.
static constexpr float DEG2RAD
static auto clamp(auto value, auto min, auto max)
Clamps a value to min or max value.
MinitScript math methods.
void div(const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement)
Division.
void sub(const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement)
Subtraction.
void mul(const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement)
Multiply.
void add(const span< MinitScript::Variable > &arguments, MinitScript::Variable &returnValue, const MinitScript::SubStatement &subStatement)
Addition.
void setValue(const Variable &variable)
Set value from given variable into variable.
MathMethods * getMathMethods()
void complain(const string &methodName, const SubStatement &subStatement)
Complain about method usage.
void startErrorScript()
Start error script.