home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume13 / dominion / part28 / help.c < prev    next >
C/C++ Source or Header  |  1992-02-11  |  3KB  |  137 lines

  1.   /* help.c -- help system (for now quite primitive) */
  2.  
  3. /*
  4.  * Copyright (C) 1990 Free Software Foundation, Inc.
  5.  * Written by the dominion project.
  6.  *
  7.  * This file is part of dominion.
  8.  *
  9.  * dominion is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License as published
  11.  * by the Free Software Foundation; either version 1, or (at your option)
  12.  * any later version.
  13.  *
  14.  * This software is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this software; see the file COPYING.  If not, write to
  21.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  22.  */
  23.  
  24. #include "dominion.h"
  25. #include "cur_stuff.h"
  26. #include <stdio.h>
  27.  
  28. extern Suser user;
  29. extern char help_tag[];
  30. WINDOW *helpw;
  31. int help_win_len;
  32.  
  33. start_help_win()
  34. {
  35.   helpw = newwin(LINES-2, COLS, 0, 0);
  36.   wrefresh(helpw);
  37.   help_win_len = LINES-2;
  38. }
  39.  
  40. show_help()
  41. {
  42.   char filename[100];
  43.   int done = 0;
  44.   
  45.   statline2("[r]eference card, [l]ong help, or [i]nfo? ", "help");
  46.   switch (getchar()) {
  47.   case 'r':
  48.     show_file(REF_CARD_FILE);
  49.     break;
  50.   case 'l':
  51.     show_file(INFO_FILE);
  52.     break;
  53.   case 'i':            /* info browsing */
  54.     strcpy(help_tag, "Top");
  55.     online_info();
  56.     break;
  57.   default:
  58.     break;
  59.   }
  60.   statline2("", "");
  61. }
  62.  
  63. end_help_win()
  64. {
  65.   delwin(helpw);
  66.   touchwin(stdscr); 
  67. /*  touch_all_wins(); */
  68. }
  69.  
  70.   /* a simple pager */
  71. show_file(name)
  72.      char name[];
  73. {
  74.   FILE *fp, *fopen();
  75.   int lines, i;
  76.   char helpline[200], menu_item[80];
  77.   long pos = 0, old_pos = 0;
  78.  
  79.   start_help_win();        /* initialize the window we use here */
  80.   statline2("", "");
  81.   if ((fp = fopen(name, "r")) == NULL) {
  82.     statline2("file was", name);
  83.     statline("type spece to return", "cannot open file");
  84.     get_space();
  85.     return;
  86.   }
  87.   wclear(helpw);
  88.   lines = 0;
  89.   while (fgets(helpline, 180, fp) != NULL) {
  90.     helpline[78] = '\0';
  91.     mvwaddstr(helpw, lines, 0, helpline);
  92.     wclrtoeol(helpw);
  93.     wrefresh(helpw);
  94.     ++lines;
  95.     if (lines % (help_win_len) == 0) { /* next page? */
  96.       wclrtobot(helpw);
  97.       wrefresh(helpw);
  98.       lines = 0;
  99.       statline("type SPACE to continue, [q] to leave this file", name);
  100.       /*      while (((c = getch()) != ' ') && (c != 'q'))
  101.           {}*/
  102.       switch (getch()) {
  103.       case 'q':            /* done with this file */
  104.     fclose(fp);
  105.     return;
  106.     break;
  107.       case 'f':            /* skip some lines */
  108.     for (i = 0; i < 44 && fgets(helpline, 180, fp); ++i) {
  109.     }
  110.     break;
  111.       case ' ':
  112.     break;
  113.       default:
  114.     break;
  115.       }
  116.       wmove(helpw, 0, 0);
  117.     }
  118.   }
  119. /*  statline("type space to continue", name);
  120.   get_space();
  121. */
  122. /*  wclrtobot(helpw);
  123.   end_help_win();*/        /* close up the window */
  124.   fclose(fp);
  125. }
  126.  
  127.   /* runs the online curses info browser,
  128.      using the global variable help_tag
  129.    */
  130. online_info()
  131. {
  132.   cinfo(INFO_FILE, help_tag);
  133.   user.just_moved = 1;
  134.   touchwin(stdscr);
  135.   user.just_moved = 1;
  136. }
  137.