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