#include <properties.h>#include <language.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | TP this_player() |
| #define | TPN this_player()->name() |
Funktionen | |
| int | getseitzahl () |
| void | create () |
| static int | oeffne () |
| static int | schliesse () |
| static int | blaettere (string str) |
| string | buchinfo () |
| string | buchdir () |
| void | zeige_seite (string file, status clear) |
| string | find_file (string dir, string file, int page) |
| string | find_page (string dir, string file, int page) |
| string | find_page_noascii (string dir, string file, int page, status noascii) |
| void | lesseite (int seite) |
| void | lesbuch () |
| void | titel () |
| static int | lies (string str) |
Variablen | |
| inherit std | thing |
| int | offen = 0 |
| int | seite = 0 |
| #define TPN this_player()->name() |
Definiert in Zeile 12 der Datei buch.c.
Wird benutzt von blaettere(), lesbuch(), lies(), oeffne() und schliesse().
| static int blaettere | ( | string | str | ) | [static] |
Definiert in Zeile 61 der Datei buch.c.
Benutzt getseitzahl(), offen, seite und TPN.
00061 { 00062 if (!offen || !stringp(str)) return 0; 00063 int zu_seite; 00064 if (sscanf(str,"zu seite %d",zu_seite)!=1) return 0; 00065 int seitenzahl = getseitzahl(); 00066 if (zu_seite < 1 || zu_seite > seitenzahl) return 0; 00067 write("Du blaetterst zu Seite "+zu_seite+".\n"); 00068 say(TPN + "blaettert in einem Buch.\n"); 00069 seite=zu_seite; 00070 return 1; 00071 }

| string buchdir | ( | ) |
Definiert in Zeile 82 der Datei buch.c.
Wird benutzt von lesseite().

| string buchinfo | ( | ) |
| void create | ( | ) |
Definiert in Zeile 19 der Datei buch.c.
Benutzt AddCmd(), AddId(), create(), NEUTER, P_GENDER, P_LONG, P_NAME, P_NOBUY, P_SHORT, P_WEIGHT und SetProp().
00019 { 00020 if (!clonep(this_object())) return; 00021 ::create(); 00022 SetProp(P_SHORT, "Ein Buch"); 00023 SetProp(P_LONG, 00024 "Du haelst ein leinengebundenes Buch in Deinen Haenden. Der Titel heisst:\n"+ 00025 "@@buchinfo@@.\n"); 00026 SetProp(P_NAME,"Buch"); 00027 AddId("buch"); 00028 SetProp(P_GENDER, NEUTER); 00029 SetProp(P_WEIGHT,80); 00030 SetProp(P_NOBUY, 1); 00031 AddCmd("lies|lese&@ID", "lies", "Was willst Du lesen ? Syntax: LIES <ETWAS>.\n"); 00032 AddCmd("oeffne&@ID","oeffne","Was willst Du oeffnen?"); 00033 AddCmd("schliesse|schliess@ID","schliesse","Was willst Du schliessen?"); 00034 AddCmd("blaettere","blaettere"); 00035 }

| string find_file | ( | string | dir, | |
| string | file, | |||
| int | page | |||
| ) |
Definiert in Zeile 115 der Datei buch.c.
Wird benutzt von clone(), find_page(), load(), soft_update_object() und update_object().
00115 { 00116 string filename=dir+file+(page? (page<10 ? "0"+page : page ) : ""); 00117 if (file_size(filename)>=0) return filename; 00118 filename=dir+file+(page? page : ""); 00119 if (file_size(filename)>=0) return filename; 00120 return 0; 00121 }

