Skip to main content

nil_core/world/
chat.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use crate::chat::{Chat, ChatMessage, ChatMessageId, ChatMessageKind};
5use crate::error::Result;
6use crate::player::PlayerId;
7use crate::world::World;
8
9impl World {
10  #[inline]
11  pub fn chat(&self) -> &Chat {
12    &self.chat
13  }
14
15  pub fn push_chat_message(&mut self, author: PlayerId, message: &str) -> Result<ChatMessageId> {
16    let message = ChatMessage::builder(message)
17      .author(author)
18      .kind(ChatMessageKind::Default)
19      .build();
20
21    let id = message.id();
22    self.chat.push(message.clone());
23    self.emit_chat_updated(message)?;
24
25    Ok(id)
26  }
27}