diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs index 1cbaa94..995b311 100644 --- a/lib/roblox_emulator/src/runner/enum.rs +++ b/lib/roblox_emulator/src/runner/enum.rs @@ -1,19 +1,19 @@ use mlua::IntoLua; #[derive(Clone,Copy)] -pub struct Enum<'a>{ +pub struct EnumItem<'a>{ name:&'a str, value:u32, } #[derive(Clone,Copy)] -pub struct EnumItems; +pub struct Enums; #[derive(Clone,Copy)] -pub struct EnumItem<'a>{ +pub struct EnumItems<'a>{ ed:&'a rbx_reflection::EnumDescriptor<'a>, } -impl From<Enum<'_>> for rbx_types::Enum{ - fn from(e:Enum)->rbx_types::Enum{ +impl From<EnumItem<'_>> for rbx_types::Enum{ + fn from(e:EnumItem)->rbx_types::Enum{ rbx_types::Enum::from_u32(e.value) } } @@ -25,26 +25,26 @@ impl<'a> EnumItem<'a>{ } pub fn set_globals(_lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{ - globals.set("Enum",EnumItems) + globals.set("Enum",Enums) } -impl mlua::UserData for EnumItem<'_>{ +impl mlua::UserData for EnumItems<'_>{ fn add_fields<F:mlua::UserDataFields<Self>>(_fields:&mut F){ } fn add_methods<M:mlua::UserDataMethods<Self>>(methods:&mut M){ - methods.add_meta_function("GetEnumItems",|_,this:EnumItem|Ok(this.ed.items.iter().map(|(name,&value)|Enum{name,value}).collect::<Vec<_>>())); - methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,val):(EnumItem,mlua::String)|{ + methods.add_meta_function("GetEnumItems",|_,this:EnumItems|Ok(this.ed.items.iter().map(|(name,&value)|EnumItem{name,value}).collect::<Vec<_>>())); + methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,val):(EnumItems,mlua::String)|{ let index=&*val.to_str()?; match this.ed.items.get_key_value(index){ - Some((name,&value))=>Enum{name,value}.into_lua(lua), + Some((name,&value))=>EnumItem{name,value}.into_lua(lua), None=>mlua::Value::Nil.into_lua(lua), } }); } } -type_from_lua_userdata_lua_lifetime!(EnumItem); +type_from_lua_userdata_lua_lifetime!(EnumItems); -impl mlua::UserData for EnumItems{ +impl mlua::UserData for Enums{ fn add_fields<F:mlua::UserDataFields<Self>>(_fields:&mut F){ } fn add_methods<M:mlua::UserDataMethods<Self>>(methods:&mut M){ @@ -57,9 +57,9 @@ impl mlua::UserData for EnumItems{ }); } } -type_from_lua_userdata!(EnumItems); +type_from_lua_userdata!(Enums); -impl mlua::UserData for Enum<'_>{ +impl mlua::UserData for EnumItem<'_>{ fn add_fields<F:mlua::UserDataFields<Self>>(fields:&mut F){ fields.add_field_method_get("Name",|_,this|Ok(this.name)); fields.add_field_method_get("Value",|_,this|Ok(this.value)); @@ -67,4 +67,4 @@ impl mlua::UserData for Enum<'_>{ fn add_methods<M:mlua::UserDataMethods<Self>>(_methods:&mut M){ } } -type_from_lua_userdata_lua_lifetime!(Enum); +type_from_lua_userdata_lua_lifetime!(EnumItem); diff --git a/lib/roblox_emulator/src/runner/instance/instance.rs b/lib/roblox_emulator/src/runner/instance/instance.rs index 8244e7c..58a4a92 100644 --- a/lib/roblox_emulator/src/runner/instance/instance.rs +++ b/lib/roblox_emulator/src/runner/instance/instance.rs @@ -372,7 +372,7 @@ impl mlua::UserData for Instance{ Ok(rbx_types::Enum::from_u32(*e.items.get(&*s.to_str()?).ok_or_else(||mlua::Error::runtime("Invalid enum item"))?)) }, mlua::Value::UserData(any_user_data)=>{ - let e:crate::runner::r#enum::Enum=*any_user_data.borrow()?; + let e:crate::runner::r#enum::EnumItem=*any_user_data.borrow()?; Ok(e.into()) }, _=>Err(mlua::Error::runtime("Expected Enum")), @@ -476,8 +476,8 @@ static CLASS_FUNCTION_DATABASE:CFD=phf::phf_map!{ "GetService"=>GET_SERVICE, }, "Terrain"=>phf::phf_map!{ - "FillBlock"=>cf!(|_lua,_,_:(crate::runner::cframe::CFrame,Vector3,crate::runner::r#enum::Enum)|mlua::Result::Ok(())), - "SetMaterialColor"=>cf!(|_lua,_,_:(crate::runner::r#enum::Enum,crate::runner::color3::Color3)|mlua::Result::Ok(())), + "FillBlock"=>cf!(|_lua,_,_:(crate::runner::cframe::CFrame,Vector3,crate::runner::r#enum::EnumItem)|mlua::Result::Ok(())), + "SetMaterialColor"=>cf!(|_lua,_,_:(crate::runner::r#enum::EnumItem,crate::runner::color3::Color3)|mlua::Result::Ok(())), }, "Players"=>phf::phf_map!{ "players"=>GET_PLAYERS,