Skip to main content

samp_sdk/omp/generated/
player_pickups.rs

1//! `IPlayerPickupData` — generated by `cargo xtask gen-omp` from `Server/Components/Pickups/pickups.hpp`.
2//! Implemented by `PlayerPickupData` in the server's `Pickups`.
3//!
4//! Do not edit: change `xtask/omp-wrappers.toml` or the generator and
5//! regenerate. Slots are clang's layout of the header for each ABI, checked
6//! against the official binaries by `cargo xtask check-abi --generated`.
7
8#![allow(unused_imports)]
9
10use crate::omp::containers::{FlatSet, HybridString, Pair, Span};
11use crate::omp::types::{
12    Colour, GTAQuat, Hours, Microseconds, Milliseconds, Minutes, Seconds, StringView, TimePoint,
13    UID, Vector2, Vector3, Vector4, WorldTimePoint,
14};
15use crate::omp::vtable::{call_vtable_small_struct, opaque, slots, virtual_fns};
16use crate::omp::*;
17
18opaque! {
19    /// Opaque handle for `IPlayerPickupData*`.
20    pub IPlayerPickupData;
21}
22
23/// `PickupData_UID` in `Server/Components/Pickups/pickups.hpp`.
24pub const PLAYER_PICKUPS_UID: UID = 0x98376f4428d7b70b;
25
26/// The player's `IPlayerPickupData`, or null when the component providing it is not loaded.
27///
28/// Found by walking the player's extension map for `PLAYER_PICKUPS_UID` — the
29/// virtual `getExtension` does not consult that map. `IExtension`
30/// is `IPlayerPickupData`'s first base, so the extension pointer is the interface pointer.
31///
32/// # Safety
33/// `player` must be a live `IPlayer`.
34#[must_use]
35pub unsafe fn player_pickups(player: *mut IPlayer) -> *mut IPlayerPickupData {
36    unsafe { extension(player.cast::<u8>(), PLAYER_PICKUPS_UID) }.cast::<IPlayerPickupData>()
37}
38
39slots! {
40    /// `int IPlayerPickupData::toLegacyID(int)`
41    SLOT_TO_LEGACY_ID: usize = 3, 3;
42    /// `int IPlayerPickupData::fromLegacyID(int)`
43    SLOT_FROM_LEGACY_ID: usize = 4, 4;
44    /// `void IPlayerPickupData::releaseLegacyID(int)`
45    SLOT_RELEASE_LEGACY_ID: usize = 5, 5;
46    /// `int IPlayerPickupData::reserveLegacyID()`
47    SLOT_RESERVE_LEGACY_ID: usize = 6, 6;
48    /// `void IPlayerPickupData::setLegacyID(int, int)`
49    SLOT_SET_LEGACY_ID: usize = 7, 7;
50    /// `int IPlayerPickupData::toClientID(int)`
51    SLOT_TO_CLIENT_ID: usize = 8, 8;
52    /// `int IPlayerPickupData::fromClientID(int)`
53    SLOT_FROM_CLIENT_ID: usize = 9, 9;
54    /// `void IPlayerPickupData::releaseClientID(int)`
55    SLOT_RELEASE_CLIENT_ID: usize = 10, 10;
56    /// `int IPlayerPickupData::reserveClientID()`
57    SLOT_RESERVE_CLIENT_ID: usize = 11, 11;
58    /// `void IPlayerPickupData::setClientID(int, int)`
59    SLOT_SET_CLIENT_ID: usize = 12, 12;
60}
61
62virtual_fns! {
63    /// `int IPlayerPickupData::toLegacyID(int)`.
64    ///
65    /// # Safety
66    /// `data` must be a live `IPlayerPickupData`.
67    #[must_use]
68    pub fn player_pickups_to_legacy_id(
69        data: IPlayerPickupData,
70        real: i32,
71    ) -> i32 = [0, SLOT_TO_LEGACY_ID] or 0;
72
73    /// `int IPlayerPickupData::fromLegacyID(int)`.
74    ///
75    /// # Safety
76    /// `data` must be a live `IPlayerPickupData`.
77    #[must_use]
78    pub fn player_pickups_from_legacy_id(
79        data: IPlayerPickupData,
80        legacy: i32,
81    ) -> i32 = [0, SLOT_FROM_LEGACY_ID] or 0;
82
83    /// `void IPlayerPickupData::releaseLegacyID(int)`.
84    ///
85    /// # Safety
86    /// `data` must be a live `IPlayerPickupData`.
87    pub fn player_pickups_release_legacy_id(
88        data: IPlayerPickupData,
89        legacy: i32,
90    ) = [0, SLOT_RELEASE_LEGACY_ID];
91
92    /// `int IPlayerPickupData::reserveLegacyID()`.
93    ///
94    /// # Safety
95    /// `data` must be a live `IPlayerPickupData`.
96    #[must_use]
97    pub fn player_pickups_reserve_legacy_id(
98        data: IPlayerPickupData,
99    ) -> i32 = [0, SLOT_RESERVE_LEGACY_ID] or 0;
100
101    /// `void IPlayerPickupData::setLegacyID(int, int)`.
102    ///
103    /// # Safety
104    /// `data` must be a live `IPlayerPickupData`.
105    pub fn player_pickups_set_legacy_id(
106        data: IPlayerPickupData,
107        legacy: i32,
108        real: i32,
109    ) = [0, SLOT_SET_LEGACY_ID];
110
111    /// `int IPlayerPickupData::toClientID(int)`.
112    ///
113    /// # Safety
114    /// `data` must be a live `IPlayerPickupData`.
115    #[must_use]
116    pub fn player_pickups_to_client_id(
117        data: IPlayerPickupData,
118        real: i32,
119    ) -> i32 = [0, SLOT_TO_CLIENT_ID] or 0;
120
121    /// `int IPlayerPickupData::fromClientID(int)`.
122    ///
123    /// # Safety
124    /// `data` must be a live `IPlayerPickupData`.
125    #[must_use]
126    pub fn player_pickups_from_client_id(
127        data: IPlayerPickupData,
128        legacy: i32,
129    ) -> i32 = [0, SLOT_FROM_CLIENT_ID] or 0;
130
131    /// `void IPlayerPickupData::releaseClientID(int)`.
132    ///
133    /// # Safety
134    /// `data` must be a live `IPlayerPickupData`.
135    pub fn player_pickups_release_client_id(
136        data: IPlayerPickupData,
137        legacy: i32,
138    ) = [0, SLOT_RELEASE_CLIENT_ID];
139
140    /// `int IPlayerPickupData::reserveClientID()`.
141    ///
142    /// # Safety
143    /// `data` must be a live `IPlayerPickupData`.
144    #[must_use]
145    pub fn player_pickups_reserve_client_id(
146        data: IPlayerPickupData,
147    ) -> i32 = [0, SLOT_RESERVE_CLIENT_ID] or 0;
148
149    /// `void IPlayerPickupData::setClientID(int, int)`.
150    ///
151    /// # Safety
152    /// `data` must be a live `IPlayerPickupData`.
153    pub fn player_pickups_set_client_id(
154        data: IPlayerPickupData,
155        legacy: i32,
156        real: i32,
157    ) = [0, SLOT_SET_CLIENT_ID];
158}