exits.c-Dateireferenz

#include <sys_debug.h>
#include <config.h>
#include <thing/properties.h>
#include <moving.h>
#include <defines.h>
#include <daemon.h>
#include <doorroom.h>
#include <routingd.h>
#include <exploration.h>
#include <room/exits.h>
Include-Abhängigkeitsdiagramm für exits.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define NEED_PROTOTYPES
#define NUMBERS   ({ "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht" })

Funktionen

static mapping rescueExit ()
static mapping _set_exits (mapping map_ldfied)
static mapping _query_exits ()
static int _set_special_exits (mapping map_ldfied)
static mapping _query_special_exits ()
void reset ()
protected void create ()
protected void create_super ()
void AddExit (mixed cmd, mixed room)
void RemoveExit (mixed cmd)
void AddSpecialExit (mixed cmd, mixed functionname)
void RemoveSpecialExit (mixed cmd)
varargs string GetExits (object viewer)
void init ()
int _normalfunction ()
static string _MakePath (string str)

Makro-Dokumentation

#define NEED_PROTOTYPES

Definiert in Zeile 24 der Datei exits.c.

#define NUMBERS   ({ "zwei", "drei", "vier", "fuenf", "sechs", "sieben", "acht" })

Definiert in Zeile 38 der Datei exits.c.

Wird benutzt von GetExits().


Dokumentation der Funktionen

static string _MakePath ( string  str  )  [static]

Definiert in Zeile 292 der Datei exits.c.

Benutzt MASTER und REAL_UID.

Wird benutzt von AddExit().

00293 {
00294   string *comp;
00295 
00296   comp = explode( object_name(this_object()), "/" ) - ({""});
00297   
00298    switch( str[0] ){
00299    case '.':
00300        str = "/" + implode( comp[0..<2], "/" ) + "/" + str;
00301        break;
00302        
00303    case '~':
00304        str = "/" + comp[0] + "/" + (comp[0] == "d" ? comp[1] + "/" : "")
00305            +REAL_UID(this_object()) + str[1..];
00306        break;
00307    }
00308    
00309    return MASTER->_get_path( str, getuid(this_object()) );
00310 }

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

int _normalfunction (  ) 

Definiert in Zeile 246 der Datei exits.c.

Benutzt EP_EXIT, GiveEP(), M_GO, message, P_EXITS und Query().

00247 {
00248     string verb, destroom;
00249     mixed message;
00250     int ret;
00251 
00252     verb = query_verb();
00253     destroom = (Query(P_EXITS) || ([]))[verb]; // hier kein rescueExit !!
00254 
00255     if ( !destroom )
00256         return 0;
00257     
00258     if ( closurep(destroom) ){
00259         ret = funcall( destroom, verb );
00260         
00261         if (ret)
00262             GiveEP( EP_EXIT, verb );
00263         
00264         return ret;
00265     }
00266     
00267     message = explode( destroom, "#" );
00268     
00269     if ( sizeof(message) == 2 ){
00270         destroom = message[1];
00271         message = message[0];
00272     } 
00273     else
00274         if( member( ({ "sueden", "suedwesten", "westen",
00275                        "nordwesten", "norden", "nordosten", "osten",
00276                        "suedosten" }), verb ) != -1 )
00277             message = "nach " + capitalize(verb);
00278         else if ( member( ({ "oben", "unten" }), verb ) != -1 )
00279             message = "nach " + verb;
00280         else
00281             message = verb;
00282     
00283     ret = this_player()->move( destroom, M_GO, message );
00284     
00285     if (ret)
00286         GiveEP( EP_EXIT, verb );
00287     
00288     return ret;
00289 }

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

static mapping _query_exits (  )  [static]

Definiert in Zeile 61 der Datei exits.c.

Benutzt DOOR_MASTER, exits, i, m_delete(), P_DOOR_INFOS, P_EXITS, Query(), QueryProp() und rescueExit().

00062 {
00063     mapping exits;
00064     mixed key;
00065     int i;
00066 
00067     if( (!previous_object() || object_name(previous_object()) != DOOR_MASTER)
00068         && QueryProp(P_DOOR_INFOS) )
00069         call_other( DOOR_MASTER, "init_doors" );
00070     
00071     key = m_indices( exits = (Query(P_EXITS) || rescueExit()) );
00072     
00073     for ( i = sizeof(key); i--; )
00074         if( !stringp(exits[key[i]]) )
00075             exits = m_delete( exits, key[i] );
00076     
00077     return exits;
00078 }

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

static mapping _query_special_exits (  )  [static]

Definiert in Zeile 87 der Datei exits.c.

Benutzt exits, i, m_delete(), P_EXITS, Query() und rescueExit().

00088 {
00089     mapping exits;
00090     mixed key;
00091     int i;
00092 
00093     key = m_indices( exits = (Query(P_EXITS) || rescueExit()) );
00094     
00095     for ( i = sizeof(key); i--; )
00096         if( stringp(exits[key[i]]) )
00097             exits = m_delete( exits, key[i] );
00098     
00099     return exits;
00100 }

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

static mapping _set_exits ( mapping  map_ldfied  )  [static]

Definiert in Zeile 53 der Datei exits.c.

Benutzt P_EXITS und Set().

00054 {
00055     if( mappingp(map_ldfied) )
00056         return Set( P_EXITS, map_ldfied );
00057     return 0;
00058 }

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

static int _set_special_exits ( mapping  map_ldfied  )  [static]

Definiert in Zeile 81 der Datei exits.c.

00082 {
00083     return -1;
00084 }

void AddExit ( mixed  cmd,
mixed  room 
)

