items.c-Dateireferenz

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

gehe zum Quellcode dieser Datei

Funktionen

mixed SetProp (string label, mixed arg)
static void enter_item ()
static void item_redisplay ()
static void gotogetmode ()
static void insert_item (string str)
static void getmode (string str)
static void delete_item ()
static void delete_item_really (int number)
static void delete_item2 (string str)
static void goto_delete_item ()

Variablen

static mixed * item
static string * refresh

Dokumentation der Funktionen

static void delete_item (  )  [static]

Definiert in Zeile 167 der Datei items.c.

Benutzt i, input_to(), item, QueryLabel() und refresh.

Wird benutzt von goto_delete_item().

00168 {
00169   int i;
00170   if(!sizeof(item[0]))
00171   {
00172 
00173     write("No items are given.\n");
00174     return (void)call_other(this_object(),QueryLabel("delete_return"));
00175   }
00176   if(sizeof(item[0]) == 1) write("This item is");
00177   else write("These items are");
00178   write(" given:\n");
00179   for(i=0;i<sizeof(item[0]);i++)
00180       write((i+1) + ". " + item[0][i] + " ... " + refresh[item[1][0]] + "\n");
00181   write("Which exit should be deleted?\n");
00182   input_to("delete_item2");
00183 }

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

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

static void delete_item2 ( string  str  )  [static]

Definiert in Zeile 199 der Datei items.c.

Benutzt delete_item_really(), item, member_array() und QueryLabel().

00200 {
00201   int number;                   /* number of the given item */
00202   if(sscanf(str,"%d",number) && number <= sizeof(item[0]))
00203   {
00204     delete_item_really(number-1);
00205     return (void)call_other(this_object(),QueryLabel("delete_return"));
00206   }
00207   number = (member_array(str,item[0]));
00208   if(number == -1)
00209   {
00210     write("There is no item named " + str + "!\n");
00211     return (void)call_other(this_object(),QueryLabel("delete_return"));
00212   }
00213   delete_item_really(number);
00214   return (void)call_other(this_object(),QueryLabel("delete_return"));
00215 }

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

static void delete_item_really ( int  number  )  [static]

Definiert in Zeile 187 der Datei items.c.

Benutzt item, QueryLabel() und SetLabel().

Wird benutzt von delete_item2().

00188 {
00189   write("Deleting " + item[0][number] + " ...\n");
00190   SetLabel("deleted_item",({item[0][number],item[1][number]}));
00191   item[0] = item[0][0..number-1] + item[0][number+1..sizeof(item[0])-1];
00192   item[1] = item[1][0..number-1] + item[1][number+1..sizeof(item[1])-1];
00193   if(QueryLabel("delete_return") == "gotogetstring")
00194     SetLabel("prompt","Item #" + (sizeof(item[0])+1) + ": ");
00195 }

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

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

static void enter_item (  )  [static]

Definiert in Zeile 17 der Datei items.c.

Benutzt gotogetstring(), item und SetLabel().

Wird benutzt von getmode().

00018 {
00019   SetLabel("prompt","Item #" + (sizeof(item[0])+1) + ": ");
00020   SetLabel("nostring","");
00021   SetLabel("show_file","show_file_string");
00022   SetLabel("ready","gotomenu");
00023   SetLabel("undo","gotomenu");
00024   SetLabel("redisplay","item_redisplay");
00025   SetLabel("delete","delete_item");
00026   SetLabel("save_file","normal_save_string");
00027   SetLabel("insert_string","insert_item");
00028   SetLabel("delete_return","gotogetstring");
00029   write("Please enter the path of the item (help with \"~h\")!\n");
00030   gotogetstring();
00031 }

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

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

static void getmode ( string  str  )  [static]

Definiert in Zeile 62 der Datei items.c.

Benutzt abort(), enter_item(), file_print(), help, i, input_to(), item, P_NAME, QueryFile(), QueryProp(), refresh, SetLabel() und SetProp().

