home *** CD-ROM | disk | FTP | other *** search
-
- #include "cookback.h"
-
- #include <stdio.h>
- #include <ctype.h>
- #include <gemdefs.h>
- #include <obdefs.h>
- #include <osbind.h>
- #define TRUE 0
- #define FALSE -1
- #define PAL_ADDR 0xFF8240
- int whichone, done, tdone;
- int sndx, indx1, indx2, indx3, indx4;
- int new_count;
-
- struct index {
- char name[25];
- long offset;
- } index[200];
-
- int rec_count;
-
- struct recipe {
- char name[40];
- char serves[40];
- char class[4][40];
- struct {
- char quan[40];
- char measure[40];
- char prepare[40];
- char ingredient[40];
- } item[15];
- char directions[20][40];
- };
-
- union {
- struct recipe recipe;
- char strings[100][40];
- } d;
-
- char palsave[32];
- int swap = 0;
-
- main()
- {
- int i;
- OBJECT *cookrec;
- char *name;
- char pause, *base, *malloc(), header[128];
- long pbase;
- FILE *in;
-
- appl_init();
- done = FALSE;
- pbase = Logbase();
- graf_mouse(M_OFF, NULL);
- if (Getrez() != 2) {
- if ((in = fopen("title.dat","br")) != NULL) {
- if ((base = malloc(32512)) != NULL) {
- base = (char *) (((long) base + 511) & 0xFFFE00);
- fread(&header[0], 1, 128, in);
- fread(base, 160, 200, in);
- for (i=0; i < 32; i++)
- palsave[i] = header[i+4];
- swap_pal(palsave);
- swap = 1;
- Setscreen(-1L, -1L, 0);
- Setscreen(-1L, base, -1);
- }
- fclose(in);
- }
- }
- if (!rsrc_load("cookback.rsc")) {
- form_alert(1,"[0][Cannot find cookbook.rsc file|Terminating...][OK]");
- exit(1);
- }
- load_index();
- if (swap != 0)
- swap_pal(palsave);
- Setscreen(pbase, pbase, 1);
- graf_mouse(ARROW,NULL);
- graf_mouse(M_ON, NULL);
- do {
- rsrc_gaddr(0,MENU1,&cookrec); /* main menu */
- do_dialog(cookrec);
- switch (whichone) {
- case AF1 : rsrc_gaddr(0,INDEX1,&cookrec);
- new_count = rec_count + 1;
- for(i=1; i < 52 && i < new_count ; i++) {
- cookrec[i].ob_spec = &index[i-1].name[0];
- }
- do_dialog(cookrec);
- if (whichone > 0 && whichone < 52 && whichone < new_count && whichone != 12) {
- read_recipe(whichone - 1);
- rsrc_gaddr(0,RECIPE,&cookrec);
- put_recipe(cookrec);
- do_dialog(cookrec);
- }
- break;
- case AF2 : rsrc_gaddr(0,MENU20,&cookrec); /* F2 */
- do_dialog(cookrec);
- break;
- case AF3 : rsrc_gaddr(0,MENU4,&cookrec); /* (F3) */
- do_dialog(cookrec);
- rsrc_gaddr(0,MENU5,&cookrec);
- cookrec[RI1].ob_spec = " ";
- cookrec[RI2].ob_spec = " ";
- cookrec[RI3].ob_spec = " ";
- cookrec[RI4].ob_spec = " ";
- cookrec[RI5].ob_spec = " ";
- cookrec[RI6].ob_spec = " ";
- switch (whichone) {
- case CL1 : cookrec[RI1].ob_spec = "avocado dip";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(0); break;
-
- }
- break;
- case CL2 : cookrec[RI1].ob_spec = "beef stew";
- cookrec[RI2].ob_spec = "shish kebabs";
- cookrec[RI3].ob_spec = "beef rellenos";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(4); break;
- case RI2 : read_recipe(6); break;
- case RI3 : read_recipe(7); break;
- }
- break;
- case CL3 :
- break;
- case CL4 : cookrec[RI1].ob_spec = "baked shrimp";
- cookrec[RI2].ob_spec = "chicken cacciatore";
- cookrec[RI3].ob_spec = "duck a l'orange";
- cookrec[RI4].ob_spec = "vienna steaks";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(1); break;
- case RI2 : read_recipe(8); break;
- case RI3 : read_recipe(9); break;
- case RI4 : read_recipe(5); break;
- }
- break;
- case CL5 : cookrec[RI1].ob_spec = "duck a l'orange";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(9); break;
- }
- break;
- case CL6 :
- break;
- case CL7 : cookrec[RI1].ob_spec = "chicken cacciatore";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(8); break;
- }
- break;
- case CL8 : break;
- case CL9 : cookrec[RI1].ob_spec = "beef rellenos";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(7); break;
- }
- break;
- case CL10: cookrec[RI1].ob_spec = "chinese vegetables";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(2); break;
- }
- break;
- case CL11: cookrec[RI1].ob_spec = "scalloped potatoes";
- do_dialog(cookrec);
- switch (whichone) {
- case RI1 : read_recipe(3); break;
- }
- break;
- case CL12:
- break;
- case CL13: cookrec[RI1].ob_spec = "lemon broccoli";
- break;
- }
- if (whichone != CLESC && whichone != RIESC && whichone < new_count) {
- rsrc_gaddr(0,RECIPE,&cookrec);
- put_recipe(cookrec);
- do_dialog(cookrec);
- }
- break;
- case AF4 : rsrc_gaddr(0,MENU21,&cookrec);
- do_dialog(cookrec);
- break;
- case AF5 : rsrc_gaddr(0,MENU22,&cookrec);
- do_dialog(cookrec);
- break;
- case AF6 : tdone = FALSE;
- do {
- rsrc_gaddr(0,MENU7,&cookrec); /* (F6) */
- do_dialog(cookrec);
- switch (whichone) {
- case BF1 :rsrc_gaddr(0,MENU8,&cookrec);
- do_dialog(cookrec);
- break;
-
- case BF2 :rsrc_gaddr(0,MENU9,&cookrec);
- do_dialog(cookrec);
- break;
- case BF3 :rsrc_gaddr(0,MENU10,&cookrec);
- do_dialog(cookrec);
- break;
-
- case BF4 :rsrc_gaddr(0,MENU11,&cookrec);
- do_dialog(cookrec);
- break;
- case BESC : tdone = TRUE; break;
- } /* switch (whichone) */
- } while (tdone == FALSE);
- break;
- case AF7 : rsrc_gaddr(0,MENU23,&cookrec);
- do_dialog(cookrec);
- break;
- case 23 : done = TRUE;
- break;
- } /* switch(whichone) */
- } while (done == FALSE);
- appl_exit();
- }
-
-
- do_dialog(cookrec)
- OBJECT *cookrec;
- {
- int cx,cy,cw,ch;
- char pause;
-
- Cconws("\033E"); /* clear screen */
- form_center(cookrec,&cx,&cy,&cw,&ch);
- form_dial(FMD_START,cx,cy,cw,ch,0,0,0,0);
- objc_draw(cookrec,0,10,cx,cy,cw,ch);
- whichone = form_do(cookrec,0);
- form_dial(FMD_FINISH,cx,cy,cw,ch,0,0,0,0);
- cookrec[whichone].ob_state = 0;
- }
-
-
- load_index()
- {
- FILE *in;
- int ok, i;
- union {
- char q[4];
- long offset;
- } u;
-
- for (i = 0; i < 100; i++)
- index[i].offset = 0;
- rec_count = 0;
- if ( (in = fopen("recipe.idx", "br")) == NULL) {
- printf("\ncan't find recipe.idx\n");
- exit(0);
- }
- do {
- for(i=0; i < 25; i++)
- ok = index[rec_count].name[i] = getc(in);
- for(i=3; i >= 0; i--) {
- ok = getc(in);
- u.q[i] = ok;
- }
- index[rec_count].offset = u.offset;
- if (ok != EOF)
- rec_count++;
- } while(ok != EOF);
- fclose(in);
- }
-
- read_recipe(rec_number)
- int rec_number;
- {
- FILE *in;
- int i, p, l, b;
- char word[40];
-
- if ( (in = fopen("recipe.dat", "br")) == NULL) {
- printf("\ncan't open recipe.dat\n");
- exit(0);
- }
- fseek(in, index[rec_number].offset, 0);
- for(i=0; i < 100; i++)
- d.strings[i][0] = 0;
- i = -1; p = 0; b = 0;
- while( (l = get_string(in, word)) != EOF && b == 0) {
- if (l == 255) {
- switch(++p) {
- case 1:
- i = 29;
- break;
- case 2:
- i = 66;
- break;
- case 3:
- b = 1;
- break;
- }
- }
- else {
- strcpy(&d.strings[l+i][0], word);
- }
- }
- fclose(in);
- }
-
- get_string(in, word)
- FILE *in;
- char word[];
- {
- int type, length, c, i, q;
-
- if ( (type = getc(in)) == EOF)
- return(EOF);
- if (type == 255)
- return(255);
- if (type == 254)
- return(EOF);
- if ( (length = getc(in)) == EOF)
- return(EOF);
- i = 0;
- while ( (c = getc(in)) != EOF && i < length)
- word[i++] = c;
- word[i] = 0;
- ungetc(c, in);
- return(type);
- }
- swap_pal(new_pal)
- int new_pal[];
- {
- int i;
- int temp[16], *tt;
- long ssp;
-
- tt = (int *)PAL_ADDR;
- ssp = Super(0L);
- for (i = 0; i <16;)
- temp[i++] = *tt++;
- Super(ssp);
- Setpallete(new_pal);
- Vsync();
- for (i = 0; i < 16; i++)
- new_pal[i] = temp[i];
- }
-
- put_recipe(cookrec)
- OBJECT *cookrec;
- {
-
- cookrec[RNAME].ob_spec = &d.recipe.name[0];
- cookrec[SERVES].ob_spec = &d.recipe.serves[0];
-
- cookrec[CLASS1].ob_spec = &d.recipe.class[0][0];
- cookrec[CLASS2].ob_spec = &d.recipe.class[1][0];
- cookrec[CLASS3].ob_spec = &d.recipe.class[2][0];
- cookrec[CLASS4].ob_spec = &d.recipe.class[3][0];
-
- cookrec[Q1].ob_spec = &d.recipe.item[0].quan[0];
- cookrec[M1].ob_spec = &d.recipe.item[0].measure[0];
- cookrec[P1].ob_spec = &d.recipe.item[0].prepare[0];
- cookrec[I1].ob_spec = &d.recipe.item[0].ingredient[0];
-
- cookrec[Q2].ob_spec = &d.recipe.item[1].quan[0];
- cookrec[M2].ob_spec = &d.recipe.item[1].measure[0];
- cookrec[P2].ob_spec = &d.recipe.item[1].prepare[0];
- cookrec[I2].ob_spec = &d.recipe.item[1].ingredient[0];
-
- cookrec[Q3].ob_spec = &d.recipe.item[2].quan[0];
- cookrec[M3].ob_spec = &d.recipe.item[2].measure[0];
- cookrec[P3].ob_spec = &d.recipe.item[2].prepare[0];
- cookrec[I3].ob_spec = &d.recipe.item[2].ingredient[0];
-
- cookrec[Q4].ob_spec = &d.recipe.item[3].quan[0];
- cookrec[M4].ob_spec = &d.recipe.item[3].measure[0];
- cookrec[P4].ob_spec = &d.recipe.item[3].prepare[0];
- cookrec[I4].ob_spec = &d.recipe.item[3].ingredient[0];
-
- cookrec[Q5].ob_spec = &d.recipe.item[4].quan[0];
- cookrec[M5].ob_spec = &d.recipe.item[4].measure[0];
- cookrec[P5].ob_spec = &d.recipe.item[4].prepare[0];
- cookrec[I5].ob_spec = &d.recipe.item[4].ingredient[0];
-
- cookrec[Q6].ob_spec = &d.recipe.item[5].quan[0];
- cookrec[M6].ob_spec = &d.recipe.item[5].measure[0];
- cookrec[P6].ob_spec = &d.recipe.item[5].prepare[0];
- cookrec[I6].ob_spec = &d.recipe.item[5].ingredient[0];
-
- cookrec[Q7].ob_spec = &d.recipe.item[6].quan[0];
- cookrec[M7].ob_spec = &d.recipe.item[6].measure[0];
- cookrec[P7].ob_spec = &d.recipe.item[6].prepare[0];
- cookrec[I7].ob_spec = &d.recipe.item[6].ingredient[0];
-
- cookrec[Q8].ob_spec = &d.recipe.item[7].quan[0];
- cookrec[M8].ob_spec = &d.recipe.item[7].measure[0];
- cookrec[P8].ob_spec = &d.recipe.item[7].prepare[0];
- cookrec[I8].ob_spec = &d.recipe.item[7].ingredient[0];
-
- cookrec[Q9].ob_spec = &d.recipe.item[8].quan[0];
- cookrec[M9].ob_spec = &d.recipe.item[8].measure[0];
- cookrec[P9].ob_spec = &d.recipe.item[8].prepare[0];
- cookrec[I9].ob_spec = &d.recipe.item[8].ingredient[0];
-
- cookrec[Q10].ob_spec = &d.recipe.item[9].quan[0];
- cookrec[M10].ob_spec = &d.recipe.item[9].measure[0];
- cookrec[P10].ob_spec = &d.recipe.item[9].prepare[0];
- cookrec[I10].ob_spec = &d.recipe.item[9].ingredient[0];
-
- cookrec[Q11].ob_spec = &d.recipe.item[10].quan[0];
- cookrec[M11].ob_spec = &d.recipe.item[10].measure[0];
- cookrec[P11].ob_spec = &d.recipe.item[10].prepare[0];
- cookrec[I11].ob_spec = &d.recipe.item[10].ingredient[0];
-
- cookrec[Q12].ob_spec = &d.recipe.item[11].quan[0];
- cookrec[M12].ob_spec = &d.recipe.item[11].measure[0];
- cookrec[P12].ob_spec = &d.recipe.item[11].prepare[0];
- cookrec[I12].ob_spec = &d.recipe.item[11].ingredient[0];
-
- cookrec[Q13].ob_spec = &d.recipe.item[12].quan[0];
- cookrec[M13].ob_spec = &d.recipe.item[12].measure[0];
- cookrec[P13].ob_spec = &d.recipe.item[12].prepare[0];
- cookrec[I13].ob_spec = &d.recipe.item[12].ingredient[0];
-
- cookrec[Q14].ob_spec = &d.recipe.item[13].quan[0];
- cookrec[M14].ob_spec = &d.recipe.item[13].measure[0];
- cookrec[P14].ob_spec = &d.recipe.item[13].prepare[0];
- cookrec[I14].ob_spec = &d.recipe.item[13].ingredient[0];
-
- cookrec[Q15].ob_spec = &d.recipe.item[14].quan[0];
- cookrec[M15].ob_spec = &d.recipe.item[14].measure[0];
- cookrec[P15].ob_spec = &d.recipe.item[14].prepare[0];
- cookrec[I15].ob_spec = &d.recipe.item[14].ingredient[0];
-
-
- cookrec[S1].ob_spec = &d.recipe.directions[0][0];
- cookrec[S2].ob_spec = &d.recipe.directions[1][0];
- cookrec[S3].ob_spec = &d.recipe.directions[2][0];
- cookrec[S4].ob_spec = &d.recipe.directions[3][0];
- cookrec[S5].ob_spec = &d.recipe.directions[4][0];
- cookrec[S6].ob_spec = &d.recipe.directions[5][0];
- cookrec[S7].ob_spec = &d.recipe.directions[6][0];
- cookrec[S8].ob_spec = &d.recipe.directions[7][0];
- cookrec[S9].ob_spec = &d.recipe.directions[8][0];
- cookrec[S10].ob_spec = &d.recipe.directions[9][0];
- cookrec[S11].ob_spec = &d.recipe.directions[10][0];
- cookrec[S12].ob_spec = &d.recipe.directions[11][0];
- cookrec[S13].ob_spec = &d.recipe.directions[12][0];
- cookrec[S14].ob_spec = &d.recipe.directions[13][0];
- cookrec[S15].ob_spec = &d.recipe.directions[14][0];
- cookrec[S16].ob_spec = &d.recipe.directions[15][0];
- cookrec[S17].ob_spec = &d.recipe.directions[16][0];
- cookrec[S18].ob_spec = &d.recipe.directions[17][0];
- cookrec[S19].ob_spec = &d.recipe.directions[18][0];
- cookrec[S20].ob_spec = &d.recipe.directions[19][0];
- return(0);
- }
-
-
-
-
-
-