doors.c-Dateireferenz

#include "/obj/tools/roommaker/roommaker.h"
Include-Abhängigkeitsdiagramm für doors.c:

gehe zum Quellcode dieser Datei

Funktionen

static void getdshort ()
static void getdlong ()
static void getdkey ()
static void getstatus (string str)
static void gotogetstatus ()
mixed SetProp (string prop, mixed arg)
static void enter_door ()
static void delete_door ()
static void delete_door_really (int number)
static void delete_door2 (string str)
static void door_redisplay ()
static void nodoor ()
static void getdpath ()
static void insert_door (string str)
static void nodpath ()
static void double_door (string str)
static void door_redisplay2 ()
static void door_save ()
static void insert_door2 (string str)
static void goto_delete_door ()
static void nodshort ()
static void door_redisplay3 ()
static void insert_door3 (string str)
static void show_door ()
static void store_dlong ()
static void insert_key (string str)

Variablen

static string * door
static string * dpath
static string * dshort
static mixed * dlong
static string * dkey
static int * dstatus
static string * statlist

Dokumentation der Funktionen

static void delete_door (  )  [static]

Definiert in Zeile 44 der Datei doors.c.

Benutzt door, dpath, dshort, i, input_to() und QueryLabel().

Wird benutzt von getstatus() und goto_delete_door().

00045 {
00046   int i;
00047   if(!sizeof(door))
00048   {
00049     write("No doors are given.\n");
00050     return (void)call_other(this_object(),QueryLabel("delete_return"));
00051   }
00052   if(sizeof(door) == 1) write("This door is");
00053   else write("These doors are");
00054   write(" given:\n");
00055   for(i=0;i<sizeof(door);i++)
00056     write((i+1) + ". " + door[i] + " ... " + dpath[i] + ", \"" +
00057           dshort[i] + "\"\n");
00058   write("Which door should be deleted?\n");
00059   input_to("delete_door2");
00060 }

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

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

static void delete_door2 ( string  str  )  [static]

Definiert in Zeile 80 der Datei doors.c.

Benutzt delete_door_really(), door, member_array() und QueryLabel().

00081 {
00082   int number;                   /* number of the given door */
00083   if(sscanf(str,"%d",number) && number <= sizeof(door))
00084   {
00085     delete_door_really(number-1);
00086     return (void)call_other(this_object(),QueryLabel("delete_return"));
00087   }
00088   number = (member_array(str,door));
00089   if(number == -1)
00090   {
00091     write("There is no door named " + str + "!\n");
00092     return (void)call_other(this_object(),QueryLabel("delete_return"));
00093   }
00094   delete_door_really(number);
00095   return (void)call_other(this_object(),QueryLabel("delete_return"));
00096 }

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

static void delete_door_really ( int  number  )  [static]

Definiert in Zeile 64 der Datei doors.c.

Benutzt dkey, dlong, door, dpath, dshort, dstatus, QueryLabel() und SetLabel().

Wird benutzt von delete_door2().

00065 {
00066   write("Deleting " + door[number] + " ...\n");
00067   SetLabel("deleted_door",({door[number],dpath[number]}));
00068   door = door[0..number-1] + door[number+1..];
00069   dpath = dpath[0..number-1] + dpath[number+1..];
00070   dshort = dshort[0..number-1] + dshort[number+1..];
00071   dlong = dlong[0..number-1] + dlong[number+1..];
00072   dkey = dkey[0..number-1] + dkey[number+1..];
00073   dstatus = dstatus[0..number-1] + dstatus[number+1..];
00074   if(QueryLabel("delete_return") == "gotogetstring")
00075     SetLabel("prompt","Door #" + (sizeof(door)+1) + ": ");
00076 }

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

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

static void door_redisplay (  )  [static]

Definiert in Zeile 100 der Datei doors.c.

Benutzt door, dpath, dshort, gotogetstring(), i und input_to().

00101 {
00102   int i;
00103   if(!sizeof(door))
00104   {
00105     write("No doors are given.\ndoor #1: ");
00106     input_to("getstring");
00107     return;
00108   }
00109   if(sizeof(door) == 1) write("This door is");
00110   else write("These doors are");
00111   write(" given:\n");
00112   for(i=0;i<sizeof(door);i++)
00113     write(door[i] + " ... " + dpath[i] + ", \"" + dshort[i] + "\"\n");
00114   gotogetstring();
00115 }

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

static void door_redisplay2 (  )  [static]

Definiert in Zeile 209 der Datei doors.c.

Benutzt door, dpath, dshort, gotogetstring(), member_array() und QueryLabel().

