61 lines
2.3 KiB
VB.net
61 lines
2.3 KiB
VB.net
Namespace ScriptVersion2
|
|
|
|
Partial Class ScriptComparer
|
|
|
|
' --------------------------------------------------------------------------------------------------------------------------
|
|
' Contains the <math> constructs.
|
|
' --------------------------------------------------------------------------------------------------------------------------
|
|
|
|
Private Shared Function DoMath(ByVal subClass As String) As Object
|
|
Dim command As String = GetSubClassArgumentPair(subClass).Command
|
|
Dim argument As String = GetSubClassArgumentPair(subClass).Argument
|
|
|
|
Select Case command.ToLower()
|
|
Case "int"
|
|
Return int(argument)
|
|
Case "sng"
|
|
Return sng(argument)
|
|
Case "dbl"
|
|
Return dbl(argument)
|
|
Case "abs"
|
|
Return Math.Abs(dbl(argument))
|
|
Case "ceiling"
|
|
Return Math.Ceiling(dbl(argument))
|
|
Case "floor"
|
|
Return Math.Floor(dbl(argument))
|
|
Case "isint", "issng", "isdbl"
|
|
Return ReturnBoolean(ScriptConversion.IsArithmeticExpression(argument))
|
|
Case "clamp"
|
|
Dim args() As String = argument.Split(CChar(","))
|
|
Dim n As Double = dbl(args(0))
|
|
Dim min As Double = dbl(args(1))
|
|
Dim max As Double = dbl(args(2))
|
|
|
|
Return n.Clamp(min, max)
|
|
Case "rollover"
|
|
Dim args() As String = argument.Split(CChar(","))
|
|
Dim n As Double = dbl(args(0))
|
|
Dim min As Double = dbl(args(1))
|
|
Dim max As Double = dbl(args(2))
|
|
|
|
Dim diff As Double = (max - min) + 1
|
|
|
|
If n > max Then
|
|
While n > max
|
|
n -= diff
|
|
End While
|
|
ElseIf n < min Then
|
|
While n < min
|
|
n += diff
|
|
End While
|
|
End If
|
|
|
|
Return n
|
|
End Select
|
|
|
|
Return DEFAULTNULL
|
|
End Function
|
|
|
|
End Class
|
|
|
|
End Namespace |