flags
Ein Satz von 'Schaltern', die sich entweder auf 'an' ('on') oder zurück auf
'aus'
('off') setzen lassen. Alle Flags werden per default zurückgesetzt. Flags können
in der Definition gesetzt werden und zur Laufzeit gesetzt, zurückgesetzt oder
gelesen werden.
Bemerkungen:
- Flags sind vordefinierte binäre Werte, die den flags-Parametern
des Objektes zugewiesen werden. Die Werte der Flags sind so gewählt,
daß sie durch OR-ing (d.h. Anbringen des OR-Operatoren wie in BRIGHT
| PASSABLE).
- In einer Objekt-Definition werden Flags gesetzt indem sie 'geodert'
(OR) und dem Flags-Parameter zugewiesen werden
(flags = BRIGHT | PASSABLE;). Beachten Sie, daß rechts und
links der Flag-Werte Leerschritte sein müssen.
- In C-Skript wird ein Flag zur Laufzeit gesetzt indem ihm der ON-
oder OFF-Wert zugewiesen wird (wie z.B. my.ZNEAR
= ON;).
- LC In C, C++,
oder Lite-C wird ein Flag zur Laufzeit gesetzt indem der flags-Parameter
mit dem Flag geodert wird (material.flags |= TANGENT;).
Der Flag wird zurückgesetzt indem der flags-Parameter mit dem umgekehrten
Flag 'geundet' (AND) wird (material.flags &= ~TANGENT;).
Und gelesen wird er indem der flags-Parameter mit dem Flag 'geundet'
und das Ergebnis mit Null verglichen wird.
- LC Entities
haben mehr als 32 Flags und brauchen daher verschiedene Flag-Parameter
in lite-C. Die anderen Parameter sind flags2, eflags, emask,
und smask. Der Parameter, dem ein Flag angehört, wird
in seinem Typfeld angegeben.
Beispiel (C-Script):
ENTITY* gun { ... flags = BRIGHT | PASSABLE; ... }
...
gun.ZNEAR = ON; // set the ZNEAR flag of the gun object
gun.ZNEAR = OFF; // reset the ZNEAR flag of the gun object
if (gun.ZNEAR == ON) { ... } // read the ZNEAR flag of the my object
Beispiel (lite-C):
ENTITY* gun { ... flags = BRIGHT | PASSABLE; ... }
...
gun.flags |= ZNEAR; // set the ZNEAR flag of the my object
gun.flags &= ~ZNEAR; // reset the ZNEAR flag of the my object
if (gun.flags & ZNEAR) { ... } // read the ZNEAR flag of the my object
LC Zur Vereinfachung
wurden in acknex.h einige Makros zum Setzen, Zurücksetzen,
Toggeln oder Testen von Flags. definiert:
#define set(obj,flag) obj.flags |= (flag)
#define reset(obj,flag) obj.flags &= ~(flag)
#define toggle(obj,flag) obj.flags ^= (flag)
#define is(obj,flag) (obj.flags & (flag))
...
set(my,ZNEAR);
reset(my,ZNEAR);
toggle(my,ZNEAR);
if is(my,ZNEAR) { ... }
LC In lite-C lassen sich
diverse Flags in einem einzigen Statement setzen und zurücksetzen.
mypanel.flags |= (SHOW | LIGHT | ZNEAR);
set(mypanel, SHOW | LIGHT | ZNEAR);
► Aktuelle Version Online