00210 {
00211   int i;
00212   string dummy;
00213   dummy = dpath[member_array(QueryLabel("door"),door)];
00214   dpath[member_array(QueryLabel("door"),door)] = "<no path>";
00215   if(sizeof(door) == 1) write("This door is");
00216   else write("These doors are");
00217   write(" given:\n");
00218   for(i=0;i<sizeof(door);i++)
00219     write(door[i] + " ... " + dpath[i] + ", \"" + dshort[i] + "\"\n");
00220   dpath[member_array(QueryLabel("door"),door)] = dummy;
00221   gotogetstring();
00222 }

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

static void door_redisplay3 (  )  [static]

Definiert in Zeile 276 der Datei doors.c.

Benutzt door, dpath, dshort, gotogetstring(), member_array() und QueryLabel().

00277 {
00278   int i,j;
00279   string dummy;
00280   dummy = dshort[j = member_array(QueryLabel("door"),door)];
00281   dshort[j] = "<no description>";
00282   if(sizeof(door) == 1) write("This door is");
00283   else write("These doors are");
00284   write(" given:\n");
00285   for(i=0;i<sizeof(door);i++)
00286     write(door[i] + " ... " + dpath[i] + ", \"" + dshort[i] + "\"\n");
00287   dshort[j] = dummy;
00288   gotogetstring();
00289 }

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

static void door_save (  )  [static]

Definiert in Zeile 228 der Datei doors.c.

Benutzt gotogetstring().

00229 {
00230   write("You can't save. The door needs a path!\n");
00231   gotogetstring();
00232 }

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

static void double_door ( string  str  )  [static]

Definiert in Zeile 193 der Datei doors.c.

Benutzt door, enter_door(), getdpath(), input_to() und QueryLabel().

00194 {
00195   if(str == "y")
00196   {
00197     insert_alist(QueryLabel("door"),door);
00198     return getdpath();
00199   }
00200   if(str == "n") return enter_door();
00201   write("Do you want to overwrite them?? (y/n) ");
00202   input_to("double_door");
00203 }

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

static void enter_door (  )  [static]

Definiert in Zeile 28 der Datei doors.c.

Benutzt door, gotogetstring() und SetLabel().

Wird benutzt von double_door(), getstatus() und gotogetstatus().

00029 {
00030   SetLabel("prompt","Door #" + (sizeof(door)+1) + ": ");
00031   SetLabel("nostring","nodoor");
00032   SetLabel("ready","gotomenu");
00033   SetLabel("undo","gotomenu");
00034   SetLabel("redisplay","door_redisplay");
00035   SetLabel("delete","delete_door");
00036   SetLabel("save_file","normal_save_string");
00037   SetLabel("insert_string","insert_door");
00038   SetLabel("delete_return","gotogetstring");
00039   gotogetstring();
00040 }

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

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

static void getdkey (  )  [static]

Definiert in Zeile 335 der Datei doors.c.

Benutzt dkey, gotogetstring() und SetLabel().

Wird benutzt von store_dlong().

00336 {
00337   SetLabel("prompt","Key #" + sizeof(dkey) + ": ");
00338   SetLabel("nostring","gotogetstatus");
00339   SetLabel("ready","gotogetstatus");
00340   SetLabel("undo","gotogetstatus");
00341   SetLabel("redisplay","door_redisplay4");
00342   SetLabel("delete","delete_door");
00343   SetLabel("save_file","door_save");
00344   SetLabel("insert_string","insert_key");
00345   gotogetstring();
00346 }

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

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

static void getdlong (  )  [static]

Definiert in Zeile 298 der Datei doors.c.

Benutzt ClearText(), gotogettext(), SCREEN_WIDTH und SetLabel().

Wird benutzt von insert_door3().

00299 {
00300   ClearText();
00301   SetLabel("lenmax",SCREEN_WIDTH);
00302   SetLabel("ready","store_dlong");
00303   SetLabel("show_file","show_door");
00304   SetLabel("menustring","But you need to describe the door!\n");
00305   SetLabel("menu","gettext");
00306   write("Please describe the door (help with \"~h\")!\n");
00307   gotogettext();
00308 }

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

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

static void getdpath (  )  [static]

Definiert in Zeile 129 der Datei doors.c.

Benutzt dpath, gotogetstring() und SetLabel().

Wird benutzt von double_door() und insert_door().

