From 2bf34fd04c1bff6c0569053ec1f17697d9537b80 Mon Sep 17 00:00:00 2001 From: Quaternions <krakow20@gmail.com> Date: Wed, 23 Apr 2025 17:19:59 -0700 Subject: [PATCH] roblox_emulator: move coerce method onto CoerceEnum struct --- lib/roblox_emulator/src/runner/enum.rs | 16 +++++++++------- lib/roblox_emulator/src/runner/tween_info.rs | 4 ++-- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/roblox_emulator/src/runner/enum.rs b/lib/roblox_emulator/src/runner/enum.rs index 610bc23..d3c3dc3 100644 --- a/lib/roblox_emulator/src/runner/enum.rs +++ b/lib/roblox_emulator/src/runner/enum.rs @@ -62,13 +62,6 @@ impl<'a> EnumItems<'a>{ None=>self.from_value(enum_item.value) } } - pub fn coerce(&self,e:CoerceEnum)->mlua::Result<EnumItem<'a>>{ - match e{ - CoerceEnum::Integer(int)=>self.from_value(int as u32), - CoerceEnum::String(s)=>self.from_name(&*s.to_str()?), - CoerceEnum::Enum(enum_item)=>self.from_enum(enum_item), - }.ok_or_else(||mlua::Error::runtime(format!("Bad {} EnumItem",self.ed.name))) - } } pub enum CoerceEnum<'a>{ @@ -76,6 +69,15 @@ pub enum CoerceEnum<'a>{ String(mlua::String), Enum(EnumItem<'a>), } +impl CoerceEnum<'_>{ + pub fn coerce_to<'a>(self,enum_items:EnumItems<'a>)->mlua::Result<EnumItem<'a>>{ + match self{ + CoerceEnum::Integer(int)=>enum_items.from_value(int as u32), + CoerceEnum::String(s)=>enum_items.from_name(&*s.to_str()?), + CoerceEnum::Enum(enum_item)=>enum_items.from_enum(enum_item), + }.ok_or_else(||mlua::Error::runtime(format!("Bad {} EnumItem",enum_items.ed.name))) + } +} impl mlua::FromLua for CoerceEnum<'_>{ fn from_lua(value:mlua::Value,_lua:&mlua::Lua)->Result<Self,mlua::Error>{ diff --git a/lib/roblox_emulator/src/runner/tween_info.rs b/lib/roblox_emulator/src/runner/tween_info.rs index ef65715..6f018cd 100644 --- a/lib/roblox_emulator/src/runner/tween_info.rs +++ b/lib/roblox_emulator/src/runner/tween_info.rs @@ -22,12 +22,12 @@ pub fn set_globals(lua:&mlua::Lua,globals:&mlua::Table)->Result<(),mlua::Error>{ easing_style:match easing_style{ // Enum.EasingStyle.Quad None=>rbx_types::Enum::from_u32(3), - Some(e)=>Enums.get("EasingStyle").unwrap().coerce(e)?.into(), + Some(e)=>e.coerce_to(Enums.get("EasingStyle").unwrap())?.into(), }, easing_direction:match easing_direction{ // Enum.EasingDirection.Out None=>rbx_types::Enum::from_u32(1), - Some(e)=>Enums.get("EasingDirection").unwrap().coerce(e)?.into(), + Some(e)=>e.coerce_to(Enums.get("EasingDirection").unwrap())?.into(), }, repeat_count:repeat_count.unwrap_or(0), reverses:reverses.unwrap_or(false),