Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AITalkRequest.c
Go to the documentation of this file.
2{
3 IDLE, // Waiting in queue or waiting for free channel
4 TRANSMITTING, // Currently transmitting
5 COMPLETED, // Was transmitted
6 FAILED // Failed to transmit
7}
8
9enum SCR_EAITalkRequestPreset
10{
11 IRRELEVANT_IMMEDIATE, // Small priority, tiny timeout. For almost irrelevant phrases, which become irrelevant in a second.
12 IRRELEVANT, // Small priority, small timeout. For almost irrelevant phrases.
13 MEDIUM, // Medium priority, medium timeout.
14 MANDATORY, // Highest priority, infinite timeout. For phrases related to orders and similar.
15 IMMEDIATE // Same as MANDATORY, but also ignores channel state
16}
17
18class SCR_AITalkRequest : Managed
19{
20 // Properties from SCR_AISoundHandlingParams
25
26 float m_fCreatedTimestamp_ms; // Time when it was added
27 float m_fTimeout_ms; // Request is discarded if we were not able to start saying this during this interval
28 int m_iPriority; // Priority of request, higher priority gets processed sooner
29 bool m_bTransmitIfChannelBusy; // If true, we will not care to wait for channel to be free and transmit over others
30 bool m_bTransmitIfNoReceivers; // If true, will transmit even if we know noone's listening
31 bool m_bTransmitIfPassenger; // If true, will transmit if inside vehicle as passenger (gunner is not affected)
32
33 SCR_EAITalkRequestState m_eState; // READ ONLY - CommsHandler sets this when it processes the request. This can be read to know the outcome of request.
34
35 //-------------------------------------------------------------------------------------
36 // Some parameters are initialized in constructor, others from InitFromPreset
37 void SCR_AITalkRequest(ECommunicationType type, IEntity entity, vector pos, int enumSignal, bool transmitIfNoReceivers, bool transmitIfPassenger, SCR_EAITalkRequestPreset preset)
38 {
39 m_fCreatedTimestamp_ms = GetGame().GetWorld().GetWorldTime();
40
42 m_Entity = entity;
43 m_vPosition = pos;
44 m_EnumSignal = enumSignal;
45 m_bTransmitIfNoReceivers = transmitIfNoReceivers;
46 m_bTransmitIfPassenger = transmitIfPassenger;
47
48 InitFromPreset(preset);
49 }
50
51 //-------------------------------------------------------------------------------------
53 void InitFromPreset(SCR_EAITalkRequestPreset preset)
54 {
55 int prio;
56 float timeout;
57 bool transmitIfBusy = false;
58 switch (preset)
59 {
60 case SCR_EAITalkRequestPreset.IRRELEVANT_IMMEDIATE:
61 {
62 prio = 5;
63 timeout = 500.0;
64 break;
65 }
66
67 case SCR_EAITalkRequestPreset.IRRELEVANT:
68 {
69 prio = 10;
70 timeout = 4000.0;
71 break;
72 }
73
74 case SCR_EAITalkRequestPreset.MEDIUM:
75 {
76 prio = 20;
77 timeout = 10000.0;
78 break;
79 }
80
81 case SCR_EAITalkRequestPreset.MANDATORY:
82 {
83 prio = 30;
84 timeout = float.MAX;
85 break;
86 }
87
88 case SCR_EAITalkRequestPreset.IMMEDIATE:
89 {
90 prio = 40;
91 timeout = float.MAX;
92 transmitIfBusy = true;
93 break;
94 }
95 }
96
97 m_iPriority = prio;
98 m_fTimeout_ms = timeout;
99 m_bTransmitIfChannelBusy = transmitIfBusy;
100 }
101
103 {
104 return string.Format("%1, prio: %2, timeout: %3, txIfBusy: %4, type: %5",
105 this,
109 typename.EnumToString(ECommunicationType, m_eCommType));
110 }
111}
ArmaReforgerScripted GetGame()
Definition game.c:1398
@ TRANSMITTING
SCR_AIGroupInfoComponentClass IDLE
Group has no waypoints and does not engage an enemy.
ECommunicationType
enum SCR_EAITalkRequestState MEDIUM
bool m_bTransmitIfNoReceivers
SCR_EAITalkRequestState
@ COMPLETED
@ FAILED
Job failed during its processing and can be retried.
float m_fTimeout_ms
enum SCR_EAITalkRequestState m_eCommType
bool m_bTransmitIfPassenger
bool m_bTransmitIfChannelBusy
void SCR_AITalkRequest(ECommunicationType type, IEntity entity, vector pos, int enumSignal, bool transmitIfNoReceivers, bool transmitIfPassenger, SCR_EAITalkRequestPreset preset)
enum SCR_EAITalkRequestState MANDATORY
int m_EnumSignal
vector m_vPosition
void InitFromPreset(SCR_EAITalkRequestPreset preset)
Initializes timeout, priority, transmitIfBusy according to preset.
int m_iPriority
enum SCR_EAITalkRequestState IRRELEVANT_IMMEDIATE
string GetDebugString()
float m_fCreatedTimestamp_ms
enum SCR_EAITalkRequestState IRRELEVANT
EAITargetClusterState m_eState
enum EAITargetInfoCategory m_Entity
EDamageType type
@ IMMEDIATE
Group applications don't need any approval, the user joins immediately.