removed scripting code
This commit is contained in:
parent
4ecf65096e
commit
603c6f7194
|
|
@ -1,32 +0,0 @@
|
|||
use actix::{Addr, WeakAddr};
|
||||
|
||||
use crate::{
|
||||
client_management::ClientManager,
|
||||
lua::lua_manager::LuaManager,
|
||||
network::NetworkManager,
|
||||
Server,
|
||||
};
|
||||
|
||||
pub struct Builder {
|
||||
pub(super) server: WeakAddr<Server>,
|
||||
pub(super) network_manager: WeakAddr<NetworkManager>,
|
||||
pub(super) client_manager: WeakAddr<ClientManager>,
|
||||
}
|
||||
|
||||
impl Builder {
|
||||
pub(super) fn new(
|
||||
server: WeakAddr<Server>,
|
||||
network_manager: WeakAddr<NetworkManager>,
|
||||
client_manager: WeakAddr<ClientManager>,
|
||||
) -> Self {
|
||||
Builder {
|
||||
server,
|
||||
network_manager,
|
||||
client_manager,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn build(self) -> Addr<LuaManager> {
|
||||
Addr::from(self)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
//! # lua_manager.rs
|
||||
//!
|
||||
//! Holds the LuaManger struct and implements it's methods
|
||||
|
||||
use actix::{fut::wrap_future, Actor, Addr, AsyncContext, Context, WeakAddr};
|
||||
use mlua::{Lua, Thread};
|
||||
|
||||
use crate::{
|
||||
client_management::ClientManager,
|
||||
lua::builder::Builder,
|
||||
network::NetworkManager,
|
||||
scripting::scriptable_server::ScriptableServer,
|
||||
Server,
|
||||
};
|
||||
|
||||
/// # LuaManager
|
||||
/// Holds common server objects
|
||||
/// todo: change to weak references
|
||||
pub struct LuaManager {
|
||||
pub(super) server: WeakAddr<Server>,
|
||||
pub(super) _network_manager: WeakAddr<NetworkManager>,
|
||||
pub(super) _client_manager: WeakAddr<ClientManager>,
|
||||
}
|
||||
|
||||
impl LuaManager {
|
||||
pub fn create(
|
||||
server: WeakAddr<Server>,
|
||||
network_manager: WeakAddr<NetworkManager>,
|
||||
client_manager: WeakAddr<ClientManager>,
|
||||
) -> Builder {
|
||||
Builder::new(server, network_manager, client_manager)
|
||||
}
|
||||
|
||||
fn create_lua(&self) -> Lua {
|
||||
let engine = Lua::new();
|
||||
let server = ScriptableServer::from(self.server.clone());
|
||||
|
||||
let api = engine.create_table().unwrap();
|
||||
api.set::<&str, ScriptableServer>("server", server).unwrap();
|
||||
|
||||
engine.globals().set("chat", api).unwrap();
|
||||
engine
|
||||
}
|
||||
}
|
||||
|
||||
impl Actor for LuaManager {
|
||||
type Context = Context<Self>;
|
||||
|
||||
fn started(&mut self, ctx: &mut Self::Context) {
|
||||
let engine = self.create_lua();
|
||||
|
||||
ctx.spawn(wrap_future(async move {
|
||||
let coroutine: Thread = engine
|
||||
.load(
|
||||
r#"
|
||||
coroutine.create(function ()
|
||||
print("hello lua")
|
||||
print(chat.server:name())
|
||||
end)
|
||||
"#,
|
||||
)
|
||||
.eval()
|
||||
.unwrap();
|
||||
let coroutine = coroutine.into_async::<(), ()>(());
|
||||
coroutine.await.expect("TODO: panic message");
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// by implementing it for the addr type,
|
||||
// we enforce the actor model on the consumer of the api.
|
||||
impl From<Builder> for Addr<LuaManager> {
|
||||
fn from(b: Builder) -> Addr<LuaManager> {
|
||||
LuaManager {
|
||||
server: b.server,
|
||||
_network_manager: b.network_manager,
|
||||
_client_manager: b.client_manager,
|
||||
}
|
||||
.start()
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
mod builder;
|
||||
mod lua_manager;
|
||||
|
||||
pub use lua_manager::LuaManager;
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
use actix::{Actor, Addr, WeakAddr};
|
||||
use rhai::{Engine, Scope};
|
||||
|
||||
use crate::{
|
||||
client_management::ClientManager,
|
||||
network::NetworkManager,
|
||||
rhai::rhai_manager::RhaiManager,
|
||||
Server,
|
||||
};
|
||||
|
||||
pub struct Builder {
|
||||
engine: Engine,
|
||||
server: WeakAddr<Server>,
|
||||
network_manager: WeakAddr<NetworkManager>,
|
||||
client_manager: WeakAddr<ClientManager>,
|
||||
scope: Scope<'static>,
|
||||
}
|
||||
|
||||
impl Builder {
|
||||
pub(super) fn new(
|
||||
server: WeakAddr<Server>,
|
||||
network_manager: WeakAddr<NetworkManager>,
|
||||
client_manager: WeakAddr<ClientManager>,
|
||||
) -> Self {
|
||||
Builder {
|
||||
engine: Engine::new(),
|
||||
server,
|
||||
network_manager,
|
||||
client_manager,
|
||||
scope: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn scope_object<T: 'static>(mut self, name: &str, obj: T) -> Self
|
||||
where
|
||||
T: Clone,
|
||||
{
|
||||
self.engine.register_type::<T>();
|
||||
self.scope.set_value(name, obj);
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
mod builder;
|
||||
mod rhai_manager;
|
||||
|
||||
pub use rhai_manager::RhaiManager;
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
use actix::{Actor, Context, WeakAddr};
|
||||
use rhai::{Engine, Scope};
|
||||
|
||||
use crate::{
|
||||
client_management::ClientManager,
|
||||
network::NetworkManager,
|
||||
rhai::builder::Builder,
|
||||
Server,
|
||||
};
|
||||
|
||||
pub struct RhaiManager {
|
||||
pub(super) engine: Engine,
|
||||
pub(super) _scope: Scope<'static>,
|
||||
pub(super) _server: WeakAddr<Server>,
|
||||
pub(super) _network_manager: WeakAddr<NetworkManager>,
|
||||
pub(super) _client_manager: WeakAddr<ClientManager>,
|
||||
}
|
||||
|
||||
impl RhaiManager {
|
||||
pub fn create(
|
||||
server: WeakAddr<Server>,
|
||||
network_manager: WeakAddr<NetworkManager>,
|
||||
client_manager: WeakAddr<ClientManager>,
|
||||
) -> Builder {
|
||||
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#"
|
||||
print("hello rhai")
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue