inventory.c-Dateireferenz

#include <thing.h>
#include <properties.h>
#include <sensitive.h>
Include-Abhängigkeitsdiagramm für inventory.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define NEED_PROTOTYPES
#define ME   this_object()

Funktionen

void RemoveSensitiveObjectFromList (object ob, string list)
void RemoveSensitiveObject (object ob)
varargs void InsertSensitiveObjectToList (object ob, string list, string key, int threshold, mixed *opt)
void InsertSensitiveObject (object ob, mixed arg)
varargs void insert_sensitive_inv (object ob, string key, int threshold, mixed *opt)
varargs void insert_sensitive_inv_trigger (object ob, string key, int threshold, mixed *opt)

Makro-Dokumentation

#define ME   this_object()

Definiert in Zeile 19 der Datei inventory.c.

#define NEED_PROTOTYPES

Definiert in Zeile 13 der Datei inventory.c.


Dokumentation der Funktionen

varargs void insert_sensitive_inv ( object  ob,
string  key,
int  threshold,
mixed *  opt 
)

Definiert in Zeile 81 der Datei inventory.c.

Benutzt P_SENSITIVE_INVENTORY_TRIGGER, QueryProp(), SENS_KEY, SENS_OBJECT, SENS_OPT, SENS_THRESHOLD und x.

