Files
effector.plugin.fivelakes/Effector.Plugin.FiveLakes/LUA/Lua_Aux.vb
T
2024-10-03 16:30:55 +02:00

687 lines
25 KiB
VB.net

Imports KeraLua
Public Module Lua_Aux
Private m_State As Lua
Friend Sub SetState(state As Lua)
m_State = state
End Sub
Friend Function LuaClearStack(state As Lua)
Dim nIndex As Integer = state.GetTop()
If nIndex > 0 Then
state.Pop(nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean)
If Not LuaGetParam(state, nIndex, bValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef nValue As Integer)
If Not LuaGetParam(state, nIndex, nValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef lValue As Long)
If Not LuaGetParam(state, nIndex, lValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef dValue As Double)
If Not LuaGetParam(state, nIndex, dValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaCheckParam(state As Lua, nIndex As Integer, ByRef sValue As String)
If Not LuaGetParam(state, nIndex, sValue) Then
Return state.Error(" Invalid Parameter # " & nIndex)
End If
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef bValue As Boolean) As Boolean
If Not state.IsBoolean(nIndex) Then Return False
bValue = state.ToBoolean(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef nValue As Integer) As Boolean
If Not state.IsNumber(nIndex) Then Return False
nValue = Math.Round(state.ToNumber(nIndex))
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef lValue As Long) As Boolean
If Not state.IsNumber(nIndex) Then Return False
lValue = state.ToInteger(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef dValue As Double) As Boolean
If Not state.IsNumber(nIndex) Then Return False
dValue = state.ToNumber(nIndex)
Return True
End Function
Friend Function LuaGetParam(state As Lua, nIndex As Integer, ByRef sValue As String) As Boolean
If Not state.IsString(nIndex) Then Return False
sValue = state.ToString(nIndex)
Return True
End Function
Friend Function LuaSetParam(state As Lua) As Boolean
Try
state.PushNil()
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef bValue As Boolean) As Boolean
Try
state.PushBoolean(bValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef nValue As Integer) As Boolean
Try
state.PushInteger(nValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef lValue As Long) As Boolean
Try
state.PushInteger(lValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef dValue As Double) As Boolean
Try
state.PushNumber(dValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaSetParam(state As Lua, ByRef sValue As String) As Boolean
Try
state.PushString(sValue)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, bValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, nValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef lValue As Long) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, lValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, dValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
state.GetField(nIndex, sVarName)
Dim bResult As Boolean = LuaGetParam(state, -1, sValue)
state.Pop(1)
Return bResult
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, bValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, bValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, bValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, bValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, nValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, nValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, nValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, nValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef lValue As Long) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, lValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, lValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef lValue As Long) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, lValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, lValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, dValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, dValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, dValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, dValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
state.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(state, -1, sValue)
state.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
state.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
state.RawGetInteger(-1, nTableIndex)
Else
state.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(state, -1, sVarName, sValue)
state.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaGetGlobVar(ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
m_State.GetGlobal(sName)
Dim bResult As Boolean = LuaGetParam(m_State, -1, sValue)
m_State.Pop(1)
Return bResult
Else
Dim sTableName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
m_State.GetGlobal(sTableName)
For nParamIndex As Integer = 1 To sParams.Count - 2
Dim nTableIndex As Integer = -1
If Integer.TryParse(sParams(nParamIndex), nTableIndex) Then
m_State.RawGetInteger(-1, nTableIndex)
Else
m_State.GetField(-1, sParams(nParamIndex))
End If
Next
Dim sVarName As String = sParams(sParams.Count - 1)
Dim bResult As Boolean = LuaGetTabFieldParam(m_State, -1, sVarName, sValue)
m_State.Pop(sParams.Count - 1)
Return bResult
End If
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef bValue As Boolean) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, bValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef nValue As Integer) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, nValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef dValue As Double) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, dValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetTabFieldParam(state As Lua, nIndex As Integer, sVarName As String, ByRef sValue As String) As Boolean
If Not state.IsTable(nIndex) Then Return False
If Not LuaSetParam(state, sValue) Then Return False
Dim nPos As Integer = (If(nIndex > 0, nIndex, nIndex - 1))
state.SetField(nPos, sVarName)
Return True
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, bValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, bValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef bValue As Boolean) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, bValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, bValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, nValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, nValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef nValue As Integer) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, nValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, nValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, dValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, dValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef dValue As Double) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, dValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, dValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(state As Lua, ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state, sValue) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName, sValue)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaSetGlobVar(ByRef sName As String, ByRef sValue As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State, sValue) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName, sValue)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaResetGlobVar(state As Lua, ByRef sName As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(state) Then Return False
state.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
state.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(state, -1, sVarName)
state.Pop(1)
Return bResult
End If
End Function
Friend Function LuaResetGlobVar(ByRef sName As String) As Boolean
' se variabile standard
If Not sName.Contains("."c) Then
If Not LuaSetParam(m_State) Then Return False
m_State.SetGlobal(sName)
Return True
' altrimenti campo di tabella
Else
Dim sTableName As String = "", sVarName As String = ""
Dim sParams() As String = sName.Split("."c)
sTableName = sParams(0)
sVarName = sParams(1)
m_State.GetGlobal(sTableName)
Dim bResult As Boolean = LuaSetTabFieldParam(m_State, -1, sVarName)
m_State.Pop(1)
Return bResult
End If
End Function
Friend Function LuaCreateGlobTable(state As Lua, ByRef sName As String) As Boolean
Try
state.NewTable()
state.SetGlobal(sName)
Catch ex As Exception
Return False
End Try
Return True
End Function
Friend Function LuaCreateGlobTable(ByRef sName As String) As Boolean
Try
m_State.NewTable()
m_State.SetGlobal(sName)
Catch ex As Exception
Return False
End Try
Return True
End Function
End Module