#define TERM_DUMB 0 #define TERM_VT100 1 #define TERM_ANSI 2 #define MAX_TERM 3 #define COLOR_DEFAULT 0 #define COLOR_ROOM_NAME 1 #define COLOR_TELLS 2 #define COLOR_SAYS 3 #define COLOR_GOSSIP 4 #define COLOR_PLAYERS 5 #define COLOR_MOBS 6 #define COLOR_OBJECTS 7 #define COLOR_EXITS 8 #define COLOR_STATUS 9 #define COLOR_TITLES 10 #define COLOR_CTELL 11 #define COLOR_CHAT 12 #define COLOR_OOC 13 #define COLOR_GTELL 14 #define COLOR_AUCTION 15 #define COLOR_INFO 16 #define COLOR_TO_SELF 17 #define COLOR_TO_GROUP 18 #define COLOR_BY_SELF 19 #define COLOR_BY_GROUP 20 #define COLOR_MILD 21 #define COLOR_STRONG 22 #define COLOR_BLACK 23 #define COLOR_RED 24 #define COLOR_BOLD_RED 25 #define COLOR_GREEN 26 #define COLOR_BOLD_GREEN 27 #define COLOR_YELLOW 28 #define COLOR_BOLD_YELLOW 29 #define COLOR_BLUE 30 #define COLOR_BOLD_BLUE 31 #define COLOR_MAGENTA 32 #define COLOR_BOLD_MAGENTA 33 #define COLOR_CYAN 34 #define COLOR_BOLD_CYAN 35 #define COLOR_WHITE 36 #define COLOR_BOLD_WHITE 37 #define MAX_COLOR 38 #define ANSI_NORMAL 0 #define ANSI_BOLD 1 #define ANSI_REVERSE 7 #define ANSI_UNDERLINE 4 #define ANSI_BLACK 30 #define ANSI_RED 31 #define ANSI_GREEN 32 #define ANSI_YELLOW 33 #define ANSI_BLUE 34 #define ANSI_MAGENTA 35 #define ANSI_CYAN 36 #define ANSI_WHITE 37 #define ANSI_BOLD_RED 64*ANSI_BOLD+ANSI_RED #define ANSI_BOLD_GREEN 64*ANSI_BOLD+ANSI_GREEN #define ANSI_BOLD_YELLOW 64*ANSI_BOLD+ANSI_YELLOW #define ANSI_BOLD_BLUE 64*ANSI_BOLD+ANSI_BLUE #define ANSI_BOLD_MAGENTA 64*ANSI_BOLD+ANSI_MAGENTA #define ANSI_BOLD_CYAN 64*ANSI_BOLD+ANSI_CYAN #define ANSI_BOLD_WHITE 64*ANSI_BOLD+ANSI_WHITE #define VT100_NORMAL 0 #define VT100_BOLD 1 #define VT100_REVERSE 2 #define VT100_UNDERLINE 3 #define MAX_VT100 4 typedef const char* term_func ( int ); class Term_Type { public: char* name; int entries; const char** format; term_func* codes; const int* defaults; }; extern const char* format_vt100 [ ]; extern const char* codes_vt100 [ ]; extern const char* format_ansi [ ]; extern const char* codes_ansi [ ]; extern const char* color_fields [ ]; extern const term_type term_table [ ]; extern const char* color_key; const char* bold_red_v ( char_data* ); const char* bold_cyan_v ( char_data* ); const char* bold_v ( char_data* ); const char* red ( char_data* ); const char* green ( char_data* ); const char* normal ( char_data* ); const char* yellow ( char_data* ); const char* blue ( char_data* ); const char* to_self ( char_data* ); const char* by_self ( char_data* ); const char* color_scale ( char_data*, int ); void convert_to_ansi ( char_data*, const char*, char* ); void send_color ( char_data*, int, const char* ); void page_color ( char_data*, int, const char* ); inline const char* color_code( char_data* ch, int color ) { if( ch->pcdata == NULL || ch->pcdata->terminal == TERM_DUMB ) return empty_string; return term_table[ ch->pcdata->terminal ].codes( ch->pcdata->color[ color ] ); } /* * SCREEN ROUTINES */ void scroll_window ( char_data* ); void command_line ( char_data* ); void setup_screen ( char_data* ); void clear_screen ( char_data* ); void reset_screen ( char_data* ); inline void save_cursor ( char_data* ch ) { send( ch, "7" ); } inline void restore_cursor ( char_data* ch ) { send( ch, "8" ); } inline void cursor_on ( char_data* ch ) { send( ch, "[?25h" ); } inline void cursor_off ( char_data* ch ) { send( ch, "[?25l" ); } inline void lock_keyboard ( char_data* ch ) { send( ch, "[2l" ); } inline void unlock_keyboard ( char_data* ch ) { send( ch, "[2h" ); } inline void move_cursor( char_data* ch, int line, int column ) { send( ch, "[%d;%dH", line, column ); } inline void scroll_region( char_data* ch, int top, int bottom ) { send( ch, "[%d;%dr", top, bottom ); }