00082                                                                                             {
00083   // Diese Funktion sucht, ob beim Hinzufuegen eines sensitiven Objekts
00084   // schon ein Objekt da ist, dass dieses ausloest.
00085   // z.B. (dynamit, feuer, 100, opt_dynamit) sorgt fuer
00086   // dynamit->trigger_sensitive_inv(fackel,feuer,120,opt_fackel,opt_dynamit)
00087   // wenn eine Fackel vorher mit Wert 120 eingetragen war.
00088   mixed a,x;
00089   int i;
00090   
00091   if (!pointerp(a=QueryProp(P_SENSITIVE_INVENTORY_TRIGGER)) ||
00092       !objectp(ob))
00093     return;
00094   for (i=sizeof(a)-1;i>=0;i--)
00095     if (pointerp(x=a[i]) &&
00096                 x[SENS_KEY]==key &&
00097                 x[SENS_THRESHOLD]>threshold && // Ist der Ausloeser gross genug?
00098                 objectp(x[SENS_OBJECT]) &&
00099                 environment(x[SENS_OBJECT])==environment(ob))
00100       ob->trigger_sensitive_inv(x[SENS_OBJECT],x[SENS_KEY],x[SENS_THRESHOLD],
00101                                                                 x[SENS_OPT],opt);
00102   // Zuerst Trigger-Optionen, dann Optionen des sensitiven Objekts
00103 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

varargs void insert_sensitive_inv_trigger ( object  ob,
string  key,
int  threshold,
mixed *  opt 
)

Definiert in Zeile 105 der Datei inventory.c.

Benutzt P_SENSITIVE_INVENTORY, QueryProp(), SENS_CLOSURE, SENS_KEY, SENS_OBJECT, SENS_OPT, SENS_THRESHOLD und x.

00106                                                                                                             {
00107   // Diese Funktion sucht, ob ein sensitives Objekt im Inventory ist,
00108   // das durch dieses Objekt ausgeloest wird.
00109   // z.B. (fackel, feuer, 120, opt_fackel) sorgt fuer
00110   // dynamit->trigger_sensitive_inv(fackel,feuer,120,opt_fackel,opt_dynamit)
00111   // wenn Dynamit mit Wert<120 eingetragen war
00112   mixed a,x;
00113   int i;
00114   
00115   if (!pointerp(a=QueryProp(P_SENSITIVE_INVENTORY)) ||
00116       !objectp(ob))
00117     return;
00118   for (i=sizeof(a)-1;i>=0;i--)
00119     if (pointerp(x=a[i]) &&
00120                 x[SENS_KEY]==key &&
00121                 x[SENS_THRESHOLD]<threshold && // Ausloeser gross genug?
00122                 objectp(x[SENS_OBJECT]) &&
00123                 environment(x[SENS_OBJECT])==environment(ob) &&
00124                 closurep(x[SENS_CLOSURE]))
00125       funcall(x[SENS_CLOSURE],
00126                       ob,key,threshold,opt,x[SENS_OPT]);
00127   // Zuerst Trigger-Optionen, dann Optionen des sensitiven Objekts
00128 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

void InsertSensitiveObject ( object  ob,
mixed  arg 
)

Definiert in Zeile 63 der Datei inventory.c.

Benutzt InsertSensitiveObjectToList(), map_ldfied, ME, SENS_INSERT_PREFIX und x.

Wird benutzt von InsertSensitiveObject().

00063                                                  {
00064   int i;
00065   mixed x;
00066   mapping map_ldfied;
00067   
00068   if (!pointerp(arg))
00069     return;
00070   for (i=sizeof(arg)-1;i>=0;i--)
00071     if (pointerp(x=arg[i]) &&
00072                 sizeof(x)>=3 &&
00073                 stringp(x[0]) &&
00074                 stringp(x[1]) &&
00075                 intp(x[2])) {
00076       InsertSensitiveObjectToList(ob,x[0],x[1],x[2],x[3..]);
00077       call_other(ME,SENS_INSERT_PREFIX+x[0],ob,x[1],x[2],x[3..]);
00078     }
00079 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

varargs void InsertSensitiveObjectToList ( object  ob,
string  list,
string  key,
int  threshold,
mixed *  opt 
)

Definiert in Zeile 48 der Datei inventory.c.

Benutzt i, QueryProp(), SENS_KEY, SENS_OBJECT, SENS_PROP_PREFIX, SENS_TRIGGER_PREFIX und SetProp().

Wird benutzt von InsertSensitiveObject().

00049                                                                                                             {
00050   mixed a;
00051   int i;
00052   
00053   if (!pointerp(a=QueryProp(SENS_PROP_PREFIX+list)))
00054     a=({});
00055   for (i=sizeof(a)-1;i>=0;i--)
00056     if (a[i][SENS_OBJECT]==ob && a[i][SENS_KEY]==key)
00057       return;
00058   a+=({({ob,symbol_function(SENS_TRIGGER_PREFIX+list,ob),
00059          key,threshold,opt})});
00060   SetProp(SENS_PROP_PREFIX+list,a);
00061 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void RemoveSensitiveObject ( object  ob  ) 

Definiert in Zeile 43 der Datei inventory.c.

Benutzt RemoveSensitiveObjectFromList(), SENSITIVE_INVENTORY und SENSITIVE_INVENTORY_TRIGGER.

Wird benutzt von RemoveSensitiveObject().

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

void RemoveSensitiveObjectFromList ( object  ob,
string  list 
)

Definiert in Zeile 21 der Datei inventory.c.

Benutzt c, i, ME, QueryProp(), SENS_PROP_PREFIX und SetProp().

Wird benutzt von RemoveSensitiveObject().

00021                                                            {
00022   mixed a,b,c;
00023   int i,f;
00024 
00025   if (!pointerp(a=QueryProp(SENS_PROP_PREFIX+list)))
00026     return;
00027   f=1;
00028   for (i=sizeof(a)-1;i>=0;i--)
00029     if (!pointerp(b=a[i]) ||
00030                 !sizeof(b) ||
00031                 !objectp(c=b[0]) ||
00032                 environment(c)!=ME ||
00033                 c==ob)
00034       a[i]=f=0;
00035   if (f)
00036     return;
00037   a-=({0});
00038   if (!sizeof(a))
00039     a=0;
00040   SetProp(SENS_PROP_PREFIX+list,a);
00041 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Hier ist ein Graph der zeigt, wo diese Funktion aufgerufen wird:

Erzeugt am Thu Jun 3 14:42:16 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3