Entwurf eines Proxy-Objekts fuer vItems

Ein Proxyobjekt wird benutzt, wenn es fuer ein vItem
kein reales Objekt gibt. In diesem Fall wird das
vItem-Proxy geclont und entsprechend der Angaben aus
AddVItem() konfiguriert. Anschliessend ist es dann
das zum vItem passende Objekt.

Change-Id: I07dcfaf62a93b55bfd526bfe82c3cb65d78bafd0
diff --git a/obj/vitem_proxy.c b/obj/vitem_proxy.c
new file mode 100644
index 0000000..87e0e0d
--- /dev/null
+++ b/obj/vitem_proxy.c
@@ -0,0 +1,36 @@
+#pragma strong_types,rtt_checks
+
+inherit "/std/container";
+#include <moving.h>
+
+protected void create()
+{
+  ::create();
+  // Das Objekt raeumt sich selber im reset auf. (D.h. kein Env-Check)
+  SetAutoObject(1);
+}
+
+// Dieses Objekt raeumt sich immer im ersten reset auf - es ist kurzlebig und
+// transient und Aenderungen an seinen Daten bleiben nicht erhalten.
+void reset()
+{
+  remove(1);
+}
+
+public varargs void init(object origin)
+{
+  // leer ueberschreiben. Das klingt abstrus, hat aber folgenden Hintergrund:
+  // dieses Objekt ist nicht dazu gedacht, in irgendeine Umgebung zu gelangen.
+  // Und selbst wenn das jemand mit M_NOCHECK tut, soll die Interaktion dieses
+  // Objekts mit anderen minimiert werden. Also keine Anmeldung von actions
+  // etc.
+}
+
+// Auch dies ist ungewoehnlich: Bewegung nie erlauben, daher eruebrigt sich
+// der Aufruf des geerbten PreventMove(). Auch wird M_NOCHECK nicht
+// beruecksichtigt... Don't do this anywhere else.
+protected int PreventMove(object dest, object oldenv, int method)
+{
+  return ME_NOT_ALLOWED;
+}
+