UFO: Alien Invasion
Loading...
Searching...
No Matches
ui_actions.h
Go to the documentation of this file.
1
4
5/*
6Copyright (C) 2002-2025 UFO: Alien Invasion.
7
8This program is free software; you can redistribute it and/or
9modify it under the terms of the GNU General Public License
10as published by the Free Software Foundation; either version 2
11of the License, or (at your option) any later version.
12
13This program is distributed in the hope that it will be useful,
14but WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
17See the GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License
20along with this program; if not, write to the Free Software
21Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#pragma once
26
27#include "../../common/common.h"
28
33typedef enum uiActionType_s {
35
38
39 /* masks */
40 EA_HIGHT_MASK = 0xFF00,
41
42 /* actions */
43 EA_ACTION = 0x0100,
57
58 /* boolean to boolean operators */
64
65 /* float to boolean operators */
73
74 /* float to float operators */
81
82 /* string operators */
86
87 /* unary operators */
92
93 /* terminal values (leafs) */
94 EA_VALUE = 0x0A00,
116
117
118
124typedef union uiTerminalActionData_s {
126 float number;
127 const char* constString;
128 void* data;
129 const void* constData;
131
144typedef struct uiAction_s {
149 short type;
150
154 short subType;
155
159 union {
164 struct {
165 struct uiAction_s* left;
166 struct uiAction_s* right;
167 } nonTerminal;
168
174 struct {
177 } terminal;
178 } d;
179
183 struct uiAction_s* next;
184} uiAction_t;
185
186/* prototype */
187struct uiNode_t;
188struct cvar_s;
189
194typedef struct uiValue_s {
196 union {
198 float number;
199 char* string;
200 struct cvar_s* cvar;
202 } value;
203} uiValue_t;
204
222
223void UI_ExecuteEventActions(uiNode_t* source, const uiAction_t* firstAction);
224void UI_ExecuteConFuncActions(uiNode_t* source, const uiAction_t* firstAction);
225void UI_ExecuteEventActionsEx (uiNode_t* source, const uiAction_t* firstAction, linkedList_t* params);
226bool UI_IsInjectedString(const char* string);
228const char* UI_GenInjectedString(const char* input, bool addNewLine, const uiCallContext_t* context);
229int UI_GetActionTokenType(const char* token, int group);
230uiValue_t* UI_GetVariable (const uiCallContext_t* context, int relativeVarId);
231
232void UI_PoolAllocAction(uiAction_t** action, int type, const void* data);
233uiAction_t* UI_AllocStaticCommandAction(const char* command);
234void UI_InitActions(void);
235void UI_AddListener(uiNode_t* node, const value_t* property, uiNode_t const* functionNode);
236void UI_RemoveListener(uiNode_t* node, const value_t* property, uiNode_t* functionNode);
237
238const char* UI_GetParam(const uiCallContext_t* context, int paramID);
239int UI_GetParamNumber(const uiCallContext_t* context);
definitions common between client and server, but not game lib
QGL_EXTERN GLsizei const GLvoid * data
Definition r_gl.h:89
QGL_EXTERN GLint GLenum type
Definition r_gl.h:94
QGL_EXTERN GLint GLenum GLboolean GLsizei const GLvoid * pointer
Definition r_gl.h:94
Atomic element to store UI scripts The parser use this atom to translate script action into many tree...
Definition ui_actions.h:144
short type
Define the type of the element, it can be a command, an operator, or a value.
Definition ui_actions.h:149
uiTerminalActionData_t d1
Definition ui_actions.h:175
struct uiAction_s * next
Next element in the action list.
Definition ui_actions.h:183
short subType
Some operators/commands/values can use it to store info about the content.
Definition ui_actions.h:154
uiTerminalActionData_t d2
Definition ui_actions.h:176
struct uiAction_s * right
Definition ui_actions.h:166
struct uiAction_s * left
Definition ui_actions.h:165
Contain the context of the calling of a function.
Definition ui_actions.h:208
linkedList_t * params
Definition ui_actions.h:215
uiNode_t * source
Definition ui_actions.h:210
uiNode_t * tagNode
Definition ui_actions.h:212
Atomic structure used to define most of the UI.
Definition ui_nodes.h:80
Type for uiAction_t It also contain type about type (for example EA_BINARYOPERATOR).
Definition ui_actions.h:194
float number
Definition ui_actions.h:198
char * string
Definition ui_actions.h:199
struct cvar_s * cvar
Definition ui_actions.h:200
uiActionType_t type
Definition ui_actions.h:195
uiNode_t * node
Definition ui_actions.h:201
void UI_ExecuteEventActionsEx(uiNode_t *source, const uiAction_t *firstAction, linkedList_t *params)
void UI_ExecuteEventActions(uiNode_t *source, const uiAction_t *firstAction)
const char * UI_GetParam(const uiCallContext_t *context, int paramID)
uiActionType_t
Type for uiAction_t It also contain type about type (for example EA_BINARYOPERATOR).
Definition ui_actions.h:33
@ EA_OPERATOR_LT
Definition ui_actions.h:71
@ EA_OPERATOR_FLOAT2FLOAT
Definition ui_actions.h:75
@ EA_CMD
Definition ui_actions.h:44
@ EA_OPERATOR_STR_NE
Definition ui_actions.h:85
@ EA_VALUE_PATHPROPERTY_WITHINJECTION
Definition ui_actions.h:104
@ EA_OPERATOR_XOR
Definition ui_actions.h:62
@ EA_VALUE_THIS
Definition ui_actions.h:111
@ EA_OPERATOR_BOOLEAN2BOOLEAN
Definition ui_actions.h:59
@ EA_VALUE_STRING
Definition ui_actions.h:95
@ EA_OPERATOR_DIV
Definition ui_actions.h:79
@ EA_OPERATOR_ADD
Definition ui_actions.h:76
@ EA_VALUE_PATHNODE
Definition ui_actions.h:101
@ EA_ELSE
Definition ui_actions.h:48
@ EA_VALUE_FLOAT
Definition ui_actions.h:97
@ EA_CALL
Definition ui_actions.h:45
@ EA_LISTENER
Definition ui_actions.h:52
@ EA_OPERATOR_GT
Definition ui_actions.h:70
@ EA_OPERATOR_PATHFROM
Definition ui_actions.h:90
@ EA_OPERATOR_GE
Definition ui_actions.h:69
@ EA_OPERATOR_FLOAT2BOOLEAN
Definition ui_actions.h:66
@ EA_VALUE_NODEPROPERTY
Definition ui_actions.h:105
@ EA_OPERATOR_OR
Definition ui_actions.h:61
@ EA_BINARYOPERATOR
Definition ui_actions.h:36
@ EA_OPERATOR_PATHPROPERTYFROM
Definition ui_actions.h:91
@ EA_OPERATOR_NOT
Definition ui_actions.h:63
@ EA_ASSIGN
Definition ui_actions.h:46
@ EA_ELIF
Definition ui_actions.h:49
@ EA_OPERATOR_SUB
Definition ui_actions.h:77
@ EA_OPERATOR_AND
Definition ui_actions.h:60
@ EA_VALUE_CVARNAME
Definition ui_actions.h:99
@ EA_DELETE
Definition ui_actions.h:51
@ EA_FORCHILDIN
Definition ui_actions.h:55
@ EA_VALUE_PARENT
Definition ui_actions.h:113
@ EA_POPVARS
Definition ui_actions.h:54
@ EA_HIGHT_MASK
Definition ui_actions.h:40
@ EA_OPERATOR_MOD
Definition ui_actions.h:80
@ EA_VALUE_PARAM
Definition ui_actions.h:109
@ EA_VALUE_RAW
Definition ui_actions.h:98
@ EA_OPERATOR_LE
Definition ui_actions.h:68
@ EA_OPERATOR_STRING2BOOLEAN
Definition ui_actions.h:83
@ EA_VALUE_PATHPROPERTY
Definition ui_actions.h:103
@ EA_OPERATOR_STR_EQ
Definition ui_actions.h:84
@ EA_OPERATOR_EXISTS
Definition ui_actions.h:89
@ EA_VALUE_CVARNAME_WITHINJECTION
Definition ui_actions.h:100
@ EA_VALUE_WINDOW
Definition ui_actions.h:112
@ EA_OPERATOR_UNARY
Definition ui_actions.h:88
@ EA_NULL
Definition ui_actions.h:34
@ EA_PUSHVARS
Definition ui_actions.h:53
@ EA_OPERATOR_MUL
Definition ui_actions.h:78
@ EA_VALUE_STRING_WITHINJECTION
Definition ui_actions.h:96
@ EA_VALUE_VAR
Definition ui_actions.h:106
@ EA_BREAK
Definition ui_actions.h:56
@ EA_VALUE_PARAMCOUNT
Definition ui_actions.h:110
@ EA_VALUE_CHILD
Definition ui_actions.h:114
@ EA_OPERATOR_NE
Definition ui_actions.h:72
@ EA_IF
Definition ui_actions.h:47
@ EA_WHILE
Definition ui_actions.h:50
@ EA_VALUE_NODE
Definition ui_actions.h:108
@ EA_VALUE
Definition ui_actions.h:94
@ EA_VALUE_CVAR
Definition ui_actions.h:107
@ EA_OPERATOR_EQ
Definition ui_actions.h:67
@ EA_ACTION
Definition ui_actions.h:43
@ EA_UNARYOPERATOR
Definition ui_actions.h:37
@ EA_VALUE_PATHNODE_WITHINJECTION
Definition ui_actions.h:102
void UI_InitActions(void)
int UI_GetActionTokenType(const char *token, int group)
return an action type from a token, and a group
void UI_PoolAllocAction(uiAction_t **action, int type, const void *data)
Set a new action to a uiAction_t pointer.
void UI_RemoveListener(uiNode_t *node, const value_t *property, uiNode_t *functionNode)
Remove a function callback from a node event. There can be more than on listener.
uiAction_t * UI_AllocStaticCommandAction(const char *command)
Allocate and initialize a command action.
void UI_AddListener(uiNode_t *node, const value_t *property, uiNode_t const *functionNode)
Add a callback of a function into a node event. There can be more than on listener.
bool UI_IsInjectedString(const char *string)
Test if a string use an injection syntax.
uiValue_t * UI_GetVariable(const uiCallContext_t *context, int relativeVarId)
Return a variable from the context.
void UI_ExecuteConFuncActions(uiNode_t *source, const uiAction_t *firstAction)
allow to inject command param into cmd of confunc command
int UI_GetParamNumber(const uiCallContext_t *context)
void UI_FreeStringProperty(void *pointer)
Free a string property if it is allocated into ui_dynStringPool.
const char * UI_GenInjectedString(const char *input, bool addNewLine, const uiCallContext_t *context)
Replace injection identifiers (e.g. <eventParam>) by a value.
Defines the data of a uiAction_t leaf. It allows different kind of data without cast.
Definition ui_actions.h:124
const char * constString
Definition ui_actions.h:127
const void * constData
Definition ui_actions.h:129