00130 {
00131   SetLabel("prompt","Path #" + sizeof(dpath) + ": ");
00132   SetLabel("nostring","nodpath");
00133   SetLabel("ready","nodpath");
00134   SetLabel("undo","nodpath");
00135   SetLabel("redisplay","door_redisplay2");
00136   SetLabel("delete","delete_door");
00137   SetLabel("save_file","door_save");
00138   SetLabel("insert_string","insert_door2");
00139   gotogetstring();
00140 }

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

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

static void getdshort (  )  [static]

Definiert in Zeile 250 der Datei doors.c.

Benutzt dshort, gotogetstring() und SetLabel().

Wird benutzt von insert_door2().

00251 {
00252   SetLabel("prompt","Short #" + sizeof(dshort) + ": ");
00253   SetLabel("nostring","nodshort");
00254   SetLabel("ready","nodshort");
00255   SetLabel("undo","nodshort");
00256   SetLabel("redisplay","door_redisplay3");
00257   SetLabel("insert_string","insert_door3");
00258   gotogetstring();
00259 }

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

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

static void getstatus ( string  str  )  [static]

Definiert in Zeile 362 der Datei doors.c.

Benutzt abort(), delete_door(), dkey, door, dpath, dshort, dstatus, enter_door(), file_print(), gotogetstatus(), help, input_to(), member_array(), P_NAME, QueryFile(), QueryLabel(), QueryProp(), SetLabel() und SetProp().

00363 {
00364   int i;
00365   if(str[0..1] == "~!")
00366   {
00367     if(str[2..-1] == "")
00368     {
00369       SetLabel("nextfun","gotogetstatus");
00370       write("You interrupt to make " + QueryFile() +
00371          "\nRestart with \"~m\".\n");
00372       say(this_player()->QueryProp(P_NAME) + " interupts to write a file.\n");
00373       SetProp("making",1);
00374       return;
00375     }
00376     this_player()->command_me(str[2..-1]);
00377     write("Status: ");
00378     input_to("getstatus");
00379     return;
00380   }
00381   switch(str) {
00382   case "":
00383     write("Door status is now OPEN.\n");
00384     return enter_door();
00385   case "~q": return abort();
00386   case "~h":
00387     write(help() +
00388 "1 ....... door is per default open   2 ....... door is per default closed\n");
00389     if(dkey[member_array(QueryLabel("door"),door)] != "0")
00390       write("3 ....... door is per default locked\n");
00391     return gotogetstatus();
00392   case "~f":
00393     write(file_print() + "Status: ");
00394     input_to("getstatus");
00395     return;
00396   case  ".":
00397   case "**":
00398     write("Door status is now OPEN.\n");
00399     return enter_door();
00400   case "~r":
00401     if(sizeof(door) == 1) write("This door is");
00402     else write("These doors are");
00403     write(" given:\n");
00404     for(i = 0; i < sizeof(door); i++)
00405       write(door[i] + " ... " + dpath[i] + ", \"" + dshort[i] + "\"\n");
00406     return gotogetstatus();
00407   case "~d":
00408     SetLabel("delete_return","gotogetstatus");
00409     return delete_door();
00410   case "~s":
00411     write(file_print()
00412           + "Do you want to save this file " + QueryFile() + "? (y/n) ");
00413     SetLabel("nextfun","gotogetstatus");
00414     input_to("filewrite");
00415     return;
00416   /* end switch */ }
00417   if(str == "open" || str == "0" || str == "1") return enter_door();
00418   if(str == "closed" || str == "2")
00419   {
00420     dstatus[member_array(QueryLabel("door"),door)] = 1;
00421     return enter_door();
00422   }
00423   if(str == "locked" || str == "3"
00424      && dkey[member_array(QueryLabel("door"),door)] != "0")
00425   {
00426     dstatus[member_array(QueryLabel("door"),door)] = 2;
00427     return enter_door();
00428   }
00429   write("ERROR: don't understand! Please enter again: (Help with \"~h\")\n" +
00430      "Status: ");
00431   input_to("getstatus");
00432 }

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

static void goto_delete_door (  )  [static]

Definiert in Zeile 242 der Datei doors.c.

Benutzt delete_door() und SetLabel().

00243 {
00244   SetLabel("delete_return","gotomenu");
00245   delete_door();
00246 }

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

static void gotogetstatus (  )  [static]

Definiert in Zeile 355 der Datei doors.c.

Benutzt door, enter_door() und input_to().

Wird benutzt von getstatus() und insert_key().

00356 {
00357   if(!sizeof(door)) return enter_door();
00358   write("Status: ");
00359   input_to("getstatus");
00360 }

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

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

static void insert_door ( string  str  )  [static]