Definiert in Zeile 116 der Datei exits.c.

Benutzt _MakePath(), i, msg(), P_EXITS, Query(), rescueExit(), ROUTER und Set().

Wird benutzt von AddSpecialExit(), create() und move().

00117 {
00118     int i;
00119     mapping exita;
00120   
00121     exita = Query(P_EXITS) || rescueExit();
00122     
00123     if ( !closurep(room) ){
00124         int s;
00125         string msg;
00126         object router;
00127     
00128         if( (s = member(room, '#')) != -1 ){
00129             msg  = room[0..s];
00130             room = room[s+1..];
00131         }
00132         else
00133             msg = "";
00134         
00135         room = _MakePath(room);
00136 
00137         if ( !clonep(this_object()) && objectp(router = find_object(ROUTER)) )
00138             router->RegisterExit( object_name(this_object()), cmd, room );
00139     
00140         room = msg + room;
00141     }
00142     
00143     if( !pointerp(cmd) )
00144         exita += ([ cmd : room ]);
00145     else 
00146         for( i = sizeof(cmd); i--; )
00147             exita += ([ cmd[i] : room ]);
00148 
00149     Set( P_EXITS, exita );
00150 }

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

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

void AddSpecialExit ( mixed  cmd,
mixed  functionname 
)

Definiert in Zeile 175 der Datei exits.c.

Benutzt AddExit().

Wird benutzt von set_doors().

00176 {
00177     
00178     if ( stringp(functionname) )
00179         functionname = symbol_function( functionname, this_object() );
00180     
00181     if ( !closurep(functionname) ) {
00182                 catch(raise_error(sprintf( "method %O doesn't exist\n",
00183                                 functionname)); publish);
00184                 return;
00185     }
00186     
00187     AddExit( cmd, functionname );
00188 }

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

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

protected void create (  ) 

Definiert in Zeile 107 der Datei exits.c.

Benutzt P_EXITS und SetProp().

00108 {
00109   SetProp( P_EXITS, ([]) );
00110 }

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

protected void create_super (  ) 

Definiert in Zeile 112 der Datei exits.c.

Benutzt set_next_reset().

00112                               {
00113   set_next_reset(-1);
00114 }

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

varargs string GetExits ( object  viewer  ) 

Definiert in Zeile 197 der Datei exits.c.

Benutzt break_string(), DOOR_MASTER, exits, i, NUMBERS, P_DOOR_INFOS, P_EXITS, P_HIDE_EXITS, Query(), QueryProp() und rescueExit().

00198 {
00199     int n, i;
00200     string exits, *indices, *hidden;
00201   
00202     if ( QueryProp(P_DOOR_INFOS) )
00203         call_other( DOOR_MASTER, "init_doors" );
00204 
00205     indices = m_indices( Query(P_EXITS) || rescueExit() );
00206     
00207     if ( pointerp(hidden = QueryProp(P_HIDE_EXITS)) )
00208         indices -= hidden;
00209   
00210     n = sizeof( indices );
00211     
00212     switch (n){
00213     case 0:
00214         return "Es gibt keine sichtbaren Ausgaenge.\n";
00215         
00216     case 1:
00217         return "Es gibt einen sichtbaren Ausgang: " + indices[0] + ".\n";
00218         
00219     case 2: case 3: case 4: case 5: case 6: case 7: case 8:
00220         exits = "Es gibt " + NUMBERS[n-2] + " sichtbare Ausgaenge: ";
00221         break;
00222         
00223     default:
00224         exits = "Es gibt viele sichtbare Ausgaenge: ";
00225     }
00226     
00227     for ( i = 0; i < n-2; i++ )
00228         exits += indices[i] + ", ";
00229     
00230     exits += indices[n-2] + " und " + indices[n-1] + ".";
00231     
00232     return break_string( exits, 78 );
00233 }

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

void init (  ) 

Definiert in Zeile 238 der Datei exits.c.

00239 {
00240     if ( environment(this_player()) == this_object() )
00241         add_action( "_normalfunction", "", 1 );
00242 }

void RemoveExit ( mixed  cmd  ) 

Definiert in Zeile 153 der Datei exits.c.

Benutzt i, m_delete(), P_EXITS, Query(), rescueExit(), Set() und SetProp().

Wird benutzt von RemoveSpecialExit().

00154 {
00155     mapping exita;
00156     int i;
00157   
00158     if ( !cmd ) {
00159         SetProp(P_EXITS, ([]) );
00160         return;
00161     }
00162 
00163     if ( !pointerp(cmd) )
00164         cmd = ({ cmd });
00165 
00166     exita = Query(P_EXITS) || rescueExit();
00167     
00168     for( i = sizeof(cmd); i--; )
00169         exita = m_delete( exita, cmd[i] );
00170   
00171     Set( P_EXITS, exita );
00172 }

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

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

void RemoveSpecialExit ( mixed  cmd  ) 

Definiert in Zeile 191 der Datei exits.c.

Benutzt RemoveExit().

Wird benutzt von set_doors().

00192 {
00193     RemoveExit( cmd );
00194 }

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

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

static mapping rescueExit (  )  [static]

Definiert in Zeile 43 der Datei exits.c.

Wird benutzt von _query_exits(), _query_special_exits(), AddExit(), GetExits() und RemoveExit().

00044 {
00045   catch(raise_error(sprintf(
00046                   "room/exits.c: Forgotten ::create()? "
00047                   "P_EXITS in %O is 0!\n", this_object()));publish); 
00048 
00049   return ([]);
00050 }

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

void reset ( void   ) 

Definiert in Zeile 103 der Datei exits.c.

00104 {}

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