roblox_emulator: rename Enum stuff to somewhat match Roblox

This commit is contained in:
Quaternions 2025-04-23 01:38:27 -07:00
parent 534b45d7dd
commit 6464343428
Signed by: Quaternions
GPG Key ID: D0DF5964F79AC131
2 changed files with 18 additions and 18 deletions
lib/roblox_emulator/src/runner

@ -1,19 +1,19 @@
use mlua::IntoLua; use mlua::IntoLua;
#[derive(Clone,Copy)] #[derive(Clone,Copy)]
pub struct Enum<'a>{ pub struct EnumItem<'a>{
name:&'a str, name:&'a str,
value:u32, value:u32,
} }
#[derive(Clone,Copy)] #[derive(Clone,Copy)]
pub struct EnumItems; pub struct Enums;
#[derive(Clone,Copy)] #[derive(Clone,Copy)]
pub struct EnumItem<'a>{ pub struct EnumItems<'a>{
ed:&'a rbx_reflection::EnumDescriptor<'a>, ed:&'a rbx_reflection::EnumDescriptor<'a>,
} }
impl From<Enum<'_>> for rbx_types::Enum{ impl From<EnumItem<'_>> for rbx_types::Enum{
fn from(e:Enum)->rbx_types::Enum{ fn from(e:EnumItem)->rbx_types::Enum{
rbx_types::Enum::from_u32(e.value) 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>{ 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_fields<F:mlua::UserDataFields<Self>>(_fields:&mut F){
} }
fn add_methods<M:mlua::UserDataMethods<Self>>(methods:&mut M){ 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("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):(EnumItem,mlua::String)|{ methods.add_meta_function(mlua::MetaMethod::Index,|lua,(this,val):(EnumItems,mlua::String)|{
let index=&*val.to_str()?; let index=&*val.to_str()?;
match this.ed.items.get_key_value(index){ 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), 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_fields<F:mlua::UserDataFields<Self>>(_fields:&mut F){
} }
fn add_methods<M:mlua::UserDataMethods<Self>>(methods:&mut M){ 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){ 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("Name",|_,this|Ok(this.name));
fields.add_field_method_get("Value",|_,this|Ok(this.value)); 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){ fn add_methods<M:mlua::UserDataMethods<Self>>(_methods:&mut M){
} }
} }
type_from_lua_userdata_lua_lifetime!(Enum); type_from_lua_userdata_lua_lifetime!(EnumItem);

@ -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"))?)) 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)=>{ 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()) Ok(e.into())
}, },
_=>Err(mlua::Error::runtime("Expected Enum")), _=>Err(mlua::Error::runtime("Expected Enum")),
@ -476,8 +476,8 @@ static CLASS_FUNCTION_DATABASE:CFD=phf::phf_map!{
"GetService"=>GET_SERVICE, "GetService"=>GET_SERVICE,
}, },
"Terrain"=>phf::phf_map!{ "Terrain"=>phf::phf_map!{
"FillBlock"=>cf!(|_lua,_,_:(crate::runner::cframe::CFrame,Vector3,crate::runner::r#enum::Enum)|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::Enum,crate::runner::color3::Color3)|mlua::Result::Ok(())), "SetMaterialColor"=>cf!(|_lua,_,_:(crate::runner::r#enum::EnumItem,crate::runner::color3::Color3)|mlua::Result::Ok(())),
}, },
"Players"=>phf::phf_map!{ "Players"=>phf::phf_map!{
"players"=>GET_PLAYERS, "players"=>GET_PLAYERS,