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