00063 {
00064   int i;
00065   if(str[0..1] == "~!")
00066   {
00067     if(str[2..-1] == "")
00068     {
00069       SetLabel("nextfun","gotogetmode");
00070       write("You interrupt to make " + QueryFile() +
00071          "\nRestart with \"~m\".\n");
00072       say(this_player()->QueryProp(P_NAME) + " interupts to write a file.\n");
00073       SetProp("making",1);
00074       return;
00075     }
00076     this_player()->command_me(str[2..-1]);
00077     write("Refresh: ");
00078     input_to("getmode");
00079     return;
00080   }
00081   switch(str) {
00082   case "":
00083   {
00084     write("Refresh mode is now NONE.\n");
00085     return enter_item();
00086   }
00087   case "~q": return abort();
00088   case "~h":
00089   {
00090     write(help() +
00091 "1 ....... no refresh                 2 ....... refresh on reset if item was\n"+
00092 "3 ....... refresh on reset if item             destructed\n" +
00093 "          was removed from room      4 ....... refresh every reset\nRefresh: ")
00094 ;
00095     input_to("getmode");
00096     return;
00097   }
00098   case "~f":
00099   {
00100     write(file_print() + "Refresh: ");
00101     input_to("getmode");
00102     return;
00103   }
00104   case "~u":
00105   {
00106     write("Remove " + item[0][sizeof(item[0])-1] + "\n");
00107     item[0] = item[0][0..sizeof(item[0])-2];
00108     item[1] = item[1][0..sizeof(item[1])-2];
00109     return enter_item();
00110   }
00111   case  ".":
00112   {
00113     write("Refresh mode is now NONE.\n");
00114     return enter_item();
00115   }
00116   case "**":
00117   {
00118     write("Refresh mode is now NONE.\n");
00119     return enter_item();
00120   }
00121   case "~r":
00122   {
00123     for(i=0;i<sizeof(item[0]);i++)
00124       write(item[0][i] + " ... " + refresh[item[0][i]] + "\n");
00125     write("Refresh: ");
00126     input_to("getmode");
00127     return;
00128   }
00129   case "~d":
00130   {
00131     write("Remove " + item[0][sizeof(item[0])-1] + "\n");
00132     item[0] = item[0][0..sizeof(item[0])-2];
00133     item[1] = item[1][0..sizeof(item[1])-2];
00134     return enter_item();
00135   }
00136   case "~s":
00137   {
00138     write(file_print()
00139           + "Do you want to save this file " + QueryFile() + "? (y/n) ");
00140     SetLabel("nextfun","gotogetmode");
00141     input_to("filewrite");
00142     return;
00143   }
00144   /* end switch */ }
00145   if(str == "none" || str == "0" || str == "1") return enter_item();
00146   if(str == "destruct" || str == "2")
00147   {
00148     item[1][sizeof(item[0])-1] = 1;
00149     return enter_item();
00150   }
00151   if(str == "remove" || str == "3")
00152   {
00153     item[1][sizeof(item[0])-1] = 2;
00154     return enter_item();
00155   }
00156   if(str == "always" || str == "4")
00157   {
00158     item[1][sizeof(item[0])-1] = 3;
00159     return enter_item();
00160   }
00161   write("ERROR: don't understand! Please enter again: (Help with \"~h\")\n" +
00162      "Refresh: ");
00163   input_to("getmode");
00164 }

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

static void goto_delete_item (  )  [static]

Definiert in Zeile 217 der Datei items.c.

Benutzt delete_item() und SetLabel().

00218 {
00219   SetLabel("delete_return","gotomenu");
00220   delete_item();
00221 }

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

static void gotogetmode (  )  [static]

Definiert in Zeile 49 der Datei items.c.

Benutzt input_to().

Wird benutzt von insert_item().

00050 {
00051   write("Refresh: ");
00052   input_to("getmode");
00053 }

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

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

static void insert_item ( string  str  )  [static]

Definiert in Zeile 55 der Datei items.c.

Benutzt gotogetmode() und item.

00056 {
00057   item[0] += ({str});
00058   item[1] += ({0});
00059   gotogetmode();
00060 }

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

static void item_redisplay (  )  [static]

Definiert in Zeile 33 der Datei items.c.

Benutzt gotogetstring(), i, item und refresh.

00034 {
00035   int i;
00036   if(!sizeof(item[0]))
00037   {
00038     write("No items are given.\n");
00039     return gotogetstring();
00040   }
00041   if(sizeof(item[0]) == 1) write("This item is");
00042   else write("These items are");
00043   write(" given:\n");
00044   for(i=0;i<sizeof(item[0]);i++)
00045     write(item[0][i] + " ... " + refresh[item[1][i]] + "\n");
00046   gotogetstring();
00047 }

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

mixed SetProp ( string  label,
mixed  arg 
)

Definiert in Zeile 144 der Datei properties.c.

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 }


Variablen-Dokumentation

mixed* item [static]
string* refresh [static]

Definiert in Zeile 11 der Datei items.c.

Wird benutzt von _clone_items(), delete_item(), getmode() und item_redisplay().

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