Skip to main content

unofficial_extras/
callbacks.rs

1//! Unofficial extras callback types.
2
3use crate::{
4    ExtrasAddonInfo, ExtrasSubscriberInfo, RawExtrasAddonInfo,
5    keybinds::{KeybindChange, RawKeybindChange},
6    language::Language,
7    message::{Message, MessageType, RawMessage, SquadMessage},
8    user::{UserInfo, UserInfoIter},
9    util::abi,
10};
11
12pub type ExtrasInitFunc = fn(extras_info: ExtrasAddonInfo, account_name: Option<&str>);
13
14pub type ExtrasSquadUpdateCallback = fn(updated_users: UserInfoIter);
15
16pub type ExtrasLanguageChangedCallback = fn(language: Language);
17
18pub type ExtrasKeybindChangedCallback = fn(changed: KeybindChange);
19
20pub type ExtrasSquadChatMessageCallback = fn(message: &SquadMessage);
21
22pub type ExtrasChatMessageCallback = fn(message: Message);
23
24abi! {
25    pub type RawExtrasSubscriberInit = unsafe extern fn(
26        extras_info: *const RawExtrasAddonInfo,
27        subscriber_info: *mut ExtrasSubscriberInfo,
28    );
29
30    pub type RawExtrasSquadUpdateCallback =
31        unsafe extern fn(updated_users: *const UserInfo, updated_users_count: u64);
32
33    pub type RawExtrasLanguageChangedCallback = unsafe extern fn(language: Language);
34
35    pub type RawExtrasKeybindChangedCallback = unsafe extern fn(changed: RawKeybindChange);
36
37    pub type RawExtrasSquadChatMessageCallback =
38        unsafe extern fn(message: *const SquadMessage);
39
40    pub type RawExtrasChatMessageCallback =
41        unsafe extern fn(message_type: MessageType, message: RawMessage);
42}