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