forked from StrafesNET/strafe-project
roblox_emulator: refactor Enums
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
use mlua::IntoLua;
|
|
||||||
|
|
||||||
#[derive(Clone,Copy)]
|
#[derive(Clone,Copy)]
|
||||||
pub struct EnumItem<'a>{
|
pub struct EnumItem<'a>{
|
||||||
name:Option<&'a str>,
|
name:Option<&'a str>,
|
||||||
@@ -37,12 +35,17 @@ impl PartialEq for EnumItem<'_>{
|
|||||||
|
|
||||||
#[derive(Clone,Copy)]
|
#[derive(Clone,Copy)]
|
||||||
pub struct Enums;
|
pub struct Enums;
|
||||||
|
impl Enums{
|
||||||
|
pub fn get(&self,index:&str)->Option<EnumItems<'static>>{
|
||||||
|
let db=rbx_reflection_database::get();
|
||||||
|
db.enums.get(index).map(|ed|EnumItems{ed})
|
||||||
|
}
|
||||||
|
}
|
||||||
#[derive(Clone,Copy)]
|
#[derive(Clone,Copy)]
|
||||||
pub struct EnumItems<'a>{
|
pub struct EnumItems<'a>{
|
||||||
ed:&'a rbx_reflection::EnumDescriptor<'a>,
|
ed:&'a rbx_reflection::EnumDescriptor<'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",Enums)
|
globals.set("Enum",Enums)
|
||||||
}
|
}
|
||||||
@@ -66,12 +69,8 @@ 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){
|
||||||
methods.add_meta_function(mlua::MetaMethod::Index,|lua,(_,val):(Self,mlua::String)|{
|
methods.add_meta_function(mlua::MetaMethod::Index,|_,(enums,val):(Self,mlua::String)|{
|
||||||
let db=rbx_reflection_database::get();
|
Ok(enums.get(&*val.to_str()?))
|
||||||
match db.enums.get(&*val.to_str()?){
|
|
||||||
Some(ed)=>EnumItems{ed}.into_lua(lua),
|
|
||||||
None=>mlua::Value::Nil.into_lua(lua),
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user