Add basic extension architecture
This commit is contained in:
parent
d98e56d413
commit
7ab11f7f54
@ -123,7 +123,7 @@ struct RhaiPlayer {
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, CustomType)]
|
||||
#[rhai_type(name = "PlayersWrapper")]
|
||||
#[rhai_type(name = "PlayersWrapper", extra=Self::build_extra)]
|
||||
pub struct PlayersWrapper(Arc<Mutex<[Player; 255]>>);
|
||||
|
||||
impl PlayersWrapper {
|
||||
@ -131,15 +131,19 @@ impl PlayersWrapper {
|
||||
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();
|
||||
|
||||
players[player.id as usize]
|
||||
players[player as usize]
|
||||
.outgoing_data
|
||||
.extend_from_slice(&send_chat_message(255, "".to_string(), message));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn build_extra(builder: &mut TypeBuilder<Self>) {
|
||||
builder.with_fn("send_message", Self::send_message);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, CustomType)]
|
||||
@ -169,6 +173,7 @@ impl Context {
|
||||
|
||||
fn build_extra(builder: &mut TypeBuilder<Self>) {
|
||||
builder.with_fn("Context", Self::new);
|
||||
builder.with_fn("players", Self::players);
|
||||
builder.with_fn("register_command", Self::register_command);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ fn metadata() {
|
||||
fn init(players) {
|
||||
let ctx = Context(players);
|
||||
ctx.register_command("jimmy", |player| {
|
||||
players.send_message("He's dead")
|
||||
players.send_message(player, "He's dead")
|
||||
});
|
||||
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