blob: 87b1b8af3796e560d70834d098d706614f6cb795 [file] [log] [blame]
Zesstrabfab6ac2018-08-29 22:36:57 +02001
2GetHelperObject()
3*****************
4
5
6FUNKTION
7========
8
9 public varargs object GetHelperObject(int type, int|closure
10 strength
11 varargs mixed* extra)
12
13
14DEFINIERT IN
15============
16
17 /std/living/helpers.c
18
19
20ARGUMENTE
21=========
22
23 type:
24 Eine der in helpers.h definierten Konstanten
25
26 strength:
27 minimal geforderte Staerke des Helfers oder Closure zum Filtern
28 der Helferobjekte.
29
30 extra:
31 Beliebige und beliebig viele Argumente, welche an die Closure
32 <strength> weitergegeben werden.
33
34
35BESCHREIBUNG
36============
37
38 Gibt das zuerst gefundene als Helfer registrierte Objekt zurueck,
39 welches die Anforderungen erfuellt.
40
41 Ist <strength> ein int, muss die Staerke/Guete des Helfers
Zesstra6cadc1b2018-11-15 22:27:32 +010042 (Rueckgabewert der Callback-Methode, siehe RegisterHelperObject())
43 mindestens so gross sein wie der als <strength> uebergebene Wert.
Zesstrabfab6ac2018-08-29 22:36:57 +020044
45 Ist <strength> eine Closure, wird diese fuer jeden Helfer
46 ausgewertet und entscheidet, ob der Helfer akzeptiert wird. Die
47 Closure bekommt hierbei das Helferobjekt, die vom Helfer angegebene
48 Staerke/Guete und etwaige hier als <extra> uebergebene Argument
49 uebergeben. Ist der Rueckgabewert von <strength> != 0, wird der
50 Helfer akzeptiert und von GetHelperObject zurueckgegeben (ohne
51 weitere Helfer zu pruefen).
52
53
54RUECKGABEWERT
55=============
56
57 Objekt welches den uebergebenen Anforderungen entspricht.
58
59
60BEISPIELE
61=========
62
63 // Es wird ein Helfer zum Tauchen mit der Staerke 4 gesucht
64 PL->GetHelperObject(HELPER_TYPE_AQUATIC, 4);
65
66 // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
67 // mindestens 60 cm gross und maximal 900 g schwer ist.
68 PL->GetHelperObject(HELPER_TYPE_AERIAL, function int (object h, int s)
69 { return s >= 4
70 && h->QueryProp(P_SIZE) >= 60 && h->QueryProp(P_WEIGHT) <= 900;
71 }
72 );
73
74 // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
75 // mindestens 60 cm gross und maximal 900 g schwer ist, aber diese Grenzen
76 // werden nicht in der Funktion festgelegt, sondern als <extra> uebergeben.
77 PL->GetHelperObject(HELPER_TYPE_AERIAL,
78 function int (object h, int s, int min_s, int minsize, int maxweight)
79 { return s >= min_s
80 && h->QueryProp(P_SIZE) >= minsize
81 && h->QueryProp(P_WEIGHT) <= maxweight;
82 },
83 4, 60, 900);
84
85
86SIEHE AUCH
87==========
88
Zesstra6cadc1b2018-11-15 22:27:32 +010089 RegisterHelperObject(), UnregisterHelperObject(), P_AERIAL_HELPERS,
90 P_AQUATIC_HELPERS, P_HELPER_OBJECTS
Zesstrabfab6ac2018-08-29 22:36:57 +020091
92Letzte Aenderung: 9.3.2018, Zesstra