arcdps\extras/
callbacks.rs

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