| string find_page | ( | string | dir, | |
| string | file, | |||
| int | page | |||
| ) |
Definiert in Zeile 124 der Datei buch.c.
Benutzt find_file() und seite.
Wird benutzt von find_page_noascii().
00124 { 00125 string filename=find_file(dir,file,page); 00126 // eigentlich nur ungerade seiten gefordert 00127 if (!filename && seite%2==0) { 00128 return find_file(dir,file,page+1); 00129 } 00130 return filename; 00131 }


| string find_page_noascii | ( | string | dir, | |
| string | file, | |||
| int | page, | |||
| status | noascii | |||
| ) |
Definiert in Zeile 136 der Datei buch.c.
Benutzt find_page().
Wird benutzt von lesseite().
00136 { 00137 if (noascii) { 00138 string noascii_dir=dir[..<2]+"_noascii/"; 00139 if (file_size(noascii_dir)==-2) { 00140 string filename=find_page(noascii_dir,file,page); 00141 if (stringp(filename)) { 00142 noascii=0; 00143 return filename; 00144 } 00145 } 00146 } 00147 return find_page(dir,file,page); 00148 }


| int getseitzahl | ( | ) |
Definiert in Zeile 78 der Datei buch.c.
Wird benutzt von blaettere() und lesbuch().

| void lesbuch | ( | ) |
Definiert in Zeile 163 der Datei buch.c.
Benutzt getseitzahl(), lesseite(), offen, seite, TP und TPN.
Wird benutzt von lies().
00163 { 00164 lesseite(seite); 00165 seite+=2; 00166 if (seite > getseitzahl()) { 00167 offen=0; 00168 seite=0; 00169 write("Du hast das Buch ausgelesen und schliesst es.\n"); 00170 say(TPN + " hat ein Buch ausgelesen und schliesst es.\n",TP); 00171 } else { 00172 write("Du blaetterst um.\n"); 00173 say(TPN + " blaettert um.\n",TP); 00174 } 00175 }


| void lesseite | ( | int | seite | ) |
Definiert in Zeile 150 der Datei buch.c.
Benutzt buchdir(), find_page_noascii(), P_NO_ASCII_ART, TP und zeige_seite().
Wird benutzt von lesbuch() und titel().
00150 { 00151 string dir=buchdir(); 00152 status noascii=0; 00153 if (TP->QueryProp(P_NO_ASCII_ART)) { 00154 noascii=1; 00155 } 00156 string buch_file=find_page_noascii(dir,seite ? "seite" : "titel",seite,&noascii); 00157 if (!buch_file) { 00158 write("Buchdaten nicht gefunden!\n"); 00159 return; 00160 } 00161 zeige_seite(buch_file,noascii); 00162 }


| static int lies | ( | string | str | ) | [static] |
Definiert in Zeile 181 der Datei buch.c.
Benutzt lesbuch(), notify_fail(), offen, titel(), TP und TPN.
00181 { 00182 string was; 00183 notify_fail("Zu welcher Seite willst Du blaettern?\n"); 00184 if(!str) return 0; 00185 if(sscanf(str,"%s",was)!=1) return 0; 00186 if (!id(str)) return 0; 00187 say(TPN + " liest in einem Buch.\n",TP); 00188 if (offen) { 00189 lesbuch(); 00190 } else { 00191 titel(); 00192 } 00193 return 1; 00194 }

| void titel | ( | ) |
| void zeige_seite | ( | string | file, | |
| status | clear | |||
| ) |
Definiert in Zeile 88 der Datei buch.c.
Benutzt count, i, len, lines, pages, text() und TP.
Wird benutzt von lesseite().
00088 { 00089 if (!clear) { 00090 TP->more(file,1); 00091 return; 00092 } 00093 string text=read_file(file); 00094 if (!stringp(text)) return; 00095 00096 string* pages=({"",""}); 00097 string* lines=explode(text,"\n"); 00098 int len, count=sizeof(lines)-1; 00099 string line; 00100 00101 for (int i=1;i<count;i++) { 00102 line=lines[i]; 00103 len=strlen(line); 00104 if (len>50) { 00105 pages[0]+=line[1..len/2-2]+"\n"; 00106 pages[1]+=line[len/2+2..<2]+"\n"; 00107 } 00108 else 00109 pages[0]+=line[1..<2]+"\n"; 00110 } 00111 TP->More((pages[0]+pages[1])); 00112 }


| int offen = 0 |
Definiert in Zeile 14 der Datei buch.c.
Wird benutzt von blaettere(), lesbuch(), lies(), oeffne() und schliesse().
| int seite = 0 |
Definiert in Zeile 15 der Datei buch.c.
Wird benutzt von blaettere(), find_page(), lesbuch(), lies(), oeffne() und schliesse().
1.6.3