diff options
Diffstat (limited to 'engines/avalanche/oldfiler.cpp')
-rw-r--r-- | engines/avalanche/oldfiler.cpp | 453 |
1 files changed, 250 insertions, 203 deletions
diff --git a/engines/avalanche/oldfiler.cpp b/engines/avalanche/oldfiler.cpp index c813f37648..581f68abfb 100644 --- a/engines/avalanche/oldfiler.cpp +++ b/engines/avalanche/oldfiler.cpp @@ -11,7 +11,7 @@ * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License @@ -34,251 +34,298 @@ namespace Avalanche { const char more[] = " (more) "; -const string up = string('-')+'\30'+more+'\30'; -const string down = string('+')+'\31'+more+'\31'; +const string up = string('-') + '\30' + more + '\30'; +const string down = string('+') + '\31' + more + '\31'; const graphcursmasktype fletch = /* Mask 4 in Avalot */ - {( - (255,511,1023,2047,1023,4607,14591,31871,65031,65283,65281,65280,65280,65409,65473,65511), - (0,10240,20480,24576,26624,17408,512,256,128,88,32,86,72,20,16,0)), - 0, - 0}; +{ + ( + (255, 511, 1023, 2047, 1023, 4607, 14591, 31871, 65031, 65283, 65281, 65280, 65280, 65409, 65473, 65511), + (0, 10240, 20480, 24576, 26624, 17408, 512, 256, 128, 88, 32, 86, 72, 20, 16, 0)), + 0, + 0 +}; string cdir; -matrix<0,2,1,18,varying_string<15> > info; -matrix<0,2,1,100,varying_string<15> > possible; +matrix<0, 2, 1, 18, varying_string<15> > info; +matrix<0, 2, 1, 100, varying_string<15> > possible; byte fv; -array<0,2,byte> light,page_; -array<0,2,boolean> blank; -byte chtcode,where; +array<0, 2, byte> light, page_; +array<0, 2, boolean> blank; +byte chtcode, where; string answer; -void split(string x) -{ - byte fv; -; - x=copy(x,4,255); if (x=="") {; blank[0]=true; return; } - x=x+'\\'; possible[0][1]="b\\"; fv=2; - while (pos("\\",x)!=0) - {; - possible[0][fv]=string('b')+copy(x,1,pos("\\",x)-1); fv += 1; - x=copy(x,pos("\\",x)+1,255); - } - possible[0][fv-1]=""; +void split(string x) { + byte fv; + ; + x = copy(x, 4, 255); + if (x == "") { + ; + blank[0] = true; + return; + } + x = x + '\\'; + possible[0][1] = "b\\"; + fv = 2; + while (pos("\\", x) != 0) { + ; + possible[0][fv] = string('b') + copy(x, 1, pos("\\", x) - 1); + fv += 1; + x = copy(x, pos("\\", x) + 1, 255); + } + possible[0][fv - 1] = ""; } -void block(integer x1,integer y1,integer x2,integer y2, string x) -{; - bar(x1,y1,x2,y2); - setcolor( 9); outtextxy(x1+(x2-x1) / 2-1,y1+5,x); - setcolor(15); outtextxy(x1+(x2-x1) / 2+1,y1+6,x); +void block(integer x1, integer y1, integer x2, integer y2, string x) { + ; + bar(x1, y1, x2, y2); + setcolor(9); + outtextxy(x1 + (x2 - x1) / 2 - 1, y1 + 5, x); + setcolor(15); + outtextxy(x1 + (x2 - x1) / 2 + 1, y1 + 6, x); } -void message(string x) -{; - block(5,189,640,200,x); +void message(string x) { + ; + block(5, 189, 640, 200, x); } -void bigbar(byte x) -{; - bar(15+210*x,36,210+210*x,187); +void bigbar(byte x) { + ; + bar(15 + 210 * x, 36, 210 + 210 * x, 187); } void getem(); -static void sub_getem(char prefix, string spec, byte attrib,byte infonum) -{ - searchrec s; byte fv; -; - fv=0; - findfirst(spec,attrib,s); - while ((doserror==0) && (fv<100)) - {; - if (((s.attr & attrib)>0) && (s.name[1]!='.')) - {; /* circumvent inclusive searching! */ - fv += 1; - possible[infonum][fv]=string(prefix)+s.name; - } - findnext(s); - } - if (fv==0) blank[infonum]=true; +static void sub_getem(char prefix, string spec, byte attrib, byte infonum) { + searchrec s; + byte fv; + ; + fv = 0; + findfirst(spec, attrib, s); + while ((doserror == 0) && (fv < 100)) { + ; + if (((s.attr & attrib) > 0) && (s.name[1] != '.')) { + ; /* circumvent inclusive searching! */ + fv += 1; + possible[infonum][fv] = string(prefix) + s.name; + } + findnext(s); + } + if (fv == 0) blank[infonum] = true; } void getem() -{; - message("Please wait... scanning directory..."); - sub_getem('a',"*.asg",archive+hidden,1); /* Scan for .ASG files */ - sub_getem('f',"*.*",directory,2); /* Scan for sub-directories */ +{ + ; + message("Please wait... scanning directory..."); + sub_getem('a', "*.asg", archive + hidden, 1); /* Scan for .ASG files */ + sub_getem('f', "*.*", directory, 2); /* Scan for sub-directories */ } -void minisc(string& x) /* Converts to lower-case */ -{ - byte fv; -; - for( fv=1; fv <= length(x); fv ++) - if ((x[fv]>='A') && (x[fv]<='Z')) x[fv] += 32; +void minisc(string &x) { /* Converts to lower-case */ + byte fv; + ; + for (fv = 1; fv <= length(x); fv ++) + if ((x[fv] >= 'A') && (x[fv] <= 'Z')) x[fv] += 32; } -void showall() -{ - byte fv,ff; -; - for( fv=0; fv <= 2; fv ++) - {; - bigbar(fv); /* blank out anything else */ - if (blank[fv]) - {; /* nothing here at all */ -/* setcolor(14); - outtextxy(113+210*fv,43,'(Nothing here!)'); */ - setcolor(14); settextstyle(0,0,2); - outtextxy(113+210*fv, 77,"Nothing"); - outtextxy(113+210*fv,100,"here!"); - settextstyle(0,0,1); - } else - {; /* something here- what? */ - setcolor(11); - for( ff=0; ff <= 15; ff ++) - {; - info[fv][ff+2]=possible[fv][page_[fv]*15+ff+1]; minisc(info[fv][ff+2]); - } - if (page_[fv]>0) info[fv][1]=up; else info[fv][1]=""; - if (possible[fv][page_[fv]*15+17]!="") - info[fv][18]=down; else info[fv][18]=""; - for( ff=1; ff <= 18; ff ++) - {; - outtextxy(113+210*fv,35+ff*8,copy(info[fv][ff],2,255)); - } - } - } - block(5,12,640,22,cdir); +void showall() { + byte fv, ff; + ; + for (fv = 0; fv <= 2; fv ++) { + ; + bigbar(fv); /* blank out anything else */ + if (blank[fv]) { + ; /* nothing here at all */ + /* setcolor(14); + outtextxy(113+210*fv,43,'(Nothing here!)'); */ + setcolor(14); + settextstyle(0, 0, 2); + outtextxy(113 + 210 * fv, 77, "Nothing"); + outtextxy(113 + 210 * fv, 100, "here!"); + settextstyle(0, 0, 1); + } else { + ; /* something here- what? */ + setcolor(11); + for (ff = 0; ff <= 15; ff ++) { + ; + info[fv][ff + 2] = possible[fv][page_[fv] * 15 + ff + 1]; + minisc(info[fv][ff + 2]); + } + if (page_[fv] > 0) info[fv][1] = up; + else info[fv][1] = ""; + if (possible[fv][page_[fv] * 15 + 17] != "") + info[fv][18] = down; + else info[fv][18] = ""; + for (ff = 1; ff <= 18; ff ++) { + ; + outtextxy(113 + 210 * fv, 35 + ff * 8, copy(info[fv][ff], 2, 255)); + } + } + } + block(5, 12, 640, 22, cdir); } -void changedir(string x) -{; +void changedir(string x) { + ; - chdir(x); getdir(0,cdir); + chdir(x); + getdir(0, cdir); } -void drawup() -{ - integer gd; -; - block( 15, 0,630,10,"Choose an .ASG file to load or save."); - block( 15,24,210,34,"Looking back:"); - block(225,24,420,34,"Here:"); - block(435,24,630,34,"Looking forwards:"); - for( gd=0; gd <= 2; gd ++) bigbar(gd); /* just to tide us over the wait... */ - showall(); +void drawup() { + integer gd; + ; + block(15, 0, 630, 10, "Choose an .ASG file to load or save."); + block(15, 24, 210, 34, "Looking back:"); + block(225, 24, 420, 34, "Here:"); + block(435, 24, 630, 34, "Looking forwards:"); + for (gd = 0; gd <= 2; gd ++) bigbar(gd); /* just to tide us over the wait... */ + showall(); } -void setup() -{; - settextjustify(1,1); setfillstyle(1,1); - fillchar(blank,sizeof(blank),'\0'); fillchar( info,sizeof( info),'\0'); - fillchar(possible,sizeof(possible),'\0'); - fillchar( page_,sizeof( page_),'\0'); - split(cdir); getem(); drawup(); +void setup() { + ; + settextjustify(1, 1); + setfillstyle(1, 1); + fillchar(blank, sizeof(blank), '\0'); + fillchar(info, sizeof(info), '\0'); + fillchar(possible, sizeof(possible), '\0'); + fillchar(page_, sizeof(page_), '\0'); + split(cdir); + getem(); + drawup(); } -void setup1() -{ - integer gd,gm; -; - gd=3; gm=0; initgraph(gd,gm,""); answer=""; - getdir(0,cdir); resetmouse; setgraphicscursor(fletch); - fillchar(light,sizeof(light),'\0'); - setup(); +void setup1() { + integer gd, gm; + ; + gd = 3; + gm = 0; + initgraph(gd, gm, ""); + answer = ""; + getdir(0, cdir); + resetmouse; + setgraphicscursor(fletch); + fillchar(light, sizeof(light), '\0'); + setup(); } -void clickwait() -{ - const array<1,4,varying_string<30> > msg = - {{"change to another drive.", - "return to a lower directory.", - "use the file named.", - "enter a sub-directory."}}; - byte oldcht; /* Click Here To... code */ -; - showmousecursor; oldcht=177; - do { - if (mousey<38) chtcode=1; else - switch (mousex) { - case 0 ... 210: chtcode=2; break; - case 211 ... 421: chtcode=3; break; - default: chtcode=4; - } - if (oldcht!=chtcode) - {; - hidemousecursor; message(string("Click here to ")+msg[chtcode]); - showmousecursor; oldcht=chtcode; - } - } while (!leftmousekeypressed); - hidemousecursor; where=((mousey-39) / 8)+1; +void clickwait() { + const array<1, 4, varying_string<30> > msg = { + { + "change to another drive.", + "return to a lower directory.", + "use the file named.", + "enter a sub-directory." + } + }; + byte oldcht; /* Click Here To... code */ + ; + showmousecursor; + oldcht = 177; + do { + if (mousey < 38) chtcode = 1; + else + switch (mousex) { + case 0 ... 210: + chtcode = 2; + break; + case 211 ... 421: + chtcode = 3; + break; + default: + chtcode = 4; + } + if (oldcht != chtcode) { + ; + hidemousecursor; + message(string("Click here to ") + msg[chtcode]); + showmousecursor; + oldcht = chtcode; + } + } while (!leftmousekeypressed); + hidemousecursor; + where = ((mousey - 39) / 8) + 1; } -void blip() -{; - sound(32); delay(3); nosound; +void blip() { + ; + sound(32); + delay(3); + nosound; } -void do_cht() -{ - char r; byte fv; string x; -; - if (chtcode==1) - {; /* change drives */ - message("Enter the drive letter (e.g. A)..."); - r=readkey(); - changedir(string(r)+':'); setup(); - } else - {; - x=info[chtcode-2][where]; r=x[1]; x=copy(x,2,255); - switch (r) { - case 'b': {; /* back some dirs */ - if (x=='\\') x=""; - for( fv=where-1; fv >= 3; fv --) - x=copy(info[0][fv],2,255)+'\\'+x; - changedir(string('\\')+x); - setup(); - } - break; - case 'f': {; /* sub-directory */ - changedir(x); - setup(); - } - break; - case '+': {; /* scroll one panel down */ - page_[chtcode-2] += 1; - drawup(); - } - break; - case '-': {; /* scroll one panel up */ - page_[chtcode-2] -= 1; - drawup(); - } - break; - case 'a': answer=x; break; - } - } +void do_cht() { + char r; + byte fv; + string x; + ; + if (chtcode == 1) { + ; /* change drives */ + message("Enter the drive letter (e.g. A)..."); + r = readkey(); + changedir(string(r) + ':'); + setup(); + } else { + ; + x = info[chtcode - 2][where]; + r = x[1]; + x = copy(x, 2, 255); + switch (r) { + case 'b': { + ; /* back some dirs */ + if (x == '\\') x = ""; + for (fv = where - 1; fv >= 3; fv --) + x = copy(info[0][fv], 2, 255) + '\\' + x; + changedir(string('\\') + x); + setup(); + } + break; + case 'f': { + ; /* sub-directory */ + changedir(x); + setup(); + } + break; + case '+': { + ; /* scroll one panel down */ + page_[chtcode - 2] += 1; + drawup(); + } + break; + case '-': { + ; /* scroll one panel up */ + page_[chtcode - 2] -= 1; + drawup(); + } + break; + case 'a': + answer = x; + break; + } + } } -int main(int argc, const char* argv[]) -{pio_initialize(argc, argv); -; - setup1(); - do { - clickwait(); - do_cht(); - } while (!(answer!="")); - if (length(cdir)>3) cdir=cdir+'\\'; - answer=cdir+answer; - closegraph(); - output << "Routine completed." << NL; - output << "Answer: " << answer << NL; - output << "Hit Enter:"; input >> NL; -return EXIT_SUCCESS; +int main(int argc, const char *argv[]) { + pio_initialize(argc, argv); + ; + setup1(); + do { + clickwait(); + do_cht(); + } while (!(answer != "")); + if (length(cdir) > 3) cdir = cdir + '\\'; + answer = cdir + answer; + closegraph(); + output << "Routine completed." << NL; + output << "Answer: " << answer << NL; + output << "Hit Enter:"; + input >> NL; + return EXIT_SUCCESS; } } // End of namespace Avalanche.
\ No newline at end of file |