cleaned up lua manager
This commit is contained in:
parent
7c445e4ed3
commit
cf29c2c50d
|
|
@ -1,13 +1,10 @@
|
|||
use actix::{Actor, Addr};
|
||||
use mlua::Lua;
|
||||
use rhai::{Engine, RegisterNativeFunction, Scope};
|
||||
use crate::client_management::ClientManager;
|
||||
use crate::lua::lua_manager::LuaManager;
|
||||
use crate::network::NetworkManager;
|
||||
use crate::Server;
|
||||
use actix::Addr;
|
||||
|
||||
pub struct Builder {
|
||||
pub(crate) engine: Lua,
|
||||
pub(super) server: Addr<Server>,
|
||||
pub(super) network_manager: Addr<NetworkManager>,
|
||||
pub(super) client_manager: Addr<ClientManager>,
|
||||
|
|
@ -20,7 +17,6 @@ impl Builder {
|
|||
client_manager: Addr<ClientManager>,
|
||||
) -> Self {
|
||||
Builder {
|
||||
engine: Lua::new(),
|
||||
server,
|
||||
network_manager,
|
||||
client_manager,
|
||||
|
|
@ -30,4 +26,4 @@ impl Builder {
|
|||
pub(crate) fn build(self) -> Addr<LuaManager> {
|
||||
Addr::from(self)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,36 +2,31 @@
|
|||
//!
|
||||
//! Holds the LuaManger struct and implements it's methods
|
||||
|
||||
use actix::{Actor, Addr, ArbiterHandle, AsyncContext, Context, Running};
|
||||
use actix::fut::wrap_future;
|
||||
use mlua::{Lua, Thread, ThreadStatus};
|
||||
use rhai::{Engine, Func, Scope};
|
||||
use crate::client_management::ClientManager;
|
||||
use crate::lua::builder::Builder;
|
||||
use crate::network::NetworkManager;
|
||||
use crate::scripting::scriptable_server::ScriptableServer;
|
||||
use crate::Server;
|
||||
use actix::fut::wrap_future;
|
||||
use actix::{Actor, Addr, AsyncContext, Context};
|
||||
use mlua::{Lua, Thread};
|
||||
|
||||
/// # LuaManager
|
||||
/// Holds common server objects
|
||||
/// todo: change to weak references
|
||||
pub struct LuaManager {
|
||||
pub(super) server: Addr<Server>,
|
||||
pub(super) network_manager: Addr<NetworkManager>,
|
||||
pub(super) client_manager: Addr<ClientManager>,
|
||||
pub(super) _network_manager: Addr<NetworkManager>,
|
||||
pub(super) _client_manager: Addr<ClientManager>,
|
||||
}
|
||||
|
||||
impl LuaManager {
|
||||
pub fn create(
|
||||
server: Addr<Server>,
|
||||
network_manager: Addr<NetworkManager>,
|
||||
client_manager: Addr<ClientManager>
|
||||
client_manager: Addr<ClientManager>,
|
||||
) -> Builder {
|
||||
Builder::new(
|
||||
server,
|
||||
network_manager,
|
||||
client_manager
|
||||
)
|
||||
Builder::new(server, network_manager, client_manager)
|
||||
}
|
||||
|
||||
fn create_lua(&self) -> Lua {
|
||||
|
|
@ -53,13 +48,18 @@ impl Actor for LuaManager {
|
|||
let engine = self.create_lua();
|
||||
|
||||
ctx.spawn(wrap_future(async move {
|
||||
let coroutine: Thread = engine.load(r#"
|
||||
let coroutine: Thread = engine
|
||||
.load(
|
||||
r#"
|
||||
coroutine.create(function ()
|
||||
print("hello lua")
|
||||
print(chat.server:name())
|
||||
end)
|
||||
"#).eval().unwrap();
|
||||
let coroutine = coroutine.into_async::<(),()>(());
|
||||
"#,
|
||||
)
|
||||
.eval()
|
||||
.unwrap();
|
||||
let coroutine = coroutine.into_async::<(), ()>(());
|
||||
coroutine.await.expect("TODO: panic message");
|
||||
}));
|
||||
}
|
||||
|
|
@ -71,8 +71,9 @@ 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()
|
||||
_network_manager: b.network_manager,
|
||||
_client_manager: b.client_manager,
|
||||
}
|
||||
.start()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue