home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume1 / rogue / part05 / play.c < prev    next >
C/C++ Source or Header  |  1987-05-12  |  4KB  |  242 lines

  1. /*
  2.  * play.c
  3.  *
  4.  * This source herein may be modified and/or distributed by anybody who
  5.  * so desires, with the following restrictions:
  6.  *    1.)  No portion of this notice shall be removed.
  7.  *    2.)  Credit shall not be taken for the creation of this source.
  8.  *    3.)  This code is not to be traded, sold, or used for personal
  9.  *         gain or profit.
  10.  *
  11.  */
  12.  
  13. #ifndef CURSES
  14. #include <curses.h>
  15. #endif CURSES
  16. #include "rogue.h"
  17.  
  18. boolean interrupted = 0;
  19. char *unknown_command = "unknown command";
  20.  
  21. extern short party_room, bear_trap;
  22. extern char hit_message[];
  23. extern boolean wizard, trap_door;
  24.  
  25. play_level()
  26. {
  27.     short ch;
  28.     int count;
  29.  
  30.     for (;;) {
  31.         interrupted = 0;
  32.         if (hit_message[0]) {
  33.             message(hit_message, 1);
  34.             hit_message[0] = 0;
  35.         }
  36.         if (trap_door) {
  37.             trap_door = 0;
  38.             return;
  39.         }
  40.         move(rogue.row, rogue.col);
  41.         refresh();
  42.  
  43.         ch = rgetchar();
  44.         check_message();
  45.         count = 0;
  46. CH:
  47.         switch(ch) {
  48.         case '.':
  49.             rest((count > 0) ? count : 1);
  50.             break;
  51.         case 's':
  52.             search(((count > 0) ? count : 1), 0);
  53.             break;
  54.         case 'i':
  55.             inventory(&rogue.pack, ALL_OBJECTS);
  56.             break;
  57.         case 'f':
  58.             fight(0);
  59.             break;
  60.         case 'F':
  61.             fight(1);
  62.             break;
  63.         case 'h':
  64.         case 'j':
  65.         case 'k':
  66.         case 'l':
  67.         case 'y':
  68.         case 'u':
  69.         case 'n':
  70.         case 'b':
  71.             (void) one_move_rogue(ch, 1);
  72.             break;
  73.         case 'H':
  74.         case 'J':
  75.         case 'K':
  76.         case 'L':
  77.         case 'B':
  78.         case 'Y':
  79.         case 'U':
  80.         case 'N':
  81.         case '\010':
  82.         case '\012':
  83.         case '\013':
  84.         case '\014':
  85.         case '\031':
  86.         case '\025':
  87.         case '\016':
  88.         case '\002':
  89.             multiple_move_rogue(ch);
  90.             break;
  91.         case 'e':
  92.             eat();
  93.             break;
  94.         case 'q':
  95.             quaff();
  96.             break;
  97.         case 'r':
  98.             read_scroll();
  99.             break;
  100.         case 'm':
  101.             move_onto();
  102.             break;
  103.         case 'd':
  104.             drop();
  105.             break;
  106.         case 'P':
  107.             put_on_ring();
  108.             break;
  109.         case 'R':
  110.             remove_ring();
  111.             break;
  112.         case '\020':
  113.             remessage();
  114.             break;
  115.         case '\027':
  116.             wizardize();
  117.             break;
  118.         case '>':
  119.             if (drop_check()) {
  120.                 return;
  121.             }
  122.             break;
  123.         case '<':
  124.             if (check_up()) {
  125.                 return;
  126.             }
  127.             break;
  128.         case ')':
  129.         case ']':
  130.             inv_armor_weapon(ch == ')');
  131.             break;
  132.         case '=':
  133.             inv_rings();
  134.             break;
  135.         case '^':
  136.             id_trap();
  137.             break;
  138.         case 'I':
  139.             single_inv(0);
  140.             break;
  141.         case 'T':
  142.             take_off();
  143.             break;
  144.         case 'W':
  145.             wear();
  146.             break;
  147.         case 'w':
  148.             wield();
  149.             break;
  150.         case 'c':
  151.             call_it();
  152.             break;
  153.         case 'z':
  154.             zapp();
  155.             break;
  156.         case 't':
  157.             throw();
  158.             break;
  159.         case 'v':
  160.             message("rogue-clone: Version II. (Tim Stoehr was here), tektronix!zeus!tims", 0);
  161.             break;
  162.         case 'Q':
  163.             quit(0);
  164.         case '0':
  165.         case '1':
  166.         case '2':
  167.         case '3':
  168.         case '4':
  169.         case '5':
  170.         case '6':
  171.         case '7':
  172.         case '8':
  173.         case '9':
  174.             move(rogue.row, rogue.col);
  175.             refresh();
  176.             do {
  177.                 if (count < 100) {
  178.                     count = (10 * count) + (ch - '0');
  179.                 }
  180.                 ch = rgetchar();
  181.             } while (is_digit(ch));
  182.             if (ch != CANCEL) {
  183.                 goto CH;
  184.             }
  185.             break;
  186.         case ' ':
  187.             break;
  188.         case '\011':
  189.             if (wizard) {
  190.                 inventory(&level_objects, ALL_OBJECTS);
  191.             } else {
  192.                 message(unknown_command, 0);
  193.             }
  194.             break;
  195.         case '\023':
  196.             if (wizard) {
  197.                 draw_magic_map();
  198.             } else {
  199.                 message(unknown_command, 0);
  200.             }
  201.             break;
  202.         case '\024':
  203.             if (wizard) {
  204.                 show_traps();
  205.             } else {
  206.                 message(unknown_command, 0);
  207.             }
  208.             break;
  209.         case '\017':
  210.             if (wizard) {
  211.                 show_objects();
  212.             } else {
  213.                 message(unknown_command, 0);
  214.             }
  215.             break;
  216.         case '\001':
  217.             show_average_hp();
  218.             break;
  219.         case '\003':
  220.             if (wizard) {
  221.                 new_object_for_wizard();
  222.             } else {
  223.                 message(unknown_command, 0);
  224.             }
  225.             break;
  226.         case '\015':
  227.             if (wizard) {
  228.                 show_monsters();
  229.             } else {
  230.                 message(unknown_command, 0);
  231.             }
  232.             break;
  233.         case 'S':
  234.             save_game();
  235.             break;
  236.         default:
  237.             message(unknown_command, 0);
  238.             break;
  239.         }
  240.     }
  241. }
  242.