description.c-Dateireferenz

#include <properties.h>
#include <defines.h>
#include <wizlevels.h>
#include <language.h>
#include <doorroom.h>
Include-Abhängigkeitsdiagramm für description.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define NEED_PROTOTYPES

Funktionen

void create ()
void init ()
varargs void AddRoomMessage (string *mesg, int prob, mixed *func)
static void WriteRoomMessage ()
varargs string int_long (mixed viewer, mixed viewpoint, int flags)
string int_short (mixed viewer, mixed viewpoint)
varargs void exit (object liv, object dest)
 Roommessages abschalten, wenn keine Interactives mehr da sind.
static int _set_int_light (int *light)
static string _query_int_long ()

Variablen

inherit std container description

Makro-Dokumentation

#define NEED_PROTOTYPES

Definiert in Zeile 15 der Datei description.c.


Dokumentation der Funktionen

static string _query_int_long (  )  [static]

Definiert in Zeile 212 der Datei description.c.

00212 {return Query(P_INT_LONG, F_VALUE);}

static int _set_int_light ( int *  light  )  [static]

Definiert in Zeile 184 der Datei description.c.

00185 {
00186    int tmp;
00187 
00188    // zur Sicherheit
00189    if (!pointerp(light)) return -1;
00190    if (light[0]>QueryProp(P_LIGHT)) {
00191       // Licht verlaeuft sich in einem grossen Raum, daher Modifier abfragen...
00192       tmp=light[0]-QueryProp(P_LIGHT_ABSORPTION);
00193       // wenn sich das Vorzeichen geaendert hat, auf 0 setzen.
00194       light[0]=((tmp^light[0]) & 0x80000000 ? 0 : tmp);
00195    }
00196    if (light[1]<QueryProp(P_LIGHT) && light[1]<0) {
00197       // Licht verlaeuft sich in einem grossen Raum, daher Modifier abfragen...
00198       tmp=light[1]+QueryProp(P_LIGHT_ABSORPTION);
00199       // wenn sich das Vorzeichen geaendert hat, auf 0 setzen.
00200       light[1]=((tmp^light[1]) & 0x80000000 ? 0 : tmp);
00201    }
00202    light[2]=light[0]+light[1];
00203    Set(P_INT_LIGHT, light, F_VALUE);
00204    // diese Prop setzen kaum Leute (offiziell gehts ja auch gar nicht. Keiner
00205    // davon erwartet nen Rueckgabewert. Daher wird hier 0 zurueckgeben, statt
00206    // des aufwaendig berechneten QueryProp(P_INT_LIGHT).
00207    // Achja. Der Rueckgabewert vom Set() waere ein int*, was nicht geht, weil
00208    // diese Funktion nur int zurueckgeben darf.
00209    return 0;
00210 }

varargs void AddRoomMessage ( string *  mesg,
int  prob,
mixed *  func 
)

Definiert in Zeile 49 der Datei description.c.

Benutzt P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und SetProp().

00050 {
00051   if (mesg && !pointerp(mesg))
00052     raise_error(sprintf(
00053       "AddRoomMessage(): wrong argument type, expected Array or 0, "
00054       "got %.20O",mesg));
00055 
00056    SetProp(P_ROOM_MSG, mesg);
00057 
00058   if (prob>0)
00059     SetProp(P_MSG_PROB, prob);
00060 
00061   if (func)
00062     SetProp(P_FUNC_MSG, func);
00063 }

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

void create (  ) 

Definiert in Zeile 23 der Datei description.c.

Benutzt AddId(), create(), P_FUNC_MSG, P_INT_LONG, P_INT_SHORT, P_LIGHT_ABSORPTION, P_MSG_PROB, P_NAME, P_ROOM_MSG und SetProp().

00024 {
00025   ::create();
00026   SetProp(P_NAME, "Raum");
00027   SetProp(P_INT_SHORT,"<namenloser Raum>");
00028   SetProp(P_INT_LONG,0);
00029   SetProp(P_ROOM_MSG, ({}) );
00030   SetProp(P_FUNC_MSG, 0);
00031   SetProp(P_MSG_PROB, 30);
00032   SetProp(P_LIGHT_ABSORPTION, 1);
00033   AddId(({"raum", "hier"}));
00034 }

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

varargs void exit ( object  liv,
object  dest 
)

Roommessages abschalten, wenn keine Interactives mehr da sind.

Definiert in Zeile 170 der Datei description.c.

