From 84db6503f98197c682145076563f60a3037c7543 Mon Sep 17 00:00:00 2001 From: Quaternions Date: Wed, 23 Apr 2025 02:00:09 -0700 Subject: [PATCH] roblox_emulator: implement EnumItem.__eq --- lib/roblox_emulator/src/runner/enum.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs index 43242aa6..390ab036 100644 --- a/lib/roblox_emulator/src/runner/enum.rs +++ b/lib/roblox_emulator/src/runner/enum.rs @@ -23,6 +23,17 @@ impl From> for rbx_types::Enum{ rbx_types::Enum::from_u32(e.value) } } +impl PartialEq for EnumItem<'_>{ + fn eq(&self,other:&EnumItem<'_>)->bool{ + self.value==other.value&&{ + // if both names are known, they must match, otherwise whatever + match (self.name,other.name){ + (Some(lhs),Some(rhs))=>lhs==rhs, + _=>true, + } + } + } +} #[derive(Clone,Copy)] pub struct Enums; @@ -69,7 +80,10 @@ impl mlua::UserData for EnumItem<'_>{ fields.add_field_method_get("Name",|_,this|Ok(this.name)); fields.add_field_method_get("Value",|_,this|Ok(this.value)); } - fn add_methods>(_methods:&mut M){ + fn add_methods>(methods:&mut M){ + methods.add_meta_function(mlua::MetaMethod::Eq,|_,(lhs,rhs):(EnumItem<'_>,EnumItem<'_>)|{ + Ok(lhs==rhs) + }); } } type_from_lua_userdata_lua_lifetime!(EnumItem);