use crate::builtin::Variant;
use crate::r#gen::classes::Node;
use crate::meta::error::RpcError;
use crate::obj::rpc::UserRpcObject;
use crate::obj::{GodotClass, Inherits, WithBaseField};
pub struct RpcBuilder<'c, C: GodotClass> {
object: UserRpcObject<'c, C>,
rpc_name: &'c str,
arguments: Vec<Variant>,
}
impl<'c, C: GodotClass> RpcBuilder<'c, C> {
pub fn new(object: UserRpcObject<'c, C>, rpc_name: &'c str, arguments: Vec<Variant>) -> Self {
Self {
object,
rpc_name,
arguments,
}
}
}
impl<'c, C> RpcBuilder<'c, C>
where
C: WithBaseField + Inherits<Node>,
{
pub fn call(self) -> Result<(), RpcError> {
self.object.call_rpc(self.rpc_name, &self.arguments)
}
pub fn call_id(self, id: i64) -> Result<(), RpcError> {
self.object.call_rpc_id(self.rpc_name, id, &self.arguments)
}
}