MayAddWeight()
==============

FUNKTION
--------
::

     int MayAddWeight(int gewicht);

DEFINIERT IN
------------
::

     /std/container/restrictions.c

ARGUMENTE
---------
::

     gewicht
          Das zu pruefende Gewicht.

BESCHREIBUNG
------------
::

     Wenn ein Objekt ein einen Behaelter bewegt wird, prueft move() ueber
     diese Funktion, ob das Objekt ueberhaupt noch in den Behaelter hinein
     passt. Dazu uebergibt move() dieser Funktion das Gewicht des zu
     bewegenden Objektes.

RUeCKGABEWERT
-------------
::

     0, wenn der Behaelter noch ein gewicht Gramm wiegendes Objekt aufnehmen
     kann, -1 im anderen Fall.

BEMERKUNGEN
-----------
::

     move() ruft diese Funktion nicht auf, wenn in den Flags M_NOCHECK
     gesetzt war!

BEISPIELE
---------
::

     Die entsprechende Abfrage in /std/thing/moving.c sieht etwa
     folgendermassen aus:

     int weight;

     ...
     weight = QueryProp(P_TOTAL_WEIGHT);   // Behaelter? Ja => Gesamtgewicht
     if (!weight)
       weight = QueryProp(P_WEIGHT);       // Nein: einfaches Gewicht

     if (ziel->MayAddWeight(weight) == -1) // Passt es noch rein?
       return ME_TOO_HEAVY;                // Nein, entspr. Fehler zurueckgeben

     ...

SIEHE AUCH
----------
::

     MayAddObject(), PreventInsert(), move(), /std/container/restrictions.c


Last modified: 23.09.2007, Zesstra

