STANDARDOBJEKT FUER UNIT
BENUTZUNG
inherit "unit";
#include <properties.h>
BESCHREIBUNG
Das Unit-Objekt wird benutzt, wenn eine groessere Anzahl
einfacher Objekte wie z.B. Muenzen implementiert werden sollen.
Das Unit-Objekt besteht dabei aus nur einem Objekt, das sich die
Anzahl der Elemente merkt und anzeigt. Das Objekt kann nicht nur
mit dem Namen, sondern auch mit einer Kombination aus Anzahl und
Namen angesprochen werden kann. Als id() wird also nicht nur
"Muenzen", sondern auch "7 Muenzen" anerkannt.
Auch die move()-Funktion wird entsprechend unterstuetzt. Die
move()-Funktion kann das gesamte Objekt oder auch nur einen Teil
bewegen. Im zweiten Fall wird ein neuer Clone mit der bewegten
Anzahl des Objektes produziert und die Anzahl der verbliebenen
Objekte im Original angepasst. Die bewegten Objekte checken
selbstaendig am Zielort, ob es dort ein solches Objekt schon gibt
und addieren sich dort dann zu der Anzahl dazu. Dabei wird kein
neues Objekt geclont. Das Verhalten beim Moven kann durch drei
fuer Units spezielle Move-Methoden beeinflusst werden (siehe unten).
Units koennen ueber Singular- und Plural-IDs angesprochen werden.
Zum Setzen dieser IDs verwendet man die normale Funktion AddId().
(Frueher gab es zwei spezielle Funktionen: AddSingularId() und
AddPluralId()).
Bei name() kann das Flag NAME_UACT benutzt werden. (siehe name(L))
PROPERTIES
Alle aus Thing bekannten Properties koennen benutzt werden. Natuerlich
ist es dabei erforderlich neben P_NAME eine sinnvolle Pluralbezeichnung
P_PLURAL zu setzen.
P_AMOUNT - Beinhaltet die vorhandene Anzahl der Einheiten
U_CPU - Der Wert pro Einheit (als Bruch)
U_GPU - Das Gewicht pro Einheit (als Bruch)
U_BPU - Die Sperrigkeit pro Einheit (als Bruch)
U_REQ - Mit dem letzten id() angeforderte Anzahl von Einheiten
P_GIVEN_AMOUNT - Anzahl der Einheiten die der Unit uebergeben wurden
FUNKTIONEN
void AddAmount(int am)
Aendert die Anzahl der Objekte in der Unit um 'am' Stueck. 'am'
kann auch negativ sein. Es ist vorher selbst zu pruefen, ob
ueberhaupt genuegend Objekte vorhanden sind. Wird die Anzahl
kleiner als 0, wird sie ohne Fehler auf 0 gesetzt und die Unit
wird zerstoert!
mixed IsUnit()
liefert ein Unit-Objekt (fuer Lib-internen Gebrauch) oder 1
int IsPlural()
liefert 1, wenn mehr als eine Unit angefordert wurde, sonst 0
void SetClonerUnit(object ob)
object GetClonerUnit()
sind fuer den Lib-internen Gebrauch bestimmt
MOVE_METHODEN
Units kennen folgende spezielle Move-Methoden, um das Verhalten
beim Bewegen eines Unit-Objektes zu beeinflussen:
M_MOVE_ALL: bewegt ein komplettes Unit-Objekt
M_FORCE_SPLIT: erzwingt das Aufteilen einer Unit und bewegt Teile
des Unit-Objektes
M_NO_JOIN: verhindert das automatische Vereinigen gleichartiger
Units am Zielort der Bewegung
VERALTETE FUNKTIONEN
Folgende Funktionen sind nicht mehr zu benutzen:
SetValuePerUnit(int number) -> U_CPU
SetWeightPerUnit(int number) -> U_GPU
SetUnitShort(string|string* short) -> faellt ersatzlos weg
void AddSingularId(mixed *str) -> AddId(L)
void AddPluralId(mixed *str) -> AddId(L)
void SetCoinsPerUnits(int coins, int units) -> U_CPU
void SetGramsPerUnits(int grams, int units) -> U_GPU
void SetBulkinessPerUnits(int bulk, int units) -> U_BPU
int *QueryCoinsPerUnits() -> U_CPU
int *QueryGramsPerUnits() -> U_GPU
int *QueryBulkinessPerUnits() -> U_BPU
SIEHE AUCH
name(L), P_AMOUNT, P_GIVEN_AMOUNT, U_GPU, U_CPU, U_BPU, U_REQ,
P_NAME, P_PLURAL, P_IDS, P_PIDS
|