00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022
00023 #include "crogue.h"
00024
00025
00026
00028 int prompt(const char *msg)
00029 {
00030 int result;
00031
00032 message(gettext("%s [Y/N]"), msg);
00033 draw();
00034 result = read_char();
00035 switch(result)
00036 {
00037 case 'Y':
00038 case 'y':
00039 case KEY_ACKNOWLEDGE:
00040 return 1;
00041 default:
00042 return 0;
00043 }
00044 }
00045
00046
00047 int prompt_letter(const char *msg)
00048 {
00049 int result;
00050
00051 retry:
00052 message("%s", msg);
00053 draw();
00054 result = read_char();
00055 result |= 0x40;
00056 if(result==(0x40|0x80))
00057 return 0;
00058 else if('a' <= result && result <= 'z')
00059 return result-'a'+1;
00060 else {
00061 message(gettext("Invalid selection."));
00062 goto retry;
00063 }
00064 }
00065
00066
00067 void prompt_dir(const char *msg, direction *dir)
00068 {
00069 int input;
00070
00071 retry:
00072 message("%s", msg);
00073 draw();
00074 input = read_char();
00075
00076 if(input==264)
00077 {
00078 dir->x = 0;
00079 dir->y = 0;
00080 }
00081 else if( '0' < input && input <= '9' ) {
00082 dir->x = (input-'0'-1)%3-1;
00083 dir->y = -(input-'0'-1)/3+1;
00084 w->plr.facing_forced = w->plr.facing = facing(dir->x, dir->y);
00085 } else {
00086 message(gettext("Invalid direction,"));
00087 goto retry;
00088 }
00089 }
00090
00091