roblox_emulator: move coerce method onto CoerceEnum struct
This commit is contained in:
parent
b5da30fd9a
commit
2bf34fd04c
lib/roblox_emulator/src/runner
@ -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>{
|
||||
|
@ -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),
|
||||
|
Loading…
x
Reference in New Issue
Block a user