Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14006/src

Added Files:
	beeplite.c litebitmaps.h 
Log Message:
First attempt at reimport of beeplite into NetrekXP.  Unresolved issue: improper text clearing on TTS beeplite messages.  Still to add: saving of beeplite settings in save_options.

--- NEW FILE: beeplite.c ---
/* beeplite.c
 *
 * $Log: beeplite.c,v $
 * Revision 1.1  2006/04/18 13:47:24  modemhero
 * First attempt at reimport of beeplite into NetrekXP.  Unresolved issue: improper text clearing on TTS beeplite messages.  Still to add: saving of beeplite settings in save_options.
 *
 * Revision 1.1.1.1  1998/11/01 17:24:08  siegl
 * COW 3.0 initial revision
 * Added back to NetrekXP 2006/04/17   balcerski
 *
 */

#include "config.h"
#ifdef BEEPLITE
#include "copyright.h"

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <ctype.h>

#ifndef SERVER
#include "Wlib.h"
#endif

#include "defs.h"
#include "struct.h"
#include "data.h"
#include "map.h"
#include "proto.h"

rcdlite(struct distress *dist)
/* the info */
{
    char    message[100];
    int     len = 0;


    if ((dist == NULL) ||
    /* (dist->sender == me->p_no) || */
        (distlite[dist->distype] == NULL))

      return;

    len = makedistress(dist, message, distlite[dist->distype]);

    if (len <= 0)
      return;

    makelite(dist, message);
}


litedefaults(void)
{
    if (distlite[take] == NULL)
      distlite[take] = "/c/l";
    if (distlite[base_ogg] == NULL)
      distlite[base_ogg] = "/g/m";
    if (distlite[pickup] == NULL)
      distlite[pickup] = "/p";
    if (distlite[generic] == NULL)
      distlite[generic] = "%?%S=SB%{/c%}";
}

liteplanet(struct planet *l)
{
    emph_planet_seq_n[l->pl_no] = beep_lite_cycle_time_planet;
    l->pl_flags |= PLREDRAW;			 /* Leave redraw on until * * 
						  * done highlighting */
    l->pl_flags |= PLCLEAR;			 /* Leave redraw on until * * 
						  * done highlighting */
}

liteplayer(struct player *j)
{
    if (!j || (j->p_flags & PFCLOAK))
      return;

    redrawPlayer[j->p_no] = 1;

    emph_player_seq_n[j->p_no] = beep_lite_cycle_time_player;
}


/* small permutation on makedistress.  Searches for the highliting *
 * arguments, ignores everything else. */

makelite(struct distress * dist, char *pm)
/* the info */
/* macro to parse, used for distress and macro */
{
    struct player *sender;
    struct player *j;
    struct planet *l;
    char   *strcap(char *s);
    char    c;


    sender = &players[dist->sender];

    if (!(*pm))
    {
      return (0);
    }

    /* first step is to substitute variables */
    while (*pm)
    {
        if (*pm == '/')
	{
	    pm++;

	    if (!pm)
	      continue;

	    switch (c = *(pm++))
	    {

	    case 'P':				 /* push player id into buf */
	    case 'G':				 /* push friendly player id * 
						  * 
						  * * into buf */
	    case 'H':				 /* push enemy target player
						  * * * id into buf */

	    case 'p':				 /* push player id into buf */
	    case 'g':				 /* push friendly player id * 
						  * 
						  * * into buf */
	    case 'h':				 /* push enemy target player
						  * * * id into buf */

	        switch (c)
		{
		case 'p':
		    j = &players[dist->tclose_j];
		    break;
		case 'g':
		    j = &players[dist->tclose_fr];
		    break;
		case 'h':
		    j = &players[dist->tclose_en];
		    break;
		case 'P':
		    j = &players[dist->close_j];
		    break;
		case 'G':
		    j = &players[dist->close_fr];
		    break;
		default:
		    j = &players[dist->close_en];
		    break;
		}
	        liteflag = (F_beeplite_flags & (LITE_PLAYERS_MAP | LITE_PLAYERS_LOCAL));
	        liteplayer(j);
	        break;

	    case 'B':				 /* highlites planet nearest
						  * * * sender */
	    case 'b':
	        l = &planets[dist->close_pl];
	        if (F_beeplite_flags & LITE_PLANETS)
		  liteplanet(l);
	        break;
	    case 'L':				 /* highlites planet nearest
						  * * * pointer */
	    case 'l':
	        l = &planets[dist->tclose_pl];
	        if (F_beeplite_flags & LITE_PLANETS)
		  liteplanet(l);
	        break;
	    case 'U':				 /* highlites enemy nearest * 
						  * 
						  * * pointer */
	    case 'u':
	        j = &players[dist->tclose_en];
	        liteflag = (F_beeplite_flags & (LITE_PLAYERS_MAP | LITE_PLAYERS_LOCAL));
	        liteplayer(j);
	        break;
	    case 'c':				 /* highlites sender */
	    case 'I':
	    case 'i':
	        liteflag = (F_beeplite_flags & (LITE_PLAYERS_MAP | LITE_PLAYERS_LOCAL));
	        liteplayer(sender);
	        break;
	    case 'M':				 /* highlites me */
	    case 'm':
	        if (F_beeplite_flags & LITE_SELF)
		{
		    liteflag = (LITE_PLAYERS_MAP | LITE_PLAYERS_LOCAL);
		    liteplayer(me);
		}
	        break;
	    case '0':

	        if (F_beeplite_flags & LITE_SOUNDS)
		{

#ifdef SOUND
		    if (sound_toggle)
		      Play_Sound(MESSAGE_SOUND);
		    else
#endif

		    W_Beep();
		}
	        break;

#ifdef SOUND
	    case '1':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE1_SOUND);
	        break;
	    case '2':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE2_SOUND);
	        break;
	    case '3':
  	        if (F_beeplite_flags & LITE_SOUNDS)
	  	  Play_Sound(MESSAGE3_SOUND);
	        break;
	    case '4':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE4_SOUND);
	        break;
	    case '5':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE5_SOUND);
	        break;
	    case '6':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE6_SOUND);
	        break;
	    case '7':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE7_SOUND);
	        break;
	    case '8':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE8_SOUND);
	        break;
	    case '9':
	        if (F_beeplite_flags & LITE_SOUNDS)
		  Play_Sound(MESSAGE9_SOUND);
	        break;
