cleaned up rhai manager
This commit is contained in:
parent
cf29c2c50d
commit
1226fafe2c
|
|
@ -1,10 +1,10 @@
|
|||
use actix::{Actor, Addr};
|
||||
use mlua::Lua;
|
||||
use rhai::{Engine, RegisterNativeFunction, Scope};
|
||||
|
||||
use crate::client_management::ClientManager;
|
||||
use crate::rhai::rhai_manager::RhaiManager;
|
||||
use crate::network::NetworkManager;
|
||||
use crate::rhai::rhai_manager::RhaiManager;
|
||||
use crate::Server;
|
||||
use rhai::{Engine, Scope};
|
||||
|
||||
pub struct Builder {
|
||||
engine: Engine,
|
||||
|
|
@ -25,34 +25,36 @@ impl Builder {
|
|||
server,
|
||||
network_manager,
|
||||
client_manager,
|
||||
scope: Default::default()
|
||||
scope: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn scope_object<T: 'static>(mut self, name: &str, obj: T) -> Self
|
||||
where
|
||||
T: Clone {
|
||||
where
|
||||
T: Clone,
|
||||
{
|
||||
self.engine.register_type::<T>();
|
||||
self.scope.set_value(name, obj);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn scope_fn<F, A>(mut self, name: &str, func: F ) -> Self
|
||||
where
|
||||
F: RegisterNativeFunction<A, ()>
|
||||
{
|
||||
self.engine.register_fn(name, func);
|
||||
self
|
||||
}
|
||||
|
||||
// not sure what this is for?
|
||||
// pub fn scope_fn<F, A>(mut self, name: &str, func: F) -> Self
|
||||
// where
|
||||
// F: RegisterNativeFunction<A, ()>,
|
||||
// {
|
||||
// self.engine.register_fn(name, func);
|
||||
// self
|
||||
// }
|
||||
|
||||
pub(crate) fn build(self) -> Addr<RhaiManager> {
|
||||
RhaiManager {
|
||||
engine: self.engine,
|
||||
scope: self.scope,
|
||||
server: self.server,
|
||||
network_manager: self.network_manager,
|
||||
client_manager: self.client_manager
|
||||
}.start()
|
||||
_scope: self.scope,
|
||||
_server: self.server,
|
||||
_network_manager: self.network_manager,
|
||||
_client_manager: self.client_manager,
|
||||
}
|
||||
.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,37 +1,44 @@
|
|||
use actix::{Actor, Addr, ArbiterHandle, AsyncContext, Context, Running};
|
||||
use actix::fut::wrap_future;
|
||||
use rhai::{Engine, Func, Scope};
|
||||
use crate::client_management::ClientManager;
|
||||
use crate::rhai::builder::Builder;
|
||||
use crate::network::NetworkManager;
|
||||
use crate::rhai::builder::Builder;
|
||||
use crate::Server;
|
||||
|
||||
use actix::{Actor, Addr, Context};
|
||||
use rhai::{Engine, Scope};
|
||||
|
||||
pub struct RhaiManager {
|
||||
pub(super) engine: Engine,
|
||||
pub(super) scope: Scope<'static>,
|
||||
pub(super) server: Addr<Server>,
|
||||
pub(super) network_manager: Addr<NetworkManager>,
|
||||
pub(super) client_manager: Addr<ClientManager>,
|
||||
pub(super) _scope: Scope<'static>,
|
||||
pub(super) _server: Addr<Server>,
|
||||
pub(super) _network_manager: Addr<NetworkManager>,
|
||||
pub(super) _client_manager: Addr<ClientManager>,
|
||||
}
|
||||
|
||||
impl RhaiManager {
|
||||
pub fn create(
|
||||
server: Addr<Server>,
|
||||
network_manager: Addr<NetworkManager>,
|
||||
client_manager: Addr<ClientManager>
|
||||
client_manager: Addr<ClientManager>,
|
||||
) -> Builder {
|
||||
Builder::new(server.clone(), network_manager.clone(), client_manager.clone())
|
||||
.scope_object("server", server)
|
||||
Builder::new(
|
||||
server.clone(),
|
||||
network_manager.clone(),
|
||||
client_manager.clone(),
|
||||
)
|
||||
.scope_object("server", server)
|
||||
}
|
||||
}
|
||||
|
||||
impl Actor for RhaiManager {
|
||||
type Context = Context<Self>;
|
||||
|
||||
fn started(&mut self, ctx: &mut Self::Context) {
|
||||
self.engine.run(r#"
|
||||
fn started(&mut self, _ctx: &mut Self::Context) {
|
||||
self.engine
|
||||
.run(
|
||||
r#"
|
||||
print("hello rhai")
|
||||
"#).unwrap();
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue