blob: 6d0758b8dc8541f5c58ef328c9a61257ebcd556b [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001Configure()
2===========
3
4Configure()
5
6 public mixed Configure(mixed data)
7-------------------------------------------------
8::
9
10DEFINIERT IN
11------------
12::
13
14 Beliebigen Objekten
15
16ARGUMENTE
17---------
18::
19
20 <data>
21 0 fuer Datenabfrage
22 beliebige Daten, die ein Configure(0) vorher lieferte
23
24BESCHREIBUNG
25------------
26::
27
28 Viele Objekte werden fuer bestimmte Spieler konfiguriert und so
29 personalisiert. Sie enthalten zusaetzlich zu den Daten, welche waehrend des
30 create() gesetzt wurden, noch weitere spieler-individuelle Daten.
31 Damit diese Objekte im Bedarfsfall neu erstellt werden koennen, sollte ein
32 geeignetes Configure() definfiert werden, um diese Daten abzurufen und in
33 einem neuen Clone (oder neugeladener Blueprint) wieder zu setzen.
34
35
36
37 Existiert Configure() im Objekt, MUSS dieses bei einem Aufruf mit
38 <data>==0 (d.h. Configure(0)) alle individuellen Daten zurueckliefern,
39 die noetig sind, um den aktuellen Zustand des Objektes spaeter
40 wiederherzustellen.
41 Das Objekt darf nach dem Zurueckgeben dieser Daten diese NICHT mehr
42 veraendern, d.h. es muss ggf. eine Kopie erstellt werden (copy, deep_copy)
43
44 Genau diese Daten werden in einem neu geclonten Objekt durch den Aufruf
45 von Configure(data) wieder gesetzt. Das Configure MUSS genau die Daten, die
46 es im alten Objekt zurueckliefert, wieder akzeptieren.
47
48RUeCKGABEWERT
49-------------
50::
51
52 Wenn <data>==0:
53 Alle individuellen Daten in einer beliebigen Form. Ein Mapping bietet
54 sich jedoch an.
55 Nicht erlaubt sind: Objekte und Closures.
56
57 Wenn <data>!=0:
58 1, wenn die Daten zur Konfiguration akzeptiert wurden.
59 0, sonst.
60
61BEMERKUNGEN
62-----------
63::
64
65 Configure() ist nicht verpflichtet, erneut Daten zu akzeptieren, wenn es
66 bereits einmal mit gueltigen Daten aufgerufen wurde.
67 Das Zurueckschreiben der Daten kann auch nach Ablauf laengerer Zeit
68 und/oder in einer anderen Uptime erfolgen.
69
70BEISPIELE
71---------
72::
73
74 Ein Objekt, welches ein anderes Objekt sicher ersetzt, d.h. die
75 individuelle Konfiguration bleibt erhalten:
76 mixed data;
77 if (call_resolved(data,ob,"Configure",0) == 1) {
78 string obname = load_name(ob);
79 ob->remove();
80 ob = clone_object(obname);
81 if (data) {
82 if (ob->Configure(data) == 1) {
83 printf("Instanz von %s erfolgreich ersetzt, neues Objekt: %O\n",
84 obname,ob);
85 }
86 else {
87 raise_error(sprintf("Configure() in %O akzeptierte Daten nicht!\n",
88 ob));
89 }
90 }
91 }
92 else {
93 printf(break_string(
94 "Das Objekt %O definiert keine Funktion Configure(). Es kann "
95 "nicht sicher ersetzt werden, da unbekannt ist, ob es individuelle "
96 "Daten enthaelt.",78));
97 }
98
99LETZTE AeNDERUNG
100----------------
101::
102
10326.09.2011, Zesstra
104