Definiert in Zeile 147 der Datei doors.c.

Benutzt dkey, dlong, door, dpath, dshort, dstatus, getdpath(), i, input_to(), member_array() und SetLabel().

00148 {
00149   int i;
00150 
00151   switch(str) {
00152   case "n": str = "north"; break;
00153   case "s": str = "south"; break;
00154   case "e": str = "east"; break;
00155   case "w": str = "west"; break;
00156   case "u": str = "up"; break;
00157   case "d": str = "down"; break;
00158   }
00159   i = member_array(str,door);
00160   SetLabel("door",str);
00161   if(i != -1)
00162   {
00163     write("We have already an door named " + str + "!\n");
00164     write(door[i] + " ... " + dpath[i] + ", \"" + dshort[i] + "\"\n");
00165     write("Do you want to overwrite them? (y/n) ");
00166     input_to("double_door");
00167     return;
00168   }
00169   door += ({str});
00170   dpath += ({"<no path>"});
00171   dshort += ({"<no description>"});
00172   dlong += ({({"<It's a door without any description.>"})});
00173   dkey += ({"0"});
00174   dstatus += ({0});
00175   return getdpath();
00176 }

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

static void insert_door2 ( string  str  )  [static]

Definiert in Zeile 236 der Datei doors.c.

Benutzt door, dpath, getdshort(), member_array() und QueryLabel().

00237 {
00238   dpath[member_array(QueryLabel("door"),door)] = str;
00239   return getdshort();
00240 }

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

static void insert_door3 ( string  str  )  [static]

Definiert in Zeile 293 der Datei doors.c.

Benutzt door, dshort, getdlong(), member_array() und QueryLabel().

00294 {
00295   dshort[member_array(QueryLabel("door"),door)] = str;
00296   return getdlong();
00297 }

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

static void insert_key ( string  str  )  [static]

Definiert in Zeile 348 der Datei doors.c.

Benutzt dkey, door, gotogetstatus(), member_array() und QueryLabel().

00349 {
00350   if(!str) str = "0";
00351   dkey[member_array(QueryLabel("door"),door)] = str;
00352   return gotogetstatus();
00353 }

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

static void nodoor (  )  [static]

Definiert in Zeile 121 der Datei doors.c.

Benutzt gotogetstring().

00122 {
00123   write("Every door need a name. Please enter them!\n");
00124   gotogetstring();
00125 }

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

static void nodpath (  )  [static]

Definiert in Zeile 183 der Datei doors.c.

Benutzt gotogetstring().

00184 {
00185   write("Every door needs a path. Please enter them!\n");
00186   gotogetstring();
00187 }

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

static void nodshort (  )  [static]

Definiert in Zeile 266 der Datei doors.c.

Benutzt gotogetstring().

00267 {
00268   write("Every door needs a short description. Please enter them!\n");
00269   gotogetstring();
00270 }

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

mixed SetProp ( string  prop,
mixed  arg 
)

Definiert in Zeile 144 der Datei properties.c.

Wird benutzt von _cd2(), _channel(), _check_wear_restrictions(), _clone_items(), _echo(), _examine(), _flush_cache(), _look(), _msg_beep(), _msg_prepend(), _oropax(), _query_questpoints(), _query_total_light(), _sense_exa(), _set_autoloadobj(), _set_disable_attack(), _set_extern_attributes_modifier(), _set_extern_health_modifier(), _set_frog(), _set_max_hp(), _set_max_sp(), _set_resistance(), _set_vulnerability(), _set_weight(), _setcmsg(), _setdmsg(), _toggle_brief(), _traenke(), add_player(), AddAmount(), AddArmour(), AddDefender(), AddExp(), AddItem(), AddLiquid(), AddPursuer(), AddRoomMessage(), AddSkill(), AddSpell(), AddWeapon(), AssocMember(), Attack(), binde_seil(), blaettere(), catch_up_hbs(), ChannelAdmin(), ChannelParser(), check_and_update_timed_key(), CiceroneCmd(), consume(), create(), create_default_npc(), Damage(), DeAssocMember(), defuel_drink(), defuel_food(), DelayPreparedSpells(), desc_check(), do_damage(), do_decay(), DoUnwear(), DoUnwield(), DoWear(), DoWield(), drink_alcohol(), drink_soft(), drink_this(), DryPlant(), eat_food(), eat_this(), empty(), FinalSetup(), FreeHands(), fuelle(), geschmack(), getmode(), getstatus(), getstring(), gettext(), heal_self(), heart_beat(), Identify(), init(), InitSkills(), InsertSensitiveObjectToList(), IsEqual(), lies(), LiquidContDescr(), liste(), loese_seil(), long(), MakeDrink(), mnpc_create(), move(), name(), NewbieChangeMsg(), NewbieStatusMsg(), NotifyMove(), oeffne(), Pacify(), PourLiquid(), QueryDamage(), QueryDefend(), QueryPreferedEnemy(), quit(), reduce_hit_points(), reduce_spell_points(), RegisterChannels(), reise(), remove(), RemoveDefender(), RemoveExit(), RemoveItem(), RemovePursuer(), RemoveSensitiveObjectFromList(), reset(), restore_spell_points(), schliesse(), set_email(), set_homepage(), set_icq(), set_messenger(), SetAttackChats(), SetChats(), SetEvalFactor(), setup(), team_aufnahmewunsch(), tie(), ungewaehlt(), unterschreibe(), UnwearArmour(), UnwearClothing(), UseHands(), walk_random(), WearArmour() und WearClothing().

