#include "/obj/tools/roommaker/roommaker.h"
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 |
| 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 }


| 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 }

| 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 }


| 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 }


| 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 }

| 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 }

| 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 }


| 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 }

| 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 }

| 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 }
mixed* item [static] |
Definiert in Zeile 10 der Datei items.c.
Wird benutzt von DeepPrintShort(), delete_item(), delete_item2(), delete_item_really(), enter_item(), getmode(), inaugurate_master(), insert_item(), item_redisplay(), prepare_destruct(), PrintObj(), Request(), ShowInv() und Xinventory().
string* refresh [static] |
Definiert in Zeile 11 der Datei items.c.
Wird benutzt von _clone_items(), delete_item(), getmode() und item_redisplay().
1.6.3