diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs index 32a4f2ffe..18491a0a2 100644 --- a/lib/roblox_emulator/src/runner/enum.rs +++ b/lib/roblox_emulator/src/runner/enum.rs @@ -1,5 +1,3 @@ -use mlua::IntoLua; - #[derive(Clone,Copy)] pub struct EnumItem<'a>{ name:Option<&'a str>, @@ -37,12 +35,17 @@ impl PartialEq for EnumItem<'_>{ #[derive(Clone,Copy)] pub struct Enums; +impl Enums{ + pub fn get(&self,index:&str)->Option>{ + let db=rbx_reflection_database::get(); + db.enums.get(index).map(|ed|EnumItems{ed}) + } +} #[derive(Clone,Copy)] pub struct EnumItems<'a>{ ed:&'a rbx_reflection::EnumDescriptor<'a>, } - pub fn set_globals(_lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{ globals.set("Enum",Enums) } @@ -66,12 +69,8 @@ impl mlua::UserData for Enums{ fn add_fields>(_fields:&mut F){ } fn add_methods>(methods:&mut M){ - methods.add_meta_function(mlua::MetaMethod::Index,|lua,(_,val):(Self,mlua::String)|{ - let db=rbx_reflection_database::get(); - match db.enums.get(&*val.to_str()?){ - Some(ed)=>EnumItems{ed}.into_lua(lua), - None=>mlua::Value::Nil.into_lua(lua), - } + methods.add_meta_function(mlua::MetaMethod::Index,|_,(enums,val):(Self,mlua::String)|{ + Ok(enums.get(&*val.to_str()?)) }); } }