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