Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | Query() |
| 2 | ======= |
| 3 | |
| 4 | FUNKTION |
| 5 | -------- |
| 6 | :: |
| 7 | |
Zesstra | 5c0c409 | 2021-09-08 23:27:54 +0200 | [diff] [blame^] | 8 | public mixed Query(string name, int Type = F_VALUE); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 9 | |
| 10 | DEFINIERT IN |
| 11 | ------------ |
| 12 | :: |
| 13 | |
| 14 | /std/thing/properties.c |
| 15 | |
| 16 | ARGUMENTE |
| 17 | --------- |
| 18 | :: |
| 19 | |
| 20 | string name - Property, deren Wert(e) ausgelesen werden |
| 21 | int type - Art der gewuenschten Information. |
| 22 | |
| 23 | BESCHREIBUNG |
| 24 | ------------ |
| 25 | :: |
| 26 | |
| 27 | Der Wert einer der inneren Eigenschaften der Property 'name' wird |
| 28 | zurueckgegeben. 'Type' ist dabei einer der in /sys/thing/properties.h |
| 29 | und folgend aufgelisteten F_XXX-Werte: |
| 30 | |
| 31 | F_VALUE (==0, Default) |
| 32 | Unter Umgehung einer eventuell vorhandenen Abfragemethode oder |
| 33 | _query_'name'() wird der Datenwert der Property 'name' |
| 34 | zurueckgegeben. |
| 35 | F_MODE |
| 36 | Die internen Flags der Property werden zurueckgegeben.Dies koennen |
| 37 | (logisch mit & verknuepft) sein: |
| 38 | SAVE - Property soll bei save_object() gespeichert werden |
| 39 | PROTECTED - Objekt selbst/EM/Root kann Property manipulieren |
| 40 | SECURED - wie PROTECTED, das Flag kann aber nicht |
| 41 | zurueckgesetzt werden (immer SECURED) |
| 42 | NOSETMETHOD - niemand kann Property manipulieren |
| 43 | (auch kein F_SET_METHOD oder _set_'name'()) |
| 44 | F_SET_METHOD |
| 45 | Ein eventuell fuer die Property eingetragene F_SET_METHOD wird |
| 46 | zurueckgegeben. |
| 47 | (_set_'name'()-Methoden werden so nicht aufgefuehrt!) |
| 48 | F_QUERY_METHOD |
| 49 | Ein eventuell fuer die Property eingetragene F_QUERY_METHOD wird |
| 50 | zurueckgegeben. |
| 51 | (_query_'name'()-Methoden werden so nicht aufgefuehrt!) |
| 52 | |
| 53 | RUeCKGABEWERT |
| 54 | ------------- |
| 55 | :: |
| 56 | |
| 57 | Die gewuenschte Eigenschaft, abhaengig von 'Type'. |
| 58 | |
| 59 | BEMERKUNGEN |
| 60 | ----------- |
| 61 | :: |
| 62 | |
| 63 | - Query() sollte nicht zum regulaeren Auslesen des Inhalt einer |
| 64 | Property verwendet werden, da sowohl F_QUERY_METHOD als auch |
| 65 | libinterne _query_'name'()-Methoden umgangen werden und das Ergebnis |
| 66 | fuer so veraenderte Propertys undefiniert ist |
| 67 | - _set_'name'() und _query_'name'() sind alte Propertymethoden und |
| 68 | sollten nicht in normalen Objekten benutzt werden -> |
| 69 | F_SET_METHOD/F_QUERY_METHOD (ggf. mit PROTECTED) nutzen |
| 70 | - F_SET/F_QUERY_METHODs koennen 'protected' (empfohlen) oder 'static' |
| 71 | sein. _set_/_query_ duerfen momentan _nicht_ 'protected' sein, fuer |
| 72 | diese geht nur 'static' (in diesem Fall empfohlen). |
| 73 | |
| 74 | BEISPIELE |
| 75 | --------- |
| 76 | :: |
| 77 | |
| 78 | // Auslesen des Wertes unter Umgehung einer Abfragemethode |
| 79 | Query(P_XYZ, F_VALUE); |
| 80 | |
| 81 | // Auslesen der Flags erfaehrt man mit: |
| 82 | Query(P_XYZ, F_MODE); |
| 83 | |
| 84 | // sauberes Programmieren, wir wollen eine F_QUERY_METHOD setzen, |
| 85 | // pruefen vorher auf Existenz: |
| 86 | if(this_player()->Query(P_FROG, F_QUERY_METHOD) { |
| 87 | write(break_string( |
| 88 | "Ich kann dich nicht weiter vor Froschsein schuetzen!", |
| 89 | "Der Magier winkt ab: ", 78)); |
| 90 | say(break_string( |
| 91 | "Ich kann dich nicht weiter vor Froschsein schuetzen!", |
| 92 | "Der Magier sagt zu "+this_player()->name(WEM)+": ", 78)); |
| 93 | } else { |
| 94 | this_player()->Set(P_FROG, #'query_protect_frog, F_QUERY_METHOD); |
| 95 | ... |
| 96 | } |
| 97 | |
| 98 | SIEHE AUCH |
| 99 | ---------- |
| 100 | :: |
| 101 | |
| 102 | Aehnliches: SetProp(L), QueryProp(L), Set(L) |
| 103 | Generell: SetProperties(L), QueryProperties(L) |
| 104 | Konzept: properties, /std/thing/properties.c |
| 105 | Sonstiges: P_AUTOLOADOBJ |
| 106 | |
| 107 | 28.03.2008, Zesstra |
| 108 | |