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;
}
@ -197,6 +216,10 @@ chat_loop (SDL_Event * event)
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++)
@ -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");
}
}
};

Loading…
Cancel
Save