Support non-int Enum types in the Lua API.
This commit is contained in:
@@ -79,6 +79,18 @@ namespace OpenRA.Scripting
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (value is LuaNumber && t.IsAssignableFrom(typeof(short)))
|
||||||
|
{
|
||||||
|
clrObject = (short)value.ToNumber().Value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value is LuaNumber && t.IsAssignableFrom(typeof(byte)))
|
||||||
|
{
|
||||||
|
clrObject = (byte)value.ToNumber().Value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (value is LuaString && t.IsAssignableFrom(typeof(string)))
|
if (value is LuaString && t.IsAssignableFrom(typeof(string)))
|
||||||
{
|
{
|
||||||
clrObject = value.ToString();
|
clrObject = value.ToString();
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Eluant;
|
using Eluant;
|
||||||
using OpenRA.Mods.Common.Traits;
|
using OpenRA.Mods.Common.Traits;
|
||||||
@@ -43,7 +44,7 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
var genericType = initType.GetInterfaces()
|
var genericType = initType.GetInterfaces()
|
||||||
.First(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IActorInit<>));
|
.First(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IActorInit<>));
|
||||||
var innerType = genericType.GetGenericArguments().First();
|
var innerType = genericType.GetGenericArguments().First();
|
||||||
var valueType = innerType.IsEnum ? typeof(int) : innerType;
|
var valueType = innerType.IsEnum ? Enum.GetUnderlyingType(innerType) : innerType;
|
||||||
|
|
||||||
// Try and coerce the table value to the required type
|
// Try and coerce the table value to the required type
|
||||||
object value;
|
object value;
|
||||||
|
|||||||
Reference in New Issue
Block a user