00170                                            {
00171   // fall erbende Objekte das liv nicht uebergeben. Pruefung nur auf
00172   // previous_object(). Wenn Magier da noch irgendwelche Spielchen mit
00173   // call_other() & Co treiben, haben wir Pech gehabt, macht aber nicht viel,
00174   // weil die Raummeldungen dann im naechsten callout abgeschaltet werden.
00175   if (!living(liv=previous_object())) return;
00176 
00177   object *interactives = filter(all_inventory(), #'interactive);
00178   // liv wurde noch nicht bewegt, ggf. beruecksichtigen.
00179   if ( !sizeof(interactives) ||
00180       (interactive(liv) && sizeof(interactives) < 2) )
00181     while (remove_call_out("WriteRoomMessage")!=-1);
00182 }

void init (  ) 

Definiert in Zeile 36 der Datei description.c.

Benutzt call_out(), P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und QueryProp().

00037 {
00038   mixed roommsg;
00039 
00040 //  ::init();
00041   // Wenn P_ROOM_MSG gesetzt oder P_FUNC_MSG und kein Callout laeuft,
00042   // Callout starten.
00043   if( (((roommsg=QueryProp(P_ROOM_MSG)) && sizeof(roommsg)) ||
00044                 QueryProp(P_FUNC_MSG) ) && 
00045       (find_call_out("WriteRoomMessage")==-1))
00046     call_out("WriteRoomMessage", random(QueryProp(P_MSG_PROB)));
00047 }

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

varargs string int_long ( mixed  viewer,
mixed  viewpoint,
int  flags 
)

Definiert in Zeile 99 der Datei description.c.

Benutzt DOOR_MASTER, GetExits(), IS_LEARNER, make_invlist(), ME, P_DOOR_INFOS, P_HIDE_EXITS, P_INT_LONG, P_SHOW_EXITS, P_TRANSPARENT, P_WANTS_TO_LEARN, process_string() und QueryProp().

00100 {
00101   string descr, inv_descr;
00102 
00103   flags &= 3;
00104   if( IS_LEARNER(viewer) && viewer->QueryProp( P_WANTS_TO_LEARN ) )
00105     descr = "[" + object_name(ME) + "]\n";
00106   else
00107     descr = "";
00108 
00109   descr += process_string(QueryProp(P_INT_LONG)||"");
00110   
00111   // ggf. Tueren hinzufuegen.
00112   if (QueryProp(P_DOOR_INFOS)) {
00113     string tmp=((string)call_other(DOOR_MASTER,"look_doors"));
00114     if (stringp(tmp) && strlen(tmp))
00115         descr += tmp;
00116   }
00117   
00118   // ggf. Ausgaenge hinzufuegen.
00119   if ( viewer->QueryProp(P_SHOW_EXITS) && (!QueryProp(P_HIDE_EXITS) 
00120                 || pointerp(QueryProp(P_HIDE_EXITS))) )
00121     descr += GetExits(viewer) || "";
00122 
00123   // Viewpoint (Objekt oder Objektarray) sind nicht sichtbar
00124   inv_descr = (string) make_invlist(viewer, all_inventory(ME) 
00125                                   - (pointerp(viewpoint)?viewpoint:({viewpoint})) ,flags);
00126 
00127   if ( inv_descr != "" )
00128     descr += inv_descr;
00129 
00130   if(environment() && (inv_descr=QueryProp(P_TRANSPARENT)))
00131   {
00132     if(stringp(inv_descr)) descr += inv_descr;
00133     else                   descr += "Ausserhalb siehst Du:\n";
00134             
00135     descr += environment()->int_short(viewer,ME);
00136   }
00137                   
00138   return descr;
00139 }

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

string int_short ( mixed  viewer,
mixed  viewpoint 
)

Definiert in Zeile 141 der Datei description.c.

Benutzt GetExits(), IS_LEARNER, make_invlist(), ME, P_BRIEF, P_HIDE_EXITS, P_INT_SHORT, P_SHOW_EXITS, P_WANTS_TO_LEARN, process_string() und QueryProp().

00142 {
00143   string descr, inv_descr;
00144 
00145   descr = process_string( QueryProp(P_INT_SHORT)||"");
00146   if( IS_LEARNER(viewer) && viewer->QueryProp( P_WANTS_TO_LEARN ) )
00147     descr += " [" + object_name(ME) + "].\n";
00148   else
00149     descr += ".\n";
00150 
00151   if ( ( viewer->QueryProp(P_SHOW_EXITS)
00152          || ( environment(viewer) == ME && !viewer->QueryProp(P_BRIEF) ) )
00153        && (!QueryProp(P_HIDE_EXITS) || pointerp(QueryProp(P_HIDE_EXITS))) )
00154     descr += GetExits(viewer) || "";
00155   
00156   // Viewpoint (Objekt oder Objektarray) sind nicht sichtbar
00157   inv_descr = (string) make_invlist( viewer, all_inventory(ME) 
00158                                   - (pointerp(viewpoint)?viewpoint:({viewpoint})) );
00159 
00160   if ( inv_descr != "" )
00161     descr += inv_descr;
00162 
00163   return descr;
00164 }

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

static void WriteRoomMessage (  )  [static]

Definiert in Zeile 65 der Datei description.c.

Benutzt call_out(), i, P_FUNC_MSG, P_MSG_PROB, P_ROOM_MSG und QueryProp().

00066 {
00067   int i,tim;
00068   string *room_msg,func;
00069   mixed *func_msg;
00070 
00071   room_msg = (string *)QueryProp(P_ROOM_MSG);
00072   func_msg = QueryProp(P_FUNC_MSG);
00073   if ((!room_msg || !sizeof(room_msg)) && !func_msg)
00074     return;
00075 
00076   if (room_msg&&sizeof(room_msg))
00077   {
00078     i = random(sizeof(room_msg));
00079     tell_room(this_object(), room_msg[i]);
00080   }
00081 
00082   if (func_msg)
00083   {
00084     if (stringp(func_msg))
00085       func=(string)func_msg;
00086     else
00087       func=func_msg[random(sizeof(func_msg))];
00088     if (func && function_exists(func))
00089       call_other (this_object(), func, i);
00090   }
00091 
00092   while (remove_call_out("WriteRoomMessage")!=-1);
00093   tim=QueryProp(P_MSG_PROB);
00094   if(this_object() && sizeof(filter(
00095        deep_inventory(this_object()), #'interactive))) //')))
00096     call_out("WriteRoomMessage", (tim<15 ? 15 : tim));
00097 }

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


Variablen-Dokumentation

inherit std container description

Definiert in Zeile 13 der Datei description.c.

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