00145 {
00146   closure func;
00147   mixed result;
00148    
00149   // nur fuer heute
00150   if (!objectp(this_object()))
00151     return 0;
00152 
00153   // NOSETMETHOD: Darf nicht gesetzt werden
00154   if (prop[F_MODE][name] & NOSETMETHOD ) return -1;
00155 
00156   // Set-Method abfragen, so vorhanden
00157   if (func=prop[F_SET_METHOD][name])
00158   {
00159     int flag;
00160 
00161     // Wert als Set-Method? gleich zurueckgeben
00162     if (!closurep(func)) return func;
00163 
00164     // An dieser Stelle muss func eine Closure sein. Da Set() ungebundene
00165     // Lambdas bindet, kann es auch nur eine gebundene Closure sein und das
00166     // Objekt existiert auch noch (sonst waere func == 0).
00167 
00168     // closure_call setzen, falls noch nicht gesetzt
00169     if ((flag=closure_call<time()))
00170       closure_call = time()+59;
00171 
00172     // Dann mal die Closure aufrufen. Bei Fehler selbige loeschen
00173     if (catch(result=funcall(func, Value, name);publish))
00174     {
00175       prop[F_SET_METHOD]-=([name]);
00176     }
00177       
00178     // Wenn closure_call gesetzt wurde, wieder loeschen
00179     if (flag) closure_call = 0;
00180 
00181     // Und zurueckgeben
00182     return result; 
00183   }
00184 
00185   // _set_*-Methode vorhanden? falls ja, aufrufen.i
00186   // TODO: Closurecache einfuehren und Funktionaufruf nur noch machen, wenn es
00187   // die _set_* auch gibt?
00188   if (call_resolved(&result,this_object(),"_set_"+name,Value ))
00189         return result;
00190 
00191   // Letzte Moeglichkeit: Muss eine 'normale' Property sein
00192   return Set( name, Value, F_VALUE, extern_call() );
00193 }

static void show_door (  )  [static]

Definiert in Zeile 310 der Datei doors.c.

Benutzt dlong, door, EditText(), file_print(), input_to(), member_array() und QueryLabel().

00311 {
00312   int i;
00313   string *dummy;
00314 
00315   dummy = dlong[i = member_array(QueryLabel("door"),door)];
00316   if(sizeof(EditText())) dlong[i] = EditText();
00317   else dlong[i] = ({"<A door without any description.>"});
00318   write(file_print() + "]");
00319   if(sizeof(EditText())) dlong[i] = dummy;
00320   input_to("gettext");
00321 }

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

static void store_dlong (  )  [static]

Definiert in Zeile 323 der Datei doors.c.

Benutzt dlong, door, EditText(), getdkey(), gotogettext(), member_array() und QueryLabel().

00324 {
00325   int i;
00326 
00327   if(!sizeof(EditText())) {
00328     write(QueryLabel("menustring"));
00329     return gotogettext();
00330   }
00331   dlong[i = member_array(QueryLabel("door"),door)] = EditText();
00332   return getdkey();
00333 }

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


Variablen-Dokumentation

string* dkey [static]
mixed* dlong [static]

Definiert in Zeile 13 der Datei doors.c.

Wird benutzt von delete_door_really(), insert_door(), show_door() und store_dlong().

string* door [static]
string* dpath [static]
string* dshort [static]
int* dstatus [static]

Definiert in Zeile 15 der Datei doors.c.

Wird benutzt von delete_door_really(), getstatus() und insert_door().

string* statlist [static]

Definiert in Zeile 16 der Datei doors.c.

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