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}