Add basic extension architecture
This commit is contained in:
parent
d98e56d413
commit
7ab11f7f54
@ -123,7 +123,7 @@ struct RhaiPlayer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, CustomType)]
|
#[derive(Debug, Clone, CustomType)]
|
||||||
#[rhai_type(name = "PlayersWrapper")]
|
#[rhai_type(name = "PlayersWrapper", extra=Self::build_extra)]
|
||||||
pub struct PlayersWrapper(Arc<Mutex<[Player; 255]>>);
|
pub struct PlayersWrapper(Arc<Mutex<[Player; 255]>>);
|
||||||
|
|
||||||
impl PlayersWrapper {
|
impl PlayersWrapper {
|
||||||
@ -131,15 +131,19 @@ impl PlayersWrapper {
|
|||||||
Self(players)
|
Self(players)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn send_message(&self, player: RhaiPlayer, message: String) -> Result<(), Box<EvalAltResult>> {
|
fn send_message(self, player: u8, message: String) -> Result<(), Box<EvalAltResult>> {
|
||||||
let mut players = self.0.lock().unwrap();
|
let mut players = self.0.lock().unwrap();
|
||||||
|
|
||||||
players[player.id as usize]
|
players[player as usize]
|
||||||
.outgoing_data
|
.outgoing_data
|
||||||
.extend_from_slice(&send_chat_message(255, "".to_string(), message));
|
.extend_from_slice(&send_chat_message(255, "".to_string(), message));
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn build_extra(builder: &mut TypeBuilder<Self>) {
|
||||||
|
builder.with_fn("send_message", Self::send_message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, CustomType)]
|
#[derive(Debug, Clone, CustomType)]
|
||||||
@ -169,6 +173,7 @@ impl Context {
|
|||||||
|
|
||||||
fn build_extra(builder: &mut TypeBuilder<Self>) {
|
fn build_extra(builder: &mut TypeBuilder<Self>) {
|
||||||
builder.with_fn("Context", Self::new);
|
builder.with_fn("Context", Self::new);
|
||||||
|
builder.with_fn("players", Self::players);
|
||||||
builder.with_fn("register_command", Self::register_command);
|
builder.with_fn("register_command", Self::register_command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ fn metadata() {
|
|||||||
fn init(players) {
|
fn init(players) {
|
||||||
let ctx = Context(players);
|
let ctx = Context(players);
|
||||||
ctx.register_command("jimmy", |player| {
|
ctx.register_command("jimmy", |player| {
|
||||||
players.send_message("He's dead")
|
players.send_message(player, "He's dead")
|
||||||
});
|
});
|
||||||
ctx
|
ctx
|
||||||
}
|
}
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
fn metadata() {
|
|
||||||
Metadata("ping pong", Version("1.0.0"))
|
|
||||||
}
|
|
||||||
|
|
||||||
fn init() {
|
|
||||||
let ctx = Context();
|
|
||||||
ctx.register_command("ping", |player| player.sendMessage("Pong! (you smell)"));
|
|
||||||
ctx.register_command("test", |player| player.sendMessage("test"));
|
|
||||||
ctx
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user