removed scripting code

This commit is contained in:
michael-bailey 2024-04-18 12:47:05 +01:00
parent 4ecf65096e
commit 603c6f7194
6 changed files with 0 additions and 230 deletions

View File

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

View File

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

View File

@ -1,4 +0,0 @@
mod builder;
mod lua_manager;
pub use lua_manager::LuaManager;

View File

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

View File

@ -1,4 +0,0 @@
mod builder;
mod rhai_manager;
pub use rhai_manager::RhaiManager;

View File

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