mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 01:58:19 +00:00
added motd
This commit is contained in:
parent
6c60f3bcbb
commit
1d98b33ec2
|
@ -944,8 +944,8 @@ float gfx_text_raw(void *font_set_v, float x, float y, float size, const char *t
|
|||
FONT *font;
|
||||
int actual_size;
|
||||
int i;
|
||||
float draw_x;
|
||||
|
||||
float draw_x, draw_y;
|
||||
|
||||
/* to correct coords, convert to screen coords, round, and convert back */
|
||||
int actual_x = x * fake_to_screen_x;
|
||||
int actual_y = y * fake_to_screen_y;
|
||||
|
@ -969,6 +969,7 @@ float gfx_text_raw(void *font_set_v, float x, float y, float size, const char *t
|
|||
const unsigned char *c = (unsigned char *)text;
|
||||
int to_render = length;
|
||||
draw_x = x;
|
||||
draw_y = y;
|
||||
|
||||
if (i == 0)
|
||||
gfx_texture_set(font->outline_texture);
|
||||
|
@ -988,12 +989,20 @@ float gfx_text_raw(void *font_set_v, float x, float y, float size, const char *t
|
|||
float x_offset, y_offset, x_advance;
|
||||
|
||||
float advance;
|
||||
|
||||
if(*c == '\n')
|
||||
{
|
||||
draw_x = x;
|
||||
draw_y += size; /* is this correct? -kma */
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
|
||||
font_character_info(font, *c, &tex_x0, &tex_y0, &tex_x1, &tex_y1, &width, &height, &x_offset, &y_offset, &x_advance);
|
||||
|
||||
gfx_quads_setsubset(tex_x0, tex_y0, tex_x1, tex_y1);
|
||||
|
||||
gfx_quads_drawTL(draw_x+x_offset*size, y+y_offset*size, width*size, height*size);
|
||||
gfx_quads_drawTL(draw_x+x_offset*size, draw_y+y_offset*size, width*size, height*size);
|
||||
|
||||
advance = x_advance + font_kerning(font, *c, *(c+1));
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ struct snapstate
|
|||
|
||||
extern snapstate netobjects;
|
||||
|
||||
extern char server_motd[900]; // FUGLY
|
||||
/*
|
||||
extern const NETOBJ_PLAYER_CHARACTER *local_character;
|
||||
extern const NETOBJ_PLAYER_CHARACTER *local_prev_character;
|
||||
|
|
|
@ -456,6 +456,8 @@ void extraproj_reset()
|
|||
extraproj_num = 0;
|
||||
}
|
||||
|
||||
char server_motd[900] = {0};
|
||||
|
||||
extern "C" void modc_message(int msg)
|
||||
{
|
||||
if(msg == MSG_CHAT)
|
||||
|
@ -496,6 +498,31 @@ extern "C" void modc_message(int msg)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if(msg == MSG_MOTD)
|
||||
{
|
||||
const char *message = msg_unpack_string();
|
||||
|
||||
/* check for errors and invalid inputs */
|
||||
if(msg_unpack_error())
|
||||
return;
|
||||
|
||||
// process escaping
|
||||
str_copy(server_motd, message, sizeof(server_motd));
|
||||
for(int i = 0; server_motd[i]; i++)
|
||||
{
|
||||
if(server_motd[i] == '\\')
|
||||
{
|
||||
if(server_motd[i+1] == 'n')
|
||||
{
|
||||
server_motd[i] = ' ';
|
||||
server_motd[i+1] = '\n';
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dbg_msg("game", "MOTD: %s", server_motd);
|
||||
}
|
||||
else if(msg == MSG_SETINFO)
|
||||
{
|
||||
int cid = msg_unpack_int();
|
||||
|
|
|
@ -28,7 +28,7 @@ extern "C" {
|
|||
extern data_container *data;
|
||||
|
||||
extern bool menu_active;
|
||||
extern bool menu_game_active;
|
||||
//extern bool menu_game_active;
|
||||
|
||||
static bool need_restart = false;
|
||||
|
||||
|
@ -60,6 +60,8 @@ static vec4 color_tabbar_active = color_tabbar_active_outgame;
|
|||
enum
|
||||
{
|
||||
PAGE_NEWS=0,
|
||||
PAGE_GAME,
|
||||
PAGE_SERVER_INFO,
|
||||
PAGE_INTERNET,
|
||||
PAGE_LAN,
|
||||
PAGE_FAVORITES,
|
||||
|
@ -67,6 +69,8 @@ enum
|
|||
PAGE_SYSTEM,
|
||||
};
|
||||
|
||||
static int menu_game_page = PAGE_GAME;
|
||||
|
||||
static void ui_draw_browse_icon(int what, const RECT *r)
|
||||
{
|
||||
gfx_texture_set(data->images[IMAGE_BROWSEICONS].id);
|
||||
|
@ -464,11 +468,13 @@ static int menu2_render_menubar(RECT r)
|
|||
|
||||
int active_page = config.ui_page;
|
||||
int new_page = -1;
|
||||
if(menu_game_active)
|
||||
active_page = -1;
|
||||
|
||||
if(client_state() != CLIENTSTATE_OFFLINE)
|
||||
active_page = menu_game_page;
|
||||
|
||||
if(client_state() == CLIENTSTATE_OFFLINE)
|
||||
{
|
||||
/* offline menus */
|
||||
if(0) // this is not done yet
|
||||
{
|
||||
ui_vsplit_l(&box, 90.0f, &button, &box);
|
||||
|
@ -477,43 +483,52 @@ static int menu2_render_menubar(RECT r)
|
|||
new_page = PAGE_NEWS;
|
||||
ui_vsplit_l(&box, 30.0f, 0, &box);
|
||||
}
|
||||
|
||||
ui_vsplit_l(&box, 110.0f, &button, &box);
|
||||
static int internet_button=0;
|
||||
if (ui_do_button(&internet_button, "Internet", active_page==PAGE_INTERNET, &button, ui_draw_menu_tab_button, 0))
|
||||
{
|
||||
client_serverbrowse_refresh(0);
|
||||
new_page = PAGE_INTERNET;
|
||||
}
|
||||
|
||||
ui_vsplit_l(&box, 4.0f, 0, &box);
|
||||
ui_vsplit_l(&box, 90.0f, &button, &box);
|
||||
static int lan_button=0;
|
||||
if (ui_do_button(&lan_button, "LAN", active_page==PAGE_LAN, &button, ui_draw_menu_tab_button, 0))
|
||||
{
|
||||
client_serverbrowse_refresh(1);
|
||||
new_page = PAGE_LAN;
|
||||
}
|
||||
|
||||
if(0) // this one is not done yet
|
||||
{
|
||||
ui_vsplit_l(&box, 4.0f, 0, &box);
|
||||
ui_vsplit_l(&box, 120.0f, &button, &box);
|
||||
static int favorites_button=0;
|
||||
if (ui_do_button(&favorites_button, "Favorites", active_page==PAGE_FAVORITES, &button, ui_draw_menu_tab_button, 0))
|
||||
new_page = PAGE_FAVORITES;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/* online menus */
|
||||
ui_vsplit_l(&box, 90.0f, &button, &box);
|
||||
static int game_button=0;
|
||||
if (ui_do_button(&game_button, "Game", menu_game_active, &button, ui_draw_menu_tab_button, 0))
|
||||
menu_game_active = true;
|
||||
if (ui_do_button(&game_button, "Game", active_page==PAGE_GAME, &button, ui_draw_menu_tab_button, 0))
|
||||
new_page = PAGE_GAME;
|
||||
|
||||
ui_vsplit_l(&box, 4.0f, 0, &box);
|
||||
ui_vsplit_l(&box, 140.0f, &button, &box);
|
||||
static int server_info_button=0;
|
||||
if (ui_do_button(&server_info_button, "Server Info", active_page==PAGE_SERVER_INFO, &button, ui_draw_menu_tab_button, 0))
|
||||
new_page = PAGE_SERVER_INFO;
|
||||
|
||||
ui_vsplit_l(&box, 30.0f, 0, &box);
|
||||
}
|
||||
|
||||
ui_vsplit_l(&box, 110.0f, &button, &box);
|
||||
static int internet_button=0;
|
||||
if (ui_do_button(&internet_button, "Internet", active_page==PAGE_INTERNET, &button, ui_draw_menu_tab_button, 0))
|
||||
{
|
||||
client_serverbrowse_refresh(0);
|
||||
new_page = PAGE_INTERNET;
|
||||
}
|
||||
|
||||
ui_vsplit_l(&box, 4.0f, 0, &box);
|
||||
ui_vsplit_l(&box, 90.0f, &button, &box);
|
||||
static int lan_button=0;
|
||||
if (ui_do_button(&lan_button, "LAN", active_page==PAGE_LAN, &button, ui_draw_menu_tab_button, 0))
|
||||
{
|
||||
client_serverbrowse_refresh(1);
|
||||
new_page = PAGE_LAN;
|
||||
}
|
||||
|
||||
if(0) // this one is not done yet
|
||||
{
|
||||
ui_vsplit_l(&box, 4.0f, 0, &box);
|
||||
ui_vsplit_l(&box, 120.0f, &button, &box);
|
||||
static int favorites_button=0;
|
||||
if (ui_do_button(&favorites_button, "Favorites", active_page==PAGE_FAVORITES, &button, ui_draw_menu_tab_button, 0))
|
||||
new_page = PAGE_FAVORITES;
|
||||
}
|
||||
|
||||
/*
|
||||
ui_vsplit_r(&box, 110.0f, &box, &button);
|
||||
static int system_button=0;
|
||||
|
@ -536,8 +551,10 @@ static int menu2_render_menubar(RECT r)
|
|||
|
||||
if(new_page != -1)
|
||||
{
|
||||
config.ui_page = new_page;
|
||||
menu_game_active = false;
|
||||
if(client_state() == CLIENTSTATE_OFFLINE)
|
||||
config.ui_page = new_page;
|
||||
else
|
||||
menu_game_page = new_page;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1655,7 +1672,6 @@ static void menu2_render_news(RECT main_view)
|
|||
ui_draw_rect(&main_view, color_tabbar_active, CORNER_ALL, 10.0f);
|
||||
}
|
||||
|
||||
|
||||
static void menu2_render_game(RECT main_view)
|
||||
{
|
||||
RECT button;
|
||||
|
@ -1728,6 +1744,18 @@ static void menu2_render_game(RECT main_view)
|
|||
}
|
||||
}
|
||||
|
||||
void menu2_render_serverinfo(RECT main_view)
|
||||
{
|
||||
// render background
|
||||
ui_draw_rect(&main_view, color_tabbar_active, CORNER_ALL, 10.0f);
|
||||
|
||||
// render motd
|
||||
RECT view;
|
||||
ui_margin(&main_view, 10.0f, &view);
|
||||
//void gfx_text(void *font, float x, float y, float size, const char *text, int max_width);
|
||||
gfx_text(0, view.x, view.y, 16, server_motd, -1);
|
||||
}
|
||||
|
||||
void menu_do_disconnected()
|
||||
{
|
||||
popup = POPUP_NONE;
|
||||
|
@ -1835,8 +1863,15 @@ int menu2_render()
|
|||
menu2_render_menubar(tab_bar);
|
||||
|
||||
// render current page
|
||||
if(menu_game_active)
|
||||
menu2_render_game(main_view);
|
||||
if(client_state() != CLIENTSTATE_OFFLINE)
|
||||
{
|
||||
if(menu_game_page == PAGE_GAME)
|
||||
menu2_render_game(main_view);
|
||||
else if(menu_game_page == PAGE_SERVER_INFO)
|
||||
menu2_render_serverinfo(main_view);
|
||||
else if(menu_game_page == PAGE_SETTINGS)
|
||||
menu2_render_settings(main_view);
|
||||
}
|
||||
else if(config.ui_page == PAGE_NEWS)
|
||||
menu2_render_news(main_view);
|
||||
else if(config.ui_page == PAGE_INTERNET)
|
||||
|
|
|
@ -40,6 +40,9 @@ raw_header
|
|||
enum
|
||||
{
|
||||
MSG_NULL=0,
|
||||
|
||||
MSG_MOTD, // server -> client, message of the day
|
||||
|
||||
MSG_SAY, // client -> server
|
||||
MSG_CHAT, // server -> client
|
||||
MSG_SETINFO, // server -> client - contains name, skin and color info
|
||||
|
|
|
@ -40,16 +40,17 @@ MACRO_CONFIG_INT(ui_color_alpha, 228, 0, 255)
|
|||
|
||||
|
||||
MACRO_CONFIG_INT(sv_warmup, 0, 0, 0)
|
||||
MACRO_CONFIG_STR(sv_msg, 512, "")
|
||||
MACRO_CONFIG_STR(sv_motd, 900, "")
|
||||
MACRO_CONFIG_INT(sv_teamdamage, 0, 0, 1)
|
||||
MACRO_CONFIG_STR(sv_maprotation, 512, "")
|
||||
MACRO_CONFIG_INT(sv_powerups, 1, 0, 1)
|
||||
MACRO_CONFIG_INT(sv_scorelimit, 20, 0, 1000)
|
||||
MACRO_CONFIG_INT(sv_timelimit, 0, 0, 1000)
|
||||
MACRO_CONFIG_STR(sv_gametype, 32, "dm")
|
||||
MACRO_CONFIG_INT(sv_restart, 0, 0, 120)
|
||||
MACRO_CONFIG_INT(sv_kick, -1, 0, 0)
|
||||
MACRO_CONFIG_INT(sv_tournament_mode, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
/* should be removed as they are commands and not variables */
|
||||
MACRO_CONFIG_INT(sv_restart, 0, 0, 120)
|
||||
MACRO_CONFIG_STR(sv_msg, 512, "")
|
||||
MACRO_CONFIG_INT(sv_kick, -1, 0, 0)
|
||||
|
|
|
@ -2138,6 +2138,12 @@ void mods_connected(int client_id)
|
|||
else
|
||||
players[client_id].team = gameobj->getteam(client_id);
|
||||
}
|
||||
|
||||
|
||||
msg_pack_start(MSG_MOTD, MSGFLAG_VITAL);
|
||||
msg_pack_string(config.sv_motd, 900);
|
||||
msg_pack_end();
|
||||
server_send_msg(client_id);
|
||||
}
|
||||
|
||||
void mods_client_drop(int client_id)
|
||||
|
|
Loading…
Reference in a new issue