merge develop into master #20

Merged
michael-bailey merged 181 commits from develop into master 2023-12-01 21:48:28 +00:00
2 changed files with 21 additions and 24 deletions
Showing only changes of commit cf29c2c50d - Show all commits

View File

@ -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)
}
}
}

View File

@ -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()
}
}