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