avm2: Convert external_interface to use ParametersExt

This commit is contained in:
Nathan Adams 2023-03-17 14:35:00 +01:00
parent 2513292566
commit 218b621ae3
1 changed files with 8 additions and 17 deletions

View File

@ -1,3 +1,4 @@
use crate::avm2::parameters::ParametersExt;
use crate::avm2::{Activation, Error, Object, Value}; use crate::avm2::{Activation, Error, Object, Value};
use crate::external::{Callback, Value as ExternalValue}; use crate::external::{Callback, Value as ExternalValue};
@ -6,11 +7,7 @@ pub fn call<'gc>(
_this: Option<Object<'gc>>, _this: Option<Object<'gc>>,
args: &[Value<'gc>], args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> { ) -> Result<Value<'gc>, Error<'gc>> {
if args.is_empty() { let name = args.get_string(activation, 0)?;
return Ok(Value::Null);
}
let name = args.get(0).unwrap().coerce_to_string(activation)?;
if let Some(method) = activation if let Some(method) = activation
.context .context
.external_interface .external_interface
@ -41,18 +38,12 @@ pub fn add_callback<'gc>(
_this: Option<Object<'gc>>, _this: Option<Object<'gc>>,
args: &[Value<'gc>], args: &[Value<'gc>],
) -> Result<Value<'gc>, Error<'gc>> { ) -> Result<Value<'gc>, Error<'gc>> {
if args.len() < 2 { let name = args.get_string(activation, 0)?;
return Ok(Value::Undefined); let method = args.get_object(activation, 1, "closure")?;
}
let name = args.get(0).unwrap().coerce_to_string(activation)?;
let method = args.get(1).unwrap();
if let Value::Object(method) = method {
activation activation
.context .context
.external_interface .external_interface
.add_callback(name.to_string(), Callback::Avm2 { method: *method }); .add_callback(name.to_string(), Callback::Avm2 { method });
}
Ok(Value::Undefined) Ok(Value::Undefined)
} }