66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package packet
 | 
						|
 | 
						|
import lua "github.com/yuin/gopher-lua"
 | 
						|
 | 
						|
func getStringFromTable(table *lua.LTable, key string) string {
 | 
						|
	value := table.RawGetString(key)
 | 
						|
	if value.Type() == lua.LTString {
 | 
						|
		return value.String()
 | 
						|
	}
 | 
						|
	return ""
 | 
						|
}
 | 
						|
 | 
						|
func getIntFromTable(table *lua.LTable, key string) int {
 | 
						|
	value := table.RawGetString(key)
 | 
						|
	if value.Type() == lua.LTNumber {
 | 
						|
		if num, ok := value.(lua.LNumber); ok {
 | 
						|
			return int(num)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return -133
 | 
						|
}
 | 
						|
 | 
						|
func getStringArrayFromTable(L *lua.LState, table *lua.LTable, key string) []string {
 | 
						|
	value := table.RawGetString(key)
 | 
						|
	if value.Type() != lua.LTTable {
 | 
						|
		return []string{}
 | 
						|
	}
 | 
						|
 | 
						|
	arrayTable := value.(*lua.LTable)
 | 
						|
	var result []string
 | 
						|
 | 
						|
	arrayTable.ForEach(func(_, value lua.LValue) {
 | 
						|
		if value.Type() == lua.LTString {
 | 
						|
			result = append(result, value.String())
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	return result
 | 
						|
}
 | 
						|
 | 
						|
func getFunctionFromTable(table *lua.LTable, key string) *lua.LFunction {
 | 
						|
	value := table.RawGetString(key)
 | 
						|
	if value.Type() == lua.LTFunction {
 | 
						|
		return value.(*lua.LFunction)
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func getDependenciesFromTable(L *lua.LState, table *lua.LTable, key string) map[string]string {
 | 
						|
	value := table.RawGetString(key)
 | 
						|
	if value.Type() != lua.LTTable {
 | 
						|
		return map[string]string{}
 | 
						|
	}
 | 
						|
 | 
						|
	depsTable := value.(*lua.LTable)
 | 
						|
	dependencies := make(map[string]string)
 | 
						|
 | 
						|
	depsTable.ForEach(func(key, value lua.LValue) {
 | 
						|
		if key.Type() == lua.LTString && value.Type() == lua.LTString {
 | 
						|
			dependencies[key.String()] = value.String()
 | 
						|
		}
 | 
						|
	})
 | 
						|
 | 
						|
	return dependencies
 | 
						|
}
 |