#endif

	      /* Text between:  /|    |   will be displayed with TTS */
	    case '|':
	        if (F_beeplite_flags & LITE_TTS)
		{
		    for (tts_len = 0; (*pm != '|' && tts_len < tts_max_len); tts_len++)
		      lastIn[tts_len] = *pm++;
		    lastIn[tts_len] = '\0';
		    tts_width = W_TTSTextWidth(lastIn, tts_len);
		    tts_timer = tts_time;
		}
	        break;

	    default:
	        /* try to continue * bad macro character is skipped entirely, *
	         * * * the message will be parsed without whatever argument has
	         * * * occurred. - jn */
	        warning("Bad Macro character in distress!");
	        fprintf(stderr, "Unrecognizable special character in distress pass 1: %c\n", *(pm - 1));
	        break;
	    }
	}
        else
	{
	    pm++;
	}

    }

  return (1);
}
#endif /* BEEPLITE */

--- NEW FILE: litebitmaps.h ---

#define emph_planet_seq_width 24
#define emph_planet_seq_height 24
#define emph_planet_seq_frames 5
static char emph_planet_seq_bits[emph_planet_seq_frames][72] =
{
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00,
    0x00, 0x83, 0x01, 0xc0, 0x00, 0x06, 0x40, 0x00, 0x04, 0x20, 0x00, 0x08,
    0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10,
    0x10, 0x00, 0x10, 0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x20, 0x00, 0x08,
    0x40, 0x00, 0x04, 0xc0, 0x00, 0x06, 0x00, 0x83, 0x01, 0x00, 0x7c, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x80, 0x01, 0x03,
    0x40, 0x00, 0x04, 0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x10, 0x00, 0x10,
    0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20,
    0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x10, 0x00, 0x10,
    0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x40, 0x00, 0x04, 0x80, 0x01, 0x03,
    0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x80, 0x01, 0x03, 0x40, 0x00, 0x04,
    0x20, 0x00, 0x08, 0x10, 0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20,
    0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40,
    0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x08, 0x00, 0x20,
    0x08, 0x00, 0x20, 0x10, 0x00, 0x10, 0x20, 0x00, 0x08, 0x40, 0x00, 0x04,
    0x80, 0x01, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0xfe, 0x00, 0x80, 0x01, 0x03, 0x60, 0x00, 0x0c, 0x10, 0x00, 0x10,
    0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40,
    0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80,
    0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x04, 0x00, 0x40,
    0x04, 0x00, 0x40, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x10, 0x00, 0x10,
    0x60, 0x00, 0x0c, 0x80, 0x01, 0x03, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0xff, 0x01, 0xc0, 0x00, 0x06, 0x30, 0x00, 0x18, 0x08, 0x00, 0x20,
    0x08, 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x02, 0x00, 0x80,
    0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80,
    0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80, 0x02, 0x00, 0x80,
    0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20,
    0x30, 0x00, 0x18, 0xc0, 0x00, 0x06, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00}};

