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)
|
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>{
|
pub enum CoerceEnum<'a>{
|
||||||
@ -76,6 +69,15 @@ pub enum CoerceEnum<'a>{
|
|||||||
String(mlua::String),
|
String(mlua::String),
|
||||||
Enum(EnumItem<'a>),
|
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<'_>{
|
impl mlua::FromLua for CoerceEnum<'_>{
|
||||||
fn from_lua(value:mlua::Value,_lua:&mlua::Lua)->Result<Self,mlua::Error>{
|
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{
|
easing_style:match easing_style{
|
||||||
// Enum.EasingStyle.Quad
|
// Enum.EasingStyle.Quad
|
||||||
None=>rbx_types::Enum::from_u32(3),
|
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{
|
easing_direction:match easing_direction{
|
||||||
// Enum.EasingDirection.Out
|
// Enum.EasingDirection.Out
|
||||||
None=>rbx_types::Enum::from_u32(1),
|
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),
|
repeat_count:repeat_count.unwrap_or(0),
|
||||||
reverses:reverses.unwrap_or(false),
|
reverses:reverses.unwrap_or(false),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user