blob: e87912944492c5b38974ac4d10eade08a053aa98 [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
42 (Rueckgabewert der Callback-Methode, siehe
43 *RegisterHelperObject()*) mindestens so gross sein wie der als
44 <strength> uebergebene Wert.
45
46 Ist <strength> eine Closure, wird diese fuer jeden Helfer
47 ausgewertet und entscheidet, ob der Helfer akzeptiert wird. Die
48 Closure bekommt hierbei das Helferobjekt, die vom Helfer angegebene
49 Staerke/Guete und etwaige hier als <extra> uebergebene Argument
50 uebergeben. Ist der Rueckgabewert von <strength> != 0, wird der
51 Helfer akzeptiert und von GetHelperObject zurueckgegeben (ohne
52 weitere Helfer zu pruefen).
53
54
55RUECKGABEWERT
56=============
57
58 Objekt welches den uebergebenen Anforderungen entspricht.
59
60
61BEISPIELE
62=========
63
64 // Es wird ein Helfer zum Tauchen mit der Staerke 4 gesucht
65 PL->GetHelperObject(HELPER_TYPE_AQUATIC, 4);
66
67 // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
68 // mindestens 60 cm gross und maximal 900 g schwer ist.
69 PL->GetHelperObject(HELPER_TYPE_AERIAL, function int (object h, int s)
70 { return s >= 4
71 && h->QueryProp(P_SIZE) >= 60 && h->QueryProp(P_WEIGHT) <= 900;
72 }
73 );
74
75 // Es wird ein Helfer zum Fliegen mit der Staerke 4 gesucht, welcher aber
76 // mindestens 60 cm gross und maximal 900 g schwer ist, aber diese Grenzen
77 // werden nicht in der Funktion festgelegt, sondern als <extra> uebergeben.
78 PL->GetHelperObject(HELPER_TYPE_AERIAL,
79 function int (object h, int s, int min_s, int minsize, int maxweight)
80 { return s >= min_s
81 && h->QueryProp(P_SIZE) >= minsize
82 && h->QueryProp(P_WEIGHT) <= maxweight;
83 },
84 4, 60, 900);
85
86
87SIEHE AUCH
88==========
89
90 *RegisterHelperObject()*, *UnregisterHelperObject()*,
91 *P_AERIAL_HELPERS*, *P_AQUATIC_HELPERS*, *P_HELPER_OBJECTS*
92
93Letzte Aenderung: 9.3.2018, Zesstra