AlloyMUSH-1.1/conf/
AlloyMUSH-1.1/misc/
AlloyMUSH-1.1/scripts/
AlloyMUSH-1.1/vms/
/* ansi.c
 * code to do stuff with ansi color
 */

#include "autoconf.h"
#include "ansi.h"
#include "alloc.h"
#include "copyright.h"
#include "externs.h"
#include "flags.h"
#include "mudconf.h"

char *ltrs2ansi(ltrs)
    char *ltrs;
{
    static char buff[LBUF_SIZE], *bp, *s;
    
    for (s = ltrs, bp = buff; *s; s++) {
    	switch (*s) {
	  case 'h':		/* hilite */
	    safe_str(ANSI_HILITE, buff, &bp);
	    break;
	  case 'i':		/* inverse */
	    safe_str(ANSI_INVERSE, buff, &bp);
	    break;
	  case 'f':		/* flash */
	    safe_str(ANSI_BLINK, buff, &bp);
	    break;
	  case 'n':		/* normal */
	    safe_str(ANSI_NORMAL, buff, &bp);
	    break;
	  case 'k':		/* compatibility with Amalgam soft-ansi */
	  case 'x':		/* black fg */
	    safe_str(ANSI_BLACK, buff, &bp);
	    break;
	  case 'r':		/* red fg */
	    safe_str(ANSI_RED, buff, &bp);
	    break;
	  case 'g':		/* green fg */
	    safe_str(ANSI_GREEN, buff, &bp);
	    break;
	  case 'y':		/* yellow fg */
	    safe_str(ANSI_YELLOW, buff, &bp);
	    break;
	  case 'b':		/* blue fg */
	    safe_str(ANSI_BLUE, buff, &bp);
	    break;
	  case 'm':		/* magenta fg */
	    safe_str(ANSI_MAGENTA, buff, &bp);
	    break;
	  case 'c':		/* cyan fg */
	    safe_str(ANSI_CYAN, buff, &bp);
	    break;
	  case 'w':		/* white fg */
	    safe_str(ANSI_WHITE, buff, &bp);
	    break;
	  case 'K':
	  case 'X':		/* black bg */
	    safe_str(ANSI_BBLACK, buff, &bp);
	    break;
	  case 'R':		/* red bg */
	    safe_str(ANSI_BRED, buff, &bp);
	    break;
	  case 'G':		/* green bg */
	    safe_str(ANSI_BGREEN, buff, &bp);
	    break;
	  case 'Y':		/* yellow bg */
	    safe_str(ANSI_BYELLOW, buff, &bp);
	    break;
	  case 'B':		/* blue bg */
	    safe_str(ANSI_BBLUE, buff, &bp);
	    break;
	  case 'M':		/* magenta bg */
	    safe_str(ANSI_BMAGENTA, buff, &bp);
	    break;
	  case 'C':		/* cyan bg */
	    safe_str(ANSI_BCYAN, buff, &bp);
	    break;
	  case 'W':		/* white bg */
	    safe_str(ANSI_BWHITE, buff, &bp);
	    break;
	}
    }
    
    return buff;
}

char *ltr2ansi(c)
    char c;
{
    static char foo[2];
    
    foo[0] = c;
    foo[1] = '\0';
    
    return ltrs2ansi(foo);
}

char *typeansi(it)
    dbref it;
{
    char *c;
    
    switch (Typeof(it)) {
      case TYPE_PLAYER: c = mudconf.player_ansi; break;
      case TYPE_ROOM: c = mudconf.room_ansi; break;
      case TYPE_THING: c = mudconf.thing_ansi; break;
      case TYPE_ZONE: c = mudconf.zone_ansi; break;
      case TYPE_EXIT: c = mudconf.exit_ansi; break;
      default:
	STARTLOG(LOG_BUGS, "BUG", "OTYPE")
	c = alloc_mbuf("typeansi.LOG.badtype");
	sprintf(c, "Strange object type: object #%d = %d",
		it, Typeof(it));
	log_text(c);
	free_mbuf(c);
	ENDLOG
	
	c = "f";
    }
    
    return ltrs2ansi(c);
}