#define emph_player_seq_width 24
#define emph_player_seq_height 24
#define emph_player_seq_frames 3
static char emph_player_seq_bits[emph_player_seq_frames][72] =
{
  {
    0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x9c, 0x00,
    0x80, 0xff, 0x00, 0xc0, 0xc1, 0x01, 0x60, 0x00, 0x03, 0x38, 0x00, 0x0e,
    0x30, 0x00, 0x06, 0x10, 0x00, 0x04, 0x18, 0x00, 0x0c, 0x1e, 0x00, 0x3c,
    0x18, 0x00, 0x0c, 0x10, 0x00, 0x04, 0x30, 0x00, 0x06, 0x38, 0x00, 0x0e,
    0x60, 0x00, 0x03, 0xc0, 0xc1, 0x01, 0x80, 0xff, 0x00, 0x80, 0x9c, 0x00,
    0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x40, 0x1c, 0x01, 0xc0, 0xff, 0x01,
    0xc0, 0xff, 0x01, 0xe0, 0x80, 0x03, 0x7c, 0x00, 0x1f, 0x38, 0x00, 0x0e,
    0x18, 0x00, 0x0c, 0x18, 0x00, 0x0c, 0x1c, 0x00, 0x1c, 0x1f, 0x00, 0x7c,
    0x1c, 0x00, 0x1c, 0x18, 0x00, 0x0c, 0x18, 0x00, 0x0c, 0x38, 0x00, 0x0e,
    0x7c, 0x00, 0x1f, 0xe0, 0x80, 0x03, 0xc0, 0xff, 0x01, 0xc0, 0xff, 0x01,
    0x40, 0x1c, 0x01, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};

#define emph_player_seql_width 30
#define emph_player_seql_height 30
#define emph_player_seql_frames 3
static char emph_player_seql_bits[emph_player_seql_frames][120] =
{
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x18, 0x06, 0x00,
    0x80, 0xfc, 0x4f, 0x00, 0x80, 0x0f, 0x7c, 0x00, 0xc0, 0x01, 0xe0, 0x00,
    0x60, 0x00, 0x80, 0x01, 0x38, 0x00, 0x00, 0x07, 0x30, 0x00, 0x00, 0x03,
    0x10, 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x06, 0x1e, 0x00, 0x00, 0x1e,
    0x0c, 0x00, 0x00, 0x0c, 0x08, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x04,
    0x08, 0x00, 0x00, 0x04, 0x08, 0x00, 0x00, 0x04, 0x0c, 0x00, 0x00, 0x0c,
    0x1e, 0x00, 0x00, 0x1e, 0x18, 0x00, 0x00, 0x06, 0x10, 0x00, 0x00, 0x02,
    0x30, 0x00, 0x00, 0x03, 0x38, 0x00, 0x00, 0x07, 0x60, 0x00, 0x80, 0x01,
    0xc0, 0x01, 0xe0, 0x00, 0x80, 0x0f, 0x7c, 0x00, 0x80, 0xfc, 0x4f, 0x00,
    0x00, 0x18, 0x06, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00},
  {
    0x00, 0x08, 0x04, 0x00, 0x00, 0x18, 0x06, 0x00, 0x40, 0xfc, 0x8f, 0x00,
    0xc0, 0xff, 0xff, 0x00, 0xc0, 0x0f, 0xfc, 0x00, 0xe0, 0x00, 0xc0, 0x01,
    0x7c, 0x00, 0x80, 0x0f, 0x38, 0x00, 0x00, 0x07, 0x18, 0x00, 0x00, 0x06,
    0x18, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x00, 0x0e, 0x1f, 0x00, 0x00, 0x3e,
    0x0e, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x0c,
    0x0c, 0x00, 0x00, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x0e, 0x00, 0x00, 0x1c,
    0x1f, 0x00, 0x00, 0x3e, 0x1c, 0x00, 0x00, 0x0e, 0x18, 0x00, 0x00, 0x06,
    0x18, 0x00, 0x00, 0x06, 0x38, 0x00, 0x00, 0x07, 0x7c, 0x00, 0x80, 0x0f,
    0xe0, 0x00, 0xc0, 0x01, 0xc0, 0x0f, 0xfc, 0x00, 0xc0, 0xff, 0xff, 0x00,
    0x40, 0xfc, 0x8f, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x08, 0x04, 0x00},
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};