Update of /cvsroot/netrek/client/netrekxp/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9238/src
Modified Files:
data.c defaults.c dmessage.c feature.c local.c makefile map.c
mswindow.c newwin.c option.c redraw.c
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.
Index: redraw.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/redraw.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- redraw.c 12 Apr 2006 04:20:04 -0000 1.2
+++ redraw.c 18 Apr 2006 13:41:48 -0000 1.3
@@ -98,6 +98,36 @@
W_ClearArea (warnw, 5, 5, W_Textwidth * warncount, W_Textheight);
warncount = 0;
}
+
+#ifdef BEEPLITE
+ if (tts_timer)
+ {
+ static int last_width;
+
+ tts_timer--;
+ if (!tts_timer)
+ {
+ /* timed out */
+ W_EraseTTSText(w, WINSIDE, tts_pos, last_width);
+ last_width = 0;
+ }
+ else if (tts_timer == tts_time - 1 && last_width)
+ {
+ /* first draw -- erase previous */
+ W_EraseTTSText(w, WINSIDE, tts_pos, last_width);
+ /* draw new */
+ W_WriteTTSText(w, WINSIDE, tts_pos, tts_width, lastIn,
+ tts_len);
+ last_width = tts_width;
+ }
+ else
+ {
+ /* regular draw */
+ W_WriteTTSText(w, WINSIDE, tts_pos, tts_width, lastIn, tts_len);
+ last_width = tts_width;
+ }
+ }
+#endif
local (); /* redraw local window */
Index: mswindow.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mswindow.c 15 Apr 2006 01:04:34 -0000 1.4
+++ mswindow.c 18 Apr 2006 13:41:48 -0000 1.5
@@ -4579,6 +4579,49 @@
ReleaseDC (bitmap->hwnd, hdc);
}
+#ifdef BEEPLITE
+void W_EraseTTSText(W_Window window, int max_width, int y, int width)
+{
+ register int x = (max_width - width) / 2;
+
+ if (x < 0)
+ x = 4;
+ y -= W_Textheight;
+
+ W_ClearArea(window, x, y, width, W_Textheight);
+}
+
+void W_WriteTTSText(W_Window window, int max_width, int y, int width, char *str, int len)
+{
+ register int x = (max_width - width) / 2;
+ HDC hdc;
+ FNHEADER_VOID;
+
+ if (x < 0)
+ x = 4;
+
+ y -= W_Textheight;
+
+ hdc = GetDC(win->hwnd);
+
+ if (NetrekPalette)
+ {
+ SelectPalette(hdc, NetrekPalette, FALSE);
+ RealizePalette(hdc);
+ }
+
+ SetTextColor(hdc, colortable[GREY].rgb);
+ SetBkMode(hdc, TRANSPARENT);
+ TextOut(hdc, x, y, str, len);
+ ReleaseDC(win->hwnd, hdc);
+}
+
+int W_TTSTextWidth(char *s, int len)
+{
+ return len*W_Textwidth;
+}
+#endif
+
void
W_SetWindowName (W_Window window,
char *name)
Index: dmessage.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/dmessage.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- dmessage.c 12 Apr 2006 04:20:03 -0000 1.2
+++ dmessage.c 18 Apr 2006 13:41:48 -0000 1.3
@@ -157,6 +157,10 @@
HandleGenDistr (message, from, to, &dist);
len = makedistress (&dist, message, distmacro[dist.distype].macro);
+#ifdef BEEPLITE
+ if (useLite)
+ rcdlite(&dist);
+#endif
if (len <= 0)
return;
flags ^= MDISTR;
Index: newwin.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/newwin.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- newwin.c 17 Apr 2006 09:44:08 -0000 1.6
+++ newwin.c 18 Apr 2006 13:41:48 -0000 1.7
@@ -25,6 +25,7 @@
#include "data.h"
#include "playerlist.h"
#include "bitmaps.h"
+#include "litebitmaps.h"
#include "parsemeta.h"
#include "packets.h"
#include "spopt.h"
@@ -766,6 +767,29 @@
loadbitmapsT();
loadbitmapsM();
}
+
+#ifdef BEEPLITE
+ for (i = 0; i < emph_player_seq_frames; i++)
+ {
+ emph_player_seq[emph_player_seq_frames - (i + 1)] =
+ W_StoreBitmap(emph_player_seq_width, emph_player_seq_height,
+ emph_player_seq_bits[i], mapw);
+ }
+
+ for (i = 0; i < emph_player_seql_frames; i++)
+ {
+ emph_player_seql[emph_player_seql_frames - (i + 1)] =
+ W_StoreBitmap(emph_player_seql_width, emph_player_seql_height,
+ emph_player_seql_bits[i], w);
+ }
+
+ for (i = 0; i < emph_planet_seq_frames; i++)
+ {
+ emph_planet_seq[emph_planet_seq_frames - (i + 1)] =
+ W_StoreBitmap(emph_planet_seq_width, emph_planet_seq_height,
+ emph_planet_seq_bits[i], mapw);
+ }
+#endif
/* Experimental weapons */
#ifdef COLORIZEWEAPON
Index: local.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/local.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- local.c 15 Apr 2006 01:04:34 -0000 1.4
+++ local.c 18 Apr 2006 13:41:48 -0000 1.5
@@ -537,11 +537,19 @@
}
if (j->p_status == PALIVE)
{
- clearzone[0][clearcount] = dx - (shield_width / 2);
- clearzone[1][clearcount] = dy - (shield_height / 2);
- clearzone[2][clearcount] = shield_width;
- clearzone[3][clearcount] = shield_height;
- clearcount++;
+#if defined (BEEPLITE)
+ clearzone[0][clearcount] = dx - (shield_width / 2 + 6);
+ clearzone[1][clearcount] = dy - (shield_height / 2 + 6);
+ clearzone[2][clearcount] = shield_width + 12;
+ clearzone[3][clearcount] = shield_height + 12;
+ clearcount++;
+#else
+ clearzone[0][clearcount] = dx - (shield_width / 2);
+ clearzone[1][clearcount] = dy - (shield_height / 2);
+ clearzone[2][clearcount] = shield_width;
+ clearzone[3][clearcount] = shield_height;
+ clearcount++;
+#endif
/* Logic of color scheme is as follows:
1) Mono bitmaps (colorClient 0) and new bitmaps (colorClient 1)
@@ -679,6 +687,19 @@
shieldlabel:
+#ifdef BEEPLITE
+ if ((useLite && emph_player_seq_n[j->p_no] > 0)
+ && (liteflag & LITE_PLAYERS_LOCAL))
+ {
+ int seq_n = emph_player_seq_n[j->p_no] % emph_player_seql_frames;
+
+ W_WriteBitmap (dx - (emph_player_seql_width / 2),
+ dy - (emph_player_seql_height / 2),
+ emph_player_seql[seq_n],
+ W_White);
+ }
+#endif
+
#ifdef SOUND
if (j->p_no == me->p_no)
{
Index: makefile
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/makefile,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- makefile 14 Apr 2006 12:24:00 -0000 1.3
+++ makefile 18 Apr 2006 13:41:48 -0000 1.4
@@ -88,7 +88,7 @@
DEBUGDEFS = -DDEBUG
!endif
-ROBJ = check.obj colors.obj data.obj death.obj defaults.obj dmessage.obj\
+ROBJ = beeplite.obj check.obj colors.obj data.obj death.obj defaults.obj dmessage.obj\
enter.obj findslot.obj getname.obj getship.obj helpwin.obj hintwin.obj inform.obj\
interface.obj newwin.obj option.obj planetlist.obj macrowin.obj\
map.obj playerlist.obj ranklist.obj reserved.obj sintab.obj\
@@ -99,7 +99,7 @@
docwin.obj feature.obj\
string_util.obj local.obj cowmain.obj playback.obj
-RSRC = check.c colors.c data.c death.c defaults.c dmessage.c\
+RSRC = beeplite.c check.c colors.c data.c death.c defaults.c dmessage.c\
enter.c findslot.c getname.c getship.c helpwin.c hintwin.c inform.c\
input.c interface.c newwin.c option.c planetlist.c\
macrowin.c map.c playerlist.c ranklist.c redraw.c\
Index: option.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/option.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- option.c 15 Apr 2006 11:55:13 -0000 1.4
+++ option.c 18 Apr 2006 13:41:48 -0000 1.5
@@ -349,6 +349,9 @@
{1, "", &newDashboard, 0, 0, 0, dashboardoptions, NULL},
{1, "", &timerType, 0, 0, 0, timermess, NULL},
{1, "keep info %d upds (0=don't remove)", &keepInfo, 0, 0, 0, 0, &keepInfo_range},
+#ifdef BEEPLITE
+ {1, "use RCD highlighting", &useLite, 0, 0, 0, NULL, NULL},
+#endif
{1, "omit team letter on map", &omitTeamLetter, 0, 0, 0, NULL, NULL},
{1, "draw view box on map", &viewBox, 0, 0, 0, NULL, NULL},
{1, "draw stars on local", &showStars, 0, 0, 0, NULL, NULL},
Index: data.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/data.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- data.c 15 Apr 2006 01:04:34 -0000 1.3
+++ data.c 18 Apr 2006 13:41:48 -0000 1.4
@@ -458,6 +458,46 @@
int sizedist = sizeof (dist_defaults);
+#ifdef BEEPLITE
+char *distlite[NUM_DIST] =
+{
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL
+};
+
+int defLite = 0;
+int useLite = 0;
+
+int emph_planet_seq_n[MAXPLANETS] =
+{0,};
+int emph_player_seq_n[MAXPLAYER] =
+{0,};
+W_Icon emph_planet_seq[10];
+W_Icon emph_player_seq[10];
+W_Icon emph_player_seql[10];
+int beep_lite_cycle_time_player = 10;
+int beep_lite_cycle_time_planet = 10;
+int liteflag = 0;
+char F_beeplite_flags = LITE_PLAYERS_MAP |
+LITE_PLAYERS_LOCAL |
+LITE_SELF |
+LITE_PLANETS |
+LITE_SOUNDS |
+LITE_TTS;
+
+int tts_len = 0;
+int tts_max_len = 40;
+int tts_width = 0;
+int tts_timer = 0;
+int tts_time = 25;
+int tts_pos = WINSIDE / 2 - 16; /* as found in redraw.c *
+
+ *
+ * * originally */
+char lastIn[100];
+
+#endif /* BEEPLITE */
#ifdef RCM /* Receiver configurable
* Server messages */
Index: feature.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/feature.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- feature.c 21 Jan 2003 21:28:29 -0000 1.1.1.1
+++ feature.c 18 Apr 2006 13:41:48 -0000 1.2
@@ -81,6 +81,10 @@
{"DEAD_WARP", &F_dead_warp, 'S', 1, 0, 0},
#endif
+#ifdef BEEPLITE
+ {"BEEPLITE", &_dummy, 'C', 1, &F_beeplite_flags, 0},
+#endif
+
#ifdef RECORDGAME
{"MANY_SELF", &F_many_self, 'S', 0, 0, 0},
#endif
@@ -166,6 +170,81 @@
reportFeatures ();
if ((strcmpi (packet->name, "RC_DISTRESS") == 0) && gen_distress)
distmacro = dist_prefered;
+
+#ifdef BEEPLITE
+ if ((strcmpi(packet->name, "BEEPLITE") == 0))
+ {
+ switch (value)
+ {
+ case -1: /* Unknown, we can use all *
+ *
+ * * of the features! */
+
+#ifdef STABLE
+ /* Stable release is absolutely non borgish */
+ F_beeplite_flags =
+ LITE_SOUNDS |
+ LITE_TTS;
+#else
+ F_beeplite_flags = LITE_PLAYERS_MAP |
+ LITE_PLAYERS_LOCAL |
+ LITE_SELF |
+ LITE_PLANETS |
+ LITE_SOUNDS |
+ LITE_COLOR |
+ LITE_TTS;
+#endif
+
+ break;
+ case 1:
+ if (F_beeplite_flags == 0)
+ { /* Server says we can have *
+ *
+ * * beeplite, but no * *
+ * options??? must be * *
+ * configured wrong. */
+ F_beeplite_flags = LITE_PLAYERS_MAP |
+ LITE_PLAYERS_LOCAL |
+ LITE_SELF |
+ LITE_PLANETS |
+ LITE_SOUNDS |
+ LITE_COLOR |
+ LITE_TTS;
+ }
+ strcpy(buf, " disabled:");
+ if (!(F_beeplite_flags & LITE_PLAYERS_MAP))
+ strcat(buf, " LITE_PLAYERS_MAP");
+ if (!(F_beeplite_flags & LITE_PLAYERS_LOCAL))
+ strcat(buf, " LITE_PLAYERS_LOCAL");
+ if (!(F_beeplite_flags & LITE_SELF))
+ strcat(buf, " LITE_SELF");
+ if (!(F_beeplite_flags & LITE_PLANETS))
+ strcat(buf, " LITE_PLANETS");
+ if (!(F_beeplite_flags & LITE_SOUNDS))
+ strcat(buf, " LITE_SOUNDS\n");
+ if (!(F_beeplite_flags & LITE_COLOR))
+ strcat(buf, " LITE_COLOR");
+ if (!(F_beeplite_flags & LITE_TTS))
+ strcat(buf, " LITE_TTS");
+
+ if (strcmp(buf, " disabled:"))
+ {
+
+#ifdef TOOLS
+ W_WriteText(toolsWin, 0, 0, textColor, buf, strlen(buf), W_RegularFont);
+#else
+ printf("%s\n", buf);
+#endif
+ }
+ break;
+ case 0:
+ F_beeplite_flags = 0;
+ break;
+ default:
+ break;
+ }
+ }
+#endif /* BEEPLITE */
}
/******************************************************************************/
Index: map.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/map.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- map.c 12 Apr 2006 04:20:03 -0000 1.2
+++ map.c 18 Apr 2006 13:41:48 -0000 1.3
@@ -331,12 +331,38 @@
/* Draw the new planet */
+
+#ifdef BEEPLITE
+ if (useLite && emph_planet_seq_n[l->pl_no] > 0)
+ {
+ int seq_n = emph_planet_seq_n[l->pl_no] % emph_planet_seq_frames;
+
+ W_OverlayBitmap(dx - (emph_planet_seq_width / 2 + 1),
+ dy - (emph_planet_seq_height / 2),
+ emph_planet_seq[seq_n],
+ W_White);
+
+ W_WriteBitmap(dx - (BMP_MPLANET_WIDTH / 2), dy - (BMP_MPLANET_HEIGHT / 2),
+ planetmBitmap(l), planetColor(l));
+
+ emph_planet_seq_n[l->pl_no] -= 1;
+ l->pl_flags |= PLREDRAW; /* Leave redraw on until * *
+ * done highlighting */
+ l->pl_flags |= PLCLEAR; /* Leave redraw on until * *
+ * done highlighting */
+ }
+ else
+ {
+#endif
W_OverlayBitmap (dx - (BMP_MPLANET_WIDTH / 2),
dy - (BMP_MPLANET_HEIGHT / 2), planetmBitmap (l),
planetColor (l));
/*W_OverlayBitmapDB (mapSDB, dx - (BMP_MPLANET_WIDTH / 2),
dy - (BMP_MPLANET_HEIGHT / 2), planetmBitmap (l),
planetColor (l));*/
+#ifdef BEEPLITE
+ }
+#endif
if (l->pl_flags & PLAGRI)
{
@@ -743,17 +769,43 @@
j->p_mapchars, 2, shipFont (j));*/
}
+#ifdef BEEPLITE
+ if ((useLite && emph_player_seq_n[i] > 0)
+ && (liteflag & LITE_PLAYERS_MAP))
+ {
+ int seq_n = emph_player_seq_n[i] % emph_player_seq_frames;
- mclearzone[0][i] = dx - W_Textwidth;
- mclearzone[1][i] = dy - W_Textheight / 2;
- mclearzone[2][i] = W_Textwidth * 2;
- mclearzone[3][i] = W_Textheight;
+ W_WriteBitmap(dx - (emph_player_seq_width / 2 - 1),
+ dy - (emph_player_seq_height / 2 + 1),
+ emph_player_seq[seq_n],
+ W_White);
+ emph_player_seq_n[i] -= 1;
+ mclearzone[0][i] = dx - (emph_player_seq_width / 2 - 1);
+ mclearzone[1][i] = dy - (emph_player_seq_height / 2 + 1);
+ mclearzone[2][i] = emph_player_seq_width;
+ mclearzone[3][i] = emph_player_seq_height;
+ mclearzone[4][i] = j->p_x;
+ mclearzone[5][i] = j->p_y;
- /* Set these so we can checkRedraw() next time */
- mclearzone[4][i] = j->p_x;
- mclearzone[5][i] = j->p_y;
- redrawPlayer[i] = 0;
+ /* Leave redraw on until done highlighting */
+ redrawPlayer[i] = 1;
+ }
+ else
+ {
+#endif
+ mclearzone[0][i] = dx - W_Textwidth;
+ mclearzone[1][i] = dy - W_Textheight / 2;
+ mclearzone[2][i] = W_Textwidth * 2;
+ mclearzone[3][i] = W_Textheight;
+ /* Set these so we can checkRedraw() next time */
+ mclearzone[4][i] = j->p_x;
+ mclearzone[5][i] = j->p_y;
+ redrawPlayer[i] = 0;
+
+#ifdef BEEPLITE
+ }
+#endif
}
/* Draw the lock symbol (if needed) */
Index: defaults.c
===================================================================
RCS file: /cvsroot/netrek/client/netrekxp/src/defaults.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- defaults.c 15 Apr 2006 01:04:34 -0000 1.3
+++ defaults.c 18 Apr 2006 13:41:48 -0000 1.4
@@ -82,12 +82,6 @@
NULL
}
},
- {"dynamicBitmaps", &dynamicBitmaps, RC_BOOL,
- {
- "Allow switching of ship bitmaps in game",
- NULL
- }
- },
#ifdef JUBILEE_PHASERS
{"colorfulPhasers", &colorfulPhasers, RC_BOOL,
{
@@ -123,6 +117,12 @@
NULL
}
},
+ {"dynamicBitmaps", &dynamicBitmaps, RC_BOOL,
+ {
+ "Allow switching of ship bitmaps in game",
+ NULL
+ }
+ },
{"enemyPhasers", &enemyPhasers, RC_INT,
{
"Angle between enemy phaser lines",
@@ -624,6 +624,20 @@
NULL
}
},
+#ifdef BEEPLITE
+ {"useLite", &useLite, RC_BOOL,
+ {
+ "Use beeplite",
+ NULL
+ }
+ },
+ {"defLite", &defLite, RC_BOOL,
+ {
+ "Use default beeplite settings",
+ NULL
+ }
+ },
+#endif
#ifdef RSA
{"useRsa", &useRsa, RC_BOOL,
{
@@ -927,6 +941,29 @@
}
}
+#ifdef BEEPLITE
+ else if (strncasecmp(file, "lite.", 5) == 0)
+ {
+ int offset = 5;
+ char **lt;
+
+ if (file[6] == '.')
+ offset = 7;
+
+ notdone = 1;
+
+ for (lt = &distlite[take], dm = &dist_prefered[take],
+ dm_def = &dist_defaults[take];
+ dm->name && notdone; dm++, dm_def++, lt++)
+ {
+ if (strcmpi(file + offset, dm->name) == 0)
+ {
+ *lt = strdup(v);
+ notdone = 0;
+ }
+ }
+ }
+#endif /* BEEPLITE */
#ifdef RCM
else if (strncmpi (file, "msg.", 4) == 0)
@@ -1468,6 +1505,23 @@
portSwap = booleanDefault ("portSwap", TRUE);
#endif
+#ifdef BEEPLITE
+ defLite = booleanDefault("defLite", defLite);
+ useLite = booleanDefault("useLite", useLite);
+
+ if (defLite)
+ litedefaults();
+
+ beep_lite_cycle_time_planet =
+ intDefault("planetCycleTime", beep_lite_cycle_time_planet);
+ beep_lite_cycle_time_player =
+ intDefault("playerCycleTime", beep_lite_cycle_time_player);
+
+ tts_time = intDefault("tts_time", tts_time);
+ tts_max_len = intDefault("tts_max_len", tts_max_len);
+ tts_pos = intDefault("tts_pos", tts_pos);
+#endif /* BEEPLITE */
+
shipdefaults[DEFAULTSHIP].keymap = (unsigned char *) stringDefault ("keymap");
shipdefaults[DEFAULTSHIP].buttonmap = (unsigned char *) stringDefault ("buttonmap");
shipdefaults[DEFAULTSHIP].ckeymap = (unsigned char *) stringDefault ("ckeymap");