home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / games / gemamigo / src / viewwin.cc < prev    next >
C/C++ Source or Header  |  1994-04-28  |  2KB  |  103 lines

  1. #include "viewwin.h"
  2. #include "gamewin.h"
  3. #include <gemamigo.h>
  4. #include <gemr.h>
  5. #include <gemal.h>
  6. #include <stdio.h>
  7.  
  8. ViewWindow::ViewWindow(GEMactivity& act, GEMrsc& rsc, GameWindow* user) :
  9.     GEMformwindow(act,rsc,VIEWWIN),
  10.     viewuser(user),
  11.     popup(rsc,CHOICELIST,CHOICE1,CHOICEN,CHOICESCROLLBAR),
  12.     line_colour(*this,COL_LINE,popup),
  13.     board_colour(*this,COL_BOARD,popup),
  14.     highlight_colour(*this,COL_HIGHLIGHT,popup),
  15.     board_pattern(*this,PAT_BOARD,popup)
  16. {
  17.     SetName(rsc.String(VIEWWIN_TITLE));
  18.  
  19.     FILE* cnf=fopen("gemamigo.cnf","r");
  20.     if (cnf) {
  21.         int v;
  22.         fscanf(cnf,"%d",&v); line_colour.Choose(v);
  23.         fscanf(cnf,"%d",&v); board_colour.Choose(v);
  24.         fscanf(cnf,"%d",&v); highlight_colour.Choose(v);
  25.         fscanf(cnf,"%d",&v); board_pattern.Choose(v);
  26.         fscanf(cnf,"%d",&v);
  27.         Object(SML_STONE).Selected(v==0);
  28.         Object(MID_STONE).Selected(v==1);
  29.         Object(BIG_STONE).Selected(v==2);
  30.         GRect wpos;
  31.         fscanf(cnf,"%d %d %d %d",&wpos.g_x,&wpos.g_y,&wpos.g_w,&wpos.g_h);
  32.         viewuser->Move(wpos.g_x,wpos.g_y);
  33.         viewuser->GEMformwindow::Resize(wpos.g_w,wpos.g_h);
  34.         fscanf(cnf,"%d %d",&wpos.g_x,&wpos.g_y);
  35.         Move(wpos.g_x,wpos.g_y);
  36.         fclose(cnf);
  37.     } else {
  38.         GEMalert no_cnf(rsc,NO_CNF);
  39.         no_cnf.Alert();
  40.  
  41.         line_colour.Choose(1);
  42.         board_colour.Choose(1);
  43.         highlight_colour.Choose(0);
  44.         board_pattern.Choose(4);
  45.         Open();
  46.     }
  47. }
  48.  
  49.  
  50. GEMfeedback ViewWindow::DoItem(int item, const GEMevent& e)
  51. {
  52.     switch (item) {
  53.      case BIG_STONE:
  54.         ;
  55.     break; case MID_STONE:
  56.         ;
  57.     break; case SML_STONE:
  58.         ;
  59.     break; case VIEW_SAVE:
  60.         FILE* cnf=fopen("gemamigo.cnf","w");
  61.         fprintf(cnf,"%d\n",LineColour());
  62.         fprintf(cnf,"%d\n",BoardColour());
  63.         fprintf(cnf,"%d\n",HighlightColour());
  64.         fprintf(cnf,"%d\n",BoardPattern());
  65.         fprintf(cnf,"%d\n",StoneSize());
  66.         GRect wpos=viewuser->BorderRect();
  67.         fprintf(cnf,"%d %d %d %d\n",wpos.g_x,wpos.g_y,wpos.g_w,wpos.g_h);
  68.         wpos=BorderRect();
  69.         fprintf(cnf,"%d %d\n",wpos.g_x,wpos.g_y);
  70.         fclose(cnf);
  71.     break; default:
  72.         GEMformwindow::DoItem(item,e);
  73.         bool recog=FALSE;
  74.         while (item && !recog) {
  75.             recog=TRUE;
  76.             switch (item) {
  77.              case COL_LINE:
  78.                 ;
  79.             break; case COL_BOARD:
  80.                 ;
  81.             break; case COL_HIGHLIGHT:
  82.                 ;
  83.             break; case PAT_BOARD:
  84.                 ;
  85.             break; default:
  86.                 recog=FALSE;
  87.                 item=Parent(item);
  88.             }
  89.         }
  90.     }
  91.     viewuser->ViewChanged();
  92.  
  93.     return ContinueInteraction;
  94. }
  95.  
  96. int ViewWindow::StoneSize() const
  97. {
  98.     if (Object(SML_STONE).Selected()) return 0;
  99.     if (Object(MID_STONE).Selected()) return 1;
  100.     if (Object(BIG_STONE).Selected()) return 2;
  101.     return 0;
  102. }
  103.