chat status lines are now deleted on the next screen

origin
patty21 23 years ago
parent ce530cead0
commit e87822fb07

@ -16,26 +16,45 @@ int
chat_findfreeline ()
{
int i;
for (i = 0; (i < CHAT_MAX_LINES && chat.lines[i][0] != 0); i++);
i = chat.lastline;
if (i >= CHAT_MAX_LINES) {
memcpy (chat.lines[1], chat.lines[0], 255);
i = 255;
}
else
chat.lastline++;
chat.changed = 1;
return i;
}
void
chat_cleanup ()
{
int i;
for (i = 0; i < CHAT_MAX_LINES; i++) {
if (chat.linestatus[i] > 0)
chat.linestatus[i] = -1;
}
}
void
chat_addline (char *text)
{
int l;
l = chat_findfreeline ();
chat.linestatus[l] = 0;
strncpy (chat.lines[l], text, 255);
chat.lineschanged = 1;
}
void
chat_addstatusline (char *text)
{
int l;
l = chat_findfreeline ();
chat.linestatus[l] = 1;
strncpy (chat.lines[l], text, 255);
chat.lineschanged = 1;
}
@ -75,7 +94,7 @@ chat_drawbox ()
src.h = src.y + font[0].size.y;
draw_shadefield (gfx.screen, &src, CHAT_BG_SHADE_DARK >> 1);
gfx_AddUpdateRect (chat.window.x, chat.window.y, chat.window.w, chat.window.h);
};
};
void
@ -193,10 +212,14 @@ chat_loop (SDL_Event * event)
p1 = p2 = 0;
maxchar = (chat.window.w - 4) / font[0].size.x;
if (chat.lineschanged) {
font_setcolor (255,255,255,0);
font_setcolor (255, 255, 255, 0);
y = chat.window.y + 4;
l = chat.startline;
while (y < (chat.window.y + chat.window.h - 32) && chat.lines[l][0] != 0) {
if (chat.linestatus[l] < 0) {
l++;
}
else {
for (p1 = 0; (p1 < maxchar && chat.lines[l][p2] != 0); p1++)
text[p1] = chat.lines[l][p2++];
text[p1] = 0;
@ -207,6 +230,7 @@ chat_loop (SDL_Event * event)
}
y = y + font[0].size.y;
}
}
if (chat.lines[l][0] != 0) {
chat.startline++;
chat.changed = 1;
@ -227,6 +251,7 @@ chat_loop (SDL_Event * event)
for (p1 = 0; (p1 < maxchar && chat.input.text[p2] != 0); p1++)
text[p1] = chat.input.text[p2++];
text[p1] = 0;
font_draw (chat.window.x + 4, (chat.window.y + chat.window.h) - 4 - font[0].size.y, text,0);
font_draw (chat.window.x + 4, (chat.window.y + chat.window.h) - 4 - font[0].size.y,
text, 0);
}
};

@ -14,7 +14,9 @@ struct __chat {
signed char changed;
SDL_Surface *oldscreen;
short int startline;
short int lastline;
char lines[CHAT_MAX_LINES][255];
short int linestatus[CHAT_MAX_LINES];
signed char lineschanged;
_keybinput input;
} typedef _chat;
@ -23,7 +25,9 @@ extern _chat chat;
extern void chat_show (int x1, int y1, int x2, int y2);
extern void chat_addline (char *text);
extern void chat_addstatusline (char *text);
extern void chat_loop (SDL_Event *event);
extern void chat_drawbox ();
extern void chat_cleanup ();
#endif

@ -54,7 +54,7 @@ mw_shutdown ()
int i;
chat_show (-1, -1, -1, -1);
chat_cleanup();
gfx_free_players ();
for (i = 0; i < MAX_PLAYERS; i++)
@ -87,9 +87,9 @@ mw_draw_status ()
x = (gfx.res.x - px * 320) / 2;
for (pnr = 0; pnr < px; pnr++) {
font_setcolor (128,128,128,0);
font_setcolor (128, 128, 128, 0);
font_draw (pnr * 320 + x - 2, 22, " Wins Points", 0);
font_setcolor (192,192,255,0);
font_setcolor (192, 192, 255, 0);
font_draw (pnr * 320 + x, 24, " Wins Points", 0);
}
@ -113,9 +113,9 @@ mw_draw_status ()
if (PS_IS_used (bman.players[pnr].state)) {
if (bman.lastwinner == pnr)
font_setcolor (255,255,192,0);
font_setcolor (255, 255, 192, 0);
else
font_setcolor (192,192,192,0);
font_setcolor (192, 192, 192, 0);
font_draw (x + x1 * 320, y, text, 0);
}
x1++;
@ -221,9 +221,11 @@ mw_draw_chat ()
{
if (chat.visible == 0) {
chat_show (16, mw_chat + 16, gfx.res.x - 16, gfx.res.y - 32);
chat_addline ("Press [STRG] or [CTRL] - to select a player");
if (GT_MP_PTPM)
chat_addline ("F4 - to start the game");
chat_addstatusline ("Press [STRG] or [CTRL] - to select a player");
if (GT_MP_PTPM) {
chat_addstatusline ("F4 - to start the game");
chat_addstatusline ("F5 - to change map settings");
}
}
};
@ -354,7 +356,7 @@ wait_for_players ()
if ((GT_MP_PTPM) && keys[SDLK_F5] && (!keypressed)) {
/* Map modification */
mapmenu ();
draw_logo();
draw_logo ();
mw_draw_status ();
mw_draw_gfxselect (selgfx);
UpdateRects_nr = 0;

Loading…
Cancel
Save