Dokumentation zu: behaelter(STD)

HR Image


STANDARDOBJECT FUER EINEN BEHAELTER

      erstellt am 08.11.1996 von Gum


BENUTZUNG
      inherit "std/behaelter";

      #include <properties.h>


BESCHREIBUNG
      Basisklasse fuer alle Behaelter im Spiel. Sie ist von
      /std/container abgeleitet und beinhaltet Zusatzfunktionen
      fuer das Oeffnen und Schliessen


PROPERTIES
      P_CNT_STATUS      Zustand des Containers, kann einer der unten
                        aufgefuehrten Werten sein
      P_CNT_KEY         Id eines Schluessels, mit dem der Container vom
                        abgeschlossenen Zustand (P_STATUS_LOCKED) in den
                        geoeffneten Zustand (P_CNT_STATUS_OPEN) gebracht
                        werden kann
      P_CNT_KEY_CLOSE   Id eines Schluessels, mit dem der Container vom
                        geoeffneten (P_STATUS_OPEN) oder vom geschlossenen
                        Zustand (P_STATUS_CLOSED) in den abgeschlossenen
                        Zustand (P_STATUS_LOCKED) gebracht werden kann
      P_CNT_FLAGS       Zahlenwert, der das allgemeine Verhalten und das
                        Verhalten des Behaelters bei Reset definiert; er
                        kann sich aus einer sinnvollen Summe der unten
                        aufgefuehrten Werte zusammensetzen (einer der drei
                        Werte 1, 2 oder 4 kann mit 8 kombiniert werden)

WERTE FUER P_CNT_STATUS
      CNT_STATUS_OPEN   Behaelter ist geoeffnet
      CNT_STATUS_CLOSED Behaelter ist geschlossen
      CNT_STATUS_LOCKED Behaelter ist abgeschlossen

WERTE FUER P_CNT_FLAG
      CNT_RESET_OPEN    Behaelter wird bei Reset geoeffnet
      CNT_RESET_CLOSED  Behaelter wird bei Reset geschlossen
      CNT_RESET_LOCKED  Behaelter wird bei Reset abgeschlossen
      CNT_ONLY_LOCK     Behaelter kann vom offenen Zustand nur in den
                        abgeschlossenen Zustand uebergehen, das heisst,
                        er kann nicht den Zustand geschlossen annehmen;
                        beim Schliessen wird automatisch P_STATUS_LOCKED
                        gesetzt, das Oeffnen ist danach nur mit einem
                        Schluessel (P_CNT_KEY muss gesetzt sein) moeglich

FUNKTIONEN
      Im Behaelter sind folgende Funktionen definiert, die ueber die
      Funktionalitaet des normalen Containers hinausgehen:

      int IsOpen();
          liefert einen Wert ungleich 0, wenn der Behaelter geoeffnet ist,
          liefert 0, wenn der Behaelter geschlossen oder abgeschlossen ist

      int IsClosed();
          liefert einen Wert ungleich 0, wenn der Behaelter geschlossen ist,
          liefert 0, wenn der Behaelter geoeffnet ist und auch, wenn er
          abgeschlossen ist!

      int IsLocked();
          liefert einen Wert ungleich 0, wenn der Behaelter abgeschlossen ist,
          liefert 0, wenn der Behaelter geoeffnet oder geschlossen ist

      int CanOnlyLock();
          liefert einen Wert ungleich 0, wenn der Behaelter das Flag
          CNT_ONLY_LOCK gesetzt hat, sonst 0

      Die folgenden Funktionen koennen ueberschrieben werden, um den
      Behaelter an bestimmte spezielle Eigenschaften und Faehigkeiten
      anzupassen. 

      int BeforeOpen();
          diese Funktion wird aufgerufen, wenn das Oeffnen des Behaelters
          im Prinzip erfolgreich durchgefuerht werden kann
          soll das Oeffnen aber noch von anderen, nicht im Standardbehaelter
          enthaltenen Parametern abhaengig sein, koennen diese in dieser
          Funktion abgetestet werden
          soll der Behaelter nicht geoeffnet werden, muss die Funktion 0
          zurueckliefern, fuer Fehlermeldungen, warum der Behaelter nicht
          geoeffnet werden kann, ist der einzelne Magier selbst
          verantwortlich;
          steht dem Oeffnen des Behaelters nichts mehr im Wege, muss diese
          Funktion den Wert 1 zurueckgeben;
          nach dem 'return 1' gibt der Behaelter eine Standardmeldung an
          this_player und alle anderen Leute im Raum ueber das erfolgreiche
          Oeffnen des Behaelters aus;
          standardmaessig macht diese Funktion nur ein 'return 1';
          wenn jemandem die Standardmessage fuer das Oeffnen des Behaelters
          nicht zusagt, kann er diese Funktion benutzen, um eigene Messages
          auszugeben, allerdings muss dann auf zwei Dinge geachtet werden:
          1. die Zeile
             SetProp(P_CNT_STATUS, CNT_STATUS_OPEN);
             muss in der Funktion enthalten sein
          2. die Funktion muss mit 'return 0' verlassen werden

      int BeforeClose();
          bei dieser Funktion gilt das fuer BeforeOpen() gesagte analog fuer
          das Schliessen des Behaelters

      void AfterOpen();
          diese Funktion wird aufgerufen, nachdem der Behaelter erfolgreich
          geoeffnet wurde und die Erfolgsmessages ausgegeben wurden
          wozu sie benutzt werden kann, ist der Phantasie des einzelnen
          ueberlassen (z.b. koennen darin aktionen ausgeloest werden, die
          durch das Oeffnen des Behaelters verursacht werden, das Oeffnen
          einer Puderdose koennte einen Niesanfall ausloesen, oder der Deckel
          einer Truhe erweist sich als zu schwer und faellt wieder zu - in
          diesem falle aber nicht das Ruecksetzen von P_CNT_STATUS vergessen)

      void AfterClose();
          analog zu AfterOpen(), wird aber nach dem erfolgreichen Schliessen
          des Behaelters aufgerufen

      int ResetFunc();
          mit dieser Funktion kann das Verhalten des Behaelters bei reset()
          beeinflusst werden, aufgerufen wird sie nach ::reset() und bevor
          die Flags (P_CNT_FLAGS) getestet und ausgewertet werden;
          liefert die Funktion 0 zurueck, werden die Flags nicht mehr
          ausgewertet; standardmaessig liefert die funktion 1 zurueck;
          in der funktion koennen beispielsweise weitere (vom Standard-
          behaelter unabhaengige) gesetzte Flags getestet und in
          Abhaengigkeit von diesen die weitere Ausfuehrung des Resets
          gesteuert werden (entweder Abbruch == return 0; oder
          Ausfuehrung == return 1; )

      int KeyOpenFunc();
          entspricht in der Anwendung der Funktion BeforeOpen(), wird aber
          nur aufgerufen, wenn beim Oeffnen des Behaelters ein Schluessel
          benoetigt wird und alle Kriterien fuer das erfolgreiche Oeffnen
          bereits erfuellt wurden (z.b. Behaelter abgeschlossen, Schluessel
          passt);
          Rueckgabewert 0 == Abbruch des Oeffnens, Rueckgabewert 1 == gib
          Standardmessages fuer erfolgreiches Oeffnen aus
          ACHTUNG: die Funktion BeforeOpen() wird anschliessend ebenfalls
          noch aufgerufen (bevor die Messages ausgegeben werden)!

      int KeyCloseFunc();
          entspricht in der Anwendung der Funktion BeforeClose(), wird aber
          nur aufgerufen, wenn beim Schliessen des Behaelters ein Schluessel
          benoetigt wird und alle Kriterien fuer das erfolgreiche Schliessen
          bereits erfuellt wurden (z.b. Behaelter nicht abgeschlossen,
          Schluessel passt);
          Rueckgabewert 0 == Abbruch des Schliessens, Rueckgabewert 1 == gib
          Standardmessages fuer erfolgreiches Schliessen aus
          ACHTUNG: die Funktion BeforeClose() wird anschliessend ebenfalls
          noch aufgerufen (bevor die Messages ausgegeben werden)!


      Die folgenden Funktionen werden durch Kommandos aufgerufen und werden
      normalerweise nicht ueberschrieben.

      int schliesse(string str);
          wird durch die Kommandos 'schliess' und 'schliesse' aufgerufen
          erledigen alle noetigen Abfragen und Tests beim Schliessen des
          Behaelters

      int oeffne(string str);
          wird durch das Kommandos 'oeffne' aufgerufen
          erledigen alle noetigen Abfragen und Tests beim Oeffnen des
          Behaelters

      int entleeren(string str);
          wird durch die Kommandos 'leere' und 'entleere' aufgerufen
          erledigen alle noetigen Abfragen und Tests beim Entleeren des
          Behaelters


SIEHE AUCH
        container(STD), lcontainer(STD), IsOpen(L), IsClosed(L), IsLocked(L),
        CanOnlyLock(L)


Start » Magierhandbuch » Docu » Std » Behaelter Letzte Generierung: 01.05.2021, 16:59
Valid HTML 4.01!