Skip to main content

samp_sdk/omp/generated/
player_textlabel.rs

1//! `IPlayerTextLabel` — generated by `cargo xtask gen-omp` from `Server/Components/TextLabels/textlabels.hpp`.
2//! Implemented by `PlayerTextLabel` in the server's `TextLabels`.
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 `IPlayerTextLabel*`.
20    pub IPlayerTextLabel;
21}
22
23slots! {
24    /// `void ITextLabelBase::setText(StringView)`
25    SLOT_SET_TEXT: usize = 6, 5;
26    /// `StringView ITextLabelBase::getText()`
27    SLOT_GET_TEXT: usize = 7, 6;
28    /// `void ITextLabelBase::setColour(Colour)`
29    SLOT_SET_COLOUR: usize = 8, 7;
30    /// `Colour ITextLabelBase::getColour()`
31    SLOT_GET_COLOUR: usize = 9, 8;
32    /// `void ITextLabelBase::setDrawDistance(float)`
33    SLOT_SET_DRAW_DISTANCE: usize = 10, 9;
34    /// `float ITextLabelBase::getDrawDistance()`
35    SLOT_GET_DRAW_DISTANCE: usize = 11, 10;
36    /// `void ITextLabelBase::attachToPlayer(IPlayer &, Vector3)`
37    SLOT_ATTACH_TO_PLAYER: usize = 12, 11;
38    /// `void ITextLabelBase::attachToVehicle(IVehicle &, Vector3)`
39    SLOT_ATTACH_TO_VEHICLE: usize = 13, 12;
40    /// `const TextLabelAttachmentData & ITextLabelBase::getAttachmentData()`
41    SLOT_GET_ATTACHMENT_DATA: usize = 14, 13;
42    /// `void ITextLabelBase::detachFromPlayer(Vector3)`
43    SLOT_DETACH_FROM_PLAYER: usize = 15, 14;
44    /// `void ITextLabelBase::detachFromVehicle(Vector3)`
45    SLOT_DETACH_FROM_VEHICLE: usize = 16, 15;
46    /// `void ITextLabelBase::setTestLOS(bool)`
47    SLOT_SET_TEST_LOS: usize = 17, 16;
48    /// `bool ITextLabelBase::getTestLOS()`
49    SLOT_GET_TEST_LOS: usize = 18, 17;
50    /// `void ITextLabelBase::setColourAndText(Colour, StringView)`
51    SLOT_SET_COLOUR_AND_TEXT: usize = 19, 18;
52}
53
54virtual_fns! {
55    /// `void ITextLabelBase::setText(StringView)`.
56    ///
57    /// # Safety
58    /// `player_textlabel` must be a live `IPlayerTextLabel`.
59    pub fn player_textlabel_set_text(
60        player_textlabel: IPlayerTextLabel,
61        text: StringView,
62    ) = [0, SLOT_SET_TEXT];
63
64    /// `void ITextLabelBase::setColour(Colour)`.
65    ///
66    /// # Safety
67    /// `player_textlabel` must be a live `IPlayerTextLabel`.
68    pub fn player_textlabel_set_colour(
69        player_textlabel: IPlayerTextLabel,
70        colour: Colour,
71    ) = [0, SLOT_SET_COLOUR];
72
73    /// `void ITextLabelBase::setDrawDistance(float)`.
74    ///
75    /// # Safety
76    /// `player_textlabel` must be a live `IPlayerTextLabel`.
77    pub fn player_textlabel_set_draw_distance(
78        player_textlabel: IPlayerTextLabel,
79        dist: f32,
80    ) = [0, SLOT_SET_DRAW_DISTANCE];
81
82    /// `float ITextLabelBase::getDrawDistance()`.
83    ///
84    /// # Safety
85    /// `player_textlabel` must be a live `IPlayerTextLabel`.
86    #[must_use]
87    pub fn player_textlabel_draw_distance(
88        player_textlabel: IPlayerTextLabel,
89    ) -> f32 = [0, SLOT_GET_DRAW_DISTANCE] or 0.0;
90
91    /// `void ITextLabelBase::attachToPlayer(IPlayer &, Vector3)`.
92    ///
93    /// # Safety
94    /// `player_textlabel` must be a live `IPlayerTextLabel`.
95    pub fn player_textlabel_attach_to_player(
96        player_textlabel: IPlayerTextLabel,
97        player: *mut IPlayer,
98        offset: Vector3,
99    ) = [0, SLOT_ATTACH_TO_PLAYER];
100
101    /// `void ITextLabelBase::attachToVehicle(IVehicle &, Vector3)`.
102    ///
103    /// # Safety
104    /// `player_textlabel` must be a live `IPlayerTextLabel`.
105    pub fn player_textlabel_attach_to_vehicle(
106        player_textlabel: IPlayerTextLabel,
107        vehicle: *mut IVehicle,
108        offset: Vector3,
109    ) = [0, SLOT_ATTACH_TO_VEHICLE];
110
111    /// `const TextLabelAttachmentData & ITextLabelBase::getAttachmentData()`.
112    ///
113    /// # Safety
114    /// `player_textlabel` must be a live `IPlayerTextLabel`.
115    #[must_use]
116    pub fn player_textlabel_attachment_data(
117        player_textlabel: IPlayerTextLabel,
118    ) -> *const TextLabelAttachmentData = [0, SLOT_GET_ATTACHMENT_DATA] or std::ptr::null();
119
120    /// `void ITextLabelBase::detachFromPlayer(Vector3)`.
121    ///
122    /// # Safety
123    /// `player_textlabel` must be a live `IPlayerTextLabel`.
124    pub fn player_textlabel_detach_from_player(
125        player_textlabel: IPlayerTextLabel,
126        position: Vector3,
127    ) = [0, SLOT_DETACH_FROM_PLAYER];
128
129    /// `void ITextLabelBase::detachFromVehicle(Vector3)`.
130    ///
131    /// # Safety
132    /// `player_textlabel` must be a live `IPlayerTextLabel`.
133    pub fn player_textlabel_detach_from_vehicle(
134        player_textlabel: IPlayerTextLabel,
135        position: Vector3,
136    ) = [0, SLOT_DETACH_FROM_VEHICLE];
137
138    /// `void ITextLabelBase::setTestLOS(bool)`.
139    ///
140    /// # Safety
141    /// `player_textlabel` must be a live `IPlayerTextLabel`.
142    pub fn player_textlabel_set_test_los(
143        player_textlabel: IPlayerTextLabel,
144        status: bool,
145    ) = [0, SLOT_SET_TEST_LOS];
146
147    /// `bool ITextLabelBase::getTestLOS()`.
148    ///
149    /// # Safety
150    /// `player_textlabel` must be a live `IPlayerTextLabel`.
151    #[must_use]
152    pub fn player_textlabel_test_los(
153        player_textlabel: IPlayerTextLabel,
154    ) -> bool = [0, SLOT_GET_TEST_LOS] or false;
155
156    /// `void ITextLabelBase::setColourAndText(Colour, StringView)`.
157    ///
158    /// # Safety
159    /// `player_textlabel` must be a live `IPlayerTextLabel`.
160    pub fn player_textlabel_set_colour_and_text(
161        player_textlabel: IPlayerTextLabel,
162        colour: Colour,
163        text: StringView,
164    ) = [0, SLOT_SET_COLOUR_AND_TEXT];
165}
166
167/// `StringView ITextLabelBase::getText()`.
168///
169/// # Safety
170/// `player_textlabel` must be a live `IPlayerTextLabel`.
171#[must_use]
172pub unsafe fn player_textlabel_text(player_textlabel: *mut IPlayerTextLabel) -> Option<String> {
173    let view = call_vtable_small_struct!(
174        player_textlabel.cast::<u8>(),
175        0,
176        SLOT_GET_TEXT,
177        StringView,
178        StringView::EMPTY
179    )?;
180    unsafe { view.to_owned_string() }
181}
182
183/// `Colour ITextLabelBase::getColour()`.
184///
185/// # Safety
186/// `player_textlabel` must be a live `IPlayerTextLabel`.
187#[must_use]
188pub unsafe fn player_textlabel_colour(player_textlabel: *mut IPlayerTextLabel) -> Option<Colour> {
189    call_vtable_small_struct!(
190        player_textlabel.cast::<u8>(),
191        0,
192        SLOT_GET_COLOUR,
193        Colour,
194        Colour::default()
195    )
196}