
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
