mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-14 03:58:18 +00:00
moved 0.5 branch to trunk
This commit is contained in:
parent
b28ede2da2
commit
4bb1df3189
|
@ -269,20 +269,24 @@ if platform == "macosx" and arch == "ia32" then
|
||||||
debug_settings_ppc.config_ext = "_ppc_d"
|
debug_settings_ppc.config_ext = "_ppc_d"
|
||||||
debug_settings_ppc.cc.flags:Add("-arch ppc")
|
debug_settings_ppc.cc.flags:Add("-arch ppc")
|
||||||
debug_settings_ppc.link.flags:Add("-arch ppc")
|
debug_settings_ppc.link.flags:Add("-arch ppc")
|
||||||
|
debug_settings_ppc.cc.defines:Add("CONF_DEBUG")
|
||||||
|
|
||||||
release_settings_ppc = release_settings:Copy()
|
release_settings_ppc = release_settings:Copy()
|
||||||
release_settings_ppc.config_name = "release_ppc"
|
release_settings_ppc.config_name = "release_ppc"
|
||||||
release_settings_ppc.config_ext = "_ppc"
|
release_settings_ppc.config_ext = "_ppc"
|
||||||
release_settings_ppc.cc.flags:Add("-arch ppc")
|
release_settings_ppc.cc.flags:Add("-arch ppc")
|
||||||
release_settings_ppc.link.flags:Add("-arch ppc")
|
release_settings_ppc.link.flags:Add("-arch ppc")
|
||||||
|
release_settings_ppc.cc.defines:Add("CONF_RELEASE")
|
||||||
|
|
||||||
debug_settings_x86 = debug_settings:Copy()
|
debug_settings_x86 = debug_settings:Copy()
|
||||||
debug_settings_x86.config_name = "debug_x86"
|
debug_settings_x86.config_name = "debug_x86"
|
||||||
debug_settings_x86.config_ext = "_x86_d"
|
debug_settings_x86.config_ext = "_x86_d"
|
||||||
|
debug_settings_x86.cc.defines:Add("CONF_DEBUG")
|
||||||
|
|
||||||
release_settings_x86 = release_settings:Copy()
|
release_settings_x86 = release_settings:Copy()
|
||||||
release_settings_x86.config_name = "release_x86"
|
release_settings_x86.config_name = "release_x86"
|
||||||
release_settings_x86.config_ext = "_x86"
|
release_settings_x86.config_ext = "_x86"
|
||||||
|
release_settings_x86.cc.defines:Add("CONF_RELEASE")
|
||||||
|
|
||||||
ppc_d = build(debug_settings_ppc)
|
ppc_d = build(debug_settings_ppc)
|
||||||
x86_d = build(debug_settings_x86)
|
x86_d = build(debug_settings_x86)
|
||||||
|
|
|
@ -22,6 +22,7 @@ SDL = {
|
||||||
if platform == "macosx" then
|
if platform == "macosx" then
|
||||||
option.value = 1
|
option.value = 1
|
||||||
option.use_osxframework = 1
|
option.use_osxframework = 1
|
||||||
|
option.use_sdlconfig = nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1362,6 +1362,7 @@ static void client_pump_network()
|
||||||
if(client_state() != CLIENTSTATE_OFFLINE && netclient_state(net) == NETSTATE_OFFLINE)
|
if(client_state() != CLIENTSTATE_OFFLINE && netclient_state(net) == NETSTATE_OFFLINE)
|
||||||
{
|
{
|
||||||
client_set_state(CLIENTSTATE_OFFLINE);
|
client_set_state(CLIENTSTATE_OFFLINE);
|
||||||
|
client_disconnect();
|
||||||
dbg_msg("client", "offline error='%s'", netclient_error_string(net));
|
dbg_msg("client", "offline error='%s'", netclient_error_string(net));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1972,6 +1973,7 @@ static void con_serverdummy(void *result, void *user_data)
|
||||||
static void client_register_commands()
|
static void client_register_commands()
|
||||||
{
|
{
|
||||||
MACRO_REGISTER_COMMAND("quit", "", CFGFLAG_CLIENT, con_quit, 0x0, "Quit Teeworlds");
|
MACRO_REGISTER_COMMAND("quit", "", CFGFLAG_CLIENT, con_quit, 0x0, "Quit Teeworlds");
|
||||||
|
MACRO_REGISTER_COMMAND("exit", "", CFGFLAG_CLIENT, con_quit, 0x0, "Quit Teeworlds");
|
||||||
MACRO_REGISTER_COMMAND("connect", "s", CFGFLAG_CLIENT, con_connect, 0x0, "Connect to the specified host/ip");
|
MACRO_REGISTER_COMMAND("connect", "s", CFGFLAG_CLIENT, con_connect, 0x0, "Connect to the specified host/ip");
|
||||||
MACRO_REGISTER_COMMAND("disconnect", "", CFGFLAG_CLIENT, con_disconnect, 0x0, "Disconnect from the server");
|
MACRO_REGISTER_COMMAND("disconnect", "", CFGFLAG_CLIENT, con_disconnect, 0x0, "Disconnect from the server");
|
||||||
MACRO_REGISTER_COMMAND("ping", "", CFGFLAG_CLIENT, con_ping, 0x0, "Ping the current server");
|
MACRO_REGISTER_COMMAND("ping", "", CFGFLAG_CLIENT, con_ping, 0x0, "Ping the current server");
|
||||||
|
|
|
@ -252,11 +252,24 @@ int gfx_init()
|
||||||
if(config.dbg_stress)
|
if(config.dbg_stress)
|
||||||
no_gfx = 1;
|
no_gfx = 1;
|
||||||
|
|
||||||
if(SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0)
|
{
|
||||||
|
int systems = 0;
|
||||||
|
|
||||||
|
if(!no_gfx)
|
||||||
|
systems |= SDL_INIT_VIDEO;
|
||||||
|
|
||||||
|
if(config.snd_enable)
|
||||||
|
systems |= SDL_INIT_AUDIO;
|
||||||
|
|
||||||
|
if(config.cl_eventthread)
|
||||||
|
systems |= SDL_INIT_EVENTTHREAD;
|
||||||
|
|
||||||
|
if(SDL_Init(systems) < 0)
|
||||||
{
|
{
|
||||||
dbg_msg("gfx", "unable to init SDL: %s", SDL_GetError());
|
dbg_msg("gfx", "unable to init SDL: %s", SDL_GetError());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
atexit(SDL_Quit);
|
atexit(SDL_Quit);
|
||||||
|
|
||||||
|
|
|
@ -16,26 +16,16 @@ static unsigned char input_state[2][1024] = {{0}, {0}};
|
||||||
|
|
||||||
static int input_current = 0;
|
static int input_current = 0;
|
||||||
static int input_grabbed = 0;
|
static int input_grabbed = 0;
|
||||||
static int input_use_grab = 0;
|
|
||||||
|
|
||||||
static unsigned int last_release = 0;
|
static unsigned int last_release = 0;
|
||||||
static unsigned int release_delta = -1;
|
static unsigned int release_delta = -1;
|
||||||
|
|
||||||
void inp_mouse_relative(int *x, int *y)
|
void inp_mouse_relative(int *x, int *y)
|
||||||
{
|
{
|
||||||
static int last_x = 0, last_y = 0;
|
|
||||||
static int last_sens = 100.0f;
|
|
||||||
int nx = 0, ny = 0;
|
int nx = 0, ny = 0;
|
||||||
float sens = config.inp_mousesens/100.0f;
|
float sens = config.inp_mousesens/100.0f;
|
||||||
|
|
||||||
if(last_sens != config.inp_mousesens)
|
if(config.inp_grab)
|
||||||
{
|
|
||||||
last_x = (last_x/(float)last_sens)*(float)config.inp_mousesens;
|
|
||||||
last_y = (last_y/(float)last_sens)*(float)config.inp_mousesens;
|
|
||||||
last_sens = config.inp_mousesens;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(input_use_grab)
|
|
||||||
SDL_GetRelativeMouseState(&nx, &ny);
|
SDL_GetRelativeMouseState(&nx, &ny);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -101,7 +91,7 @@ void inp_mouse_mode_absolute()
|
||||||
{
|
{
|
||||||
SDL_ShowCursor(1);
|
SDL_ShowCursor(1);
|
||||||
input_grabbed = 0;
|
input_grabbed = 0;
|
||||||
if(input_use_grab)
|
if(config.inp_grab)
|
||||||
SDL_WM_GrabInput(SDL_GRAB_OFF);
|
SDL_WM_GrabInput(SDL_GRAB_OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +99,7 @@ void inp_mouse_mode_relative()
|
||||||
{
|
{
|
||||||
SDL_ShowCursor(0);
|
SDL_ShowCursor(0);
|
||||||
input_grabbed = 1;
|
input_grabbed = 1;
|
||||||
if(input_use_grab)
|
if(config.inp_grab)
|
||||||
SDL_WM_GrabInput(SDL_GRAB_ON);
|
SDL_WM_GrabInput(SDL_GRAB_ON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,6 +166,22 @@ static void client_serverbrowse_filter()
|
||||||
filtered = 1;
|
filtered = 1;
|
||||||
else if(config.b_filter_pure && (strcmp(serverlist[i]->info.gametype, "DM") != 0 && strcmp(serverlist[i]->info.gametype, "TDM") != 0 && strcmp(serverlist[i]->info.gametype, "CTF") != 0))
|
else if(config.b_filter_pure && (strcmp(serverlist[i]->info.gametype, "DM") != 0 && strcmp(serverlist[i]->info.gametype, "TDM") != 0 && strcmp(serverlist[i]->info.gametype, "CTF") != 0))
|
||||||
filtered = 1;
|
filtered = 1;
|
||||||
|
else if(config.b_filter_pure_map &&
|
||||||
|
!(strcmp(serverlist[i]->info.map, "dm1") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "dm2") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "dm6") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "dm7") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "dm8") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "dm9") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "ctf1") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "ctf2") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "ctf3") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "ctf4") == 0 ||
|
||||||
|
strcmp(serverlist[i]->info.map, "ctf5") == 0)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
filtered = 1;
|
||||||
|
}
|
||||||
else if(config.b_filter_ping < serverlist[i]->info.latency)
|
else if(config.b_filter_ping < serverlist[i]->info.latency)
|
||||||
filtered = 1;
|
filtered = 1;
|
||||||
else if(config.b_filter_compatversion && strncmp(serverlist[i]->info.version, modc_net_version(), 3) != 0)
|
else if(config.b_filter_compatversion && strncmp(serverlist[i]->info.version, modc_net_version(), 3) != 0)
|
||||||
|
@ -229,6 +245,7 @@ static int client_serverbrowse_sorthash()
|
||||||
i |= config.b_sort_order<<7;
|
i |= config.b_sort_order<<7;
|
||||||
i |= config.b_filter_compatversion<<8;
|
i |= config.b_filter_compatversion<<8;
|
||||||
i |= config.b_filter_pure<<9;
|
i |= config.b_filter_pure<<9;
|
||||||
|
i |= config.b_filter_pure_map<<10;
|
||||||
i |= config.b_filter_ping<<16;
|
i |= config.b_filter_ping<<16;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,10 @@ MACRO_CONFIG_STR(logfile, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filename to log
|
||||||
MACRO_CONFIG_INT(cl_cpu_throttle, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(cl_cpu_throttle, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
||||||
MACRO_CONFIG_INT(cl_editor, 0, 0, 1, CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(cl_editor, 0, 0, 1, CFGFLAG_CLIENT, "")
|
||||||
|
|
||||||
|
MACRO_CONFIG_INT(cl_eventthread, 0, 0, 1, CFGFLAG_CLIENT, "Enables the usage of a thread to pump the events")
|
||||||
|
|
||||||
|
MACRO_CONFIG_INT(inp_grab, 0, 0, 1, CFGFLAG_CLIENT, "Use forceful input grabbing method")
|
||||||
|
|
||||||
MACRO_CONFIG_STR(b_filter_string, 64, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser filtering string")
|
MACRO_CONFIG_STR(b_filter_string, 64, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Server browser filtering string")
|
||||||
|
|
||||||
MACRO_CONFIG_INT(b_filter_full, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out full server in browser")
|
MACRO_CONFIG_INT(b_filter_full, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out full server in browser")
|
||||||
|
@ -19,7 +23,8 @@ MACRO_CONFIG_INT(b_filter_empty, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter o
|
||||||
MACRO_CONFIG_INT(b_filter_pw, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out password protected servers in browser")
|
MACRO_CONFIG_INT(b_filter_pw, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out password protected servers in browser")
|
||||||
MACRO_CONFIG_INT(b_filter_ping, 999, 0, 999, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Ping to filter by in the server browser")
|
MACRO_CONFIG_INT(b_filter_ping, 999, 0, 999, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Ping to filter by in the server browser")
|
||||||
MACRO_CONFIG_STR(b_filter_gametype, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Game types to filter")
|
MACRO_CONFIG_STR(b_filter_gametype, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Game types to filter")
|
||||||
MACRO_CONFIG_INT(b_filter_pure, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-pure servers in browser")
|
MACRO_CONFIG_INT(b_filter_pure, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-standard servers in browser")
|
||||||
|
MACRO_CONFIG_INT(b_filter_pure_map, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-standard maps in browser")
|
||||||
MACRO_CONFIG_INT(b_filter_compatversion, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-compatible servers in browser")
|
MACRO_CONFIG_INT(b_filter_compatversion, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-compatible servers in browser")
|
||||||
|
|
||||||
MACRO_CONFIG_INT(b_sort, 0, 0, 256, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
MACRO_CONFIG_INT(b_sort, 0, 0, 256, CFGFLAG_SAVE|CFGFLAG_CLIENT, "")
|
||||||
|
@ -60,6 +65,7 @@ MACRO_CONFIG_INT(sv_max_clients, 8, 1, MAX_CLIENTS, CFGFLAG_SERVER, "Maximum num
|
||||||
MACRO_CONFIG_INT(sv_high_bandwidth, 0, 0, 1, CFGFLAG_SERVER, "Use high bandwidth mode. Doubles the bandwidth required for the server. LAN use only")
|
MACRO_CONFIG_INT(sv_high_bandwidth, 0, 0, 1, CFGFLAG_SERVER, "Use high bandwidth mode. Doubles the bandwidth required for the server. LAN use only")
|
||||||
MACRO_CONFIG_INT(sv_register, 1, 0, 1, CFGFLAG_SERVER, "Register server with master server for public listing")
|
MACRO_CONFIG_INT(sv_register, 1, 0, 1, CFGFLAG_SERVER, "Register server with master server for public listing")
|
||||||
MACRO_CONFIG_STR(sv_rcon_password, 32, "", CFGFLAG_SERVER, "Remote console password")
|
MACRO_CONFIG_STR(sv_rcon_password, 32, "", CFGFLAG_SERVER, "Remote console password")
|
||||||
|
MACRO_CONFIG_INT(sv_map_reload, 0, 0, 1, CFGFLAG_SERVER, "Reload the current map")
|
||||||
|
|
||||||
MACRO_CONFIG_INT(debug, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SERVER, "Debug mode")
|
MACRO_CONFIG_INT(debug, 0, 0, 1, CFGFLAG_CLIENT|CFGFLAG_SERVER, "Debug mode")
|
||||||
MACRO_CONFIG_INT(dbg_stress, 0, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SERVER, "Stress systems")
|
MACRO_CONFIG_INT(dbg_stress, 0, 0, 0, CFGFLAG_CLIENT|CFGFLAG_SERVER, "Stress systems")
|
||||||
|
@ -69,5 +75,3 @@ MACRO_CONFIG_INT(dbg_graphs, 0, 0, 1, CFGFLAG_CLIENT, "Performance graphs")
|
||||||
MACRO_CONFIG_INT(dbg_hitch, 0, 0, 0, CFGFLAG_SERVER, "Hitch warnings")
|
MACRO_CONFIG_INT(dbg_hitch, 0, 0, 0, CFGFLAG_SERVER, "Hitch warnings")
|
||||||
MACRO_CONFIG_STR(dbg_stress_server, 32, "localhost", CFGFLAG_CLIENT, "Server to stress")
|
MACRO_CONFIG_STR(dbg_stress_server, 32, "localhost", CFGFLAG_CLIENT, "Server to stress")
|
||||||
MACRO_CONFIG_INT(dbg_resizable, 0, 0, 0, CFGFLAG_CLIENT, "Enables window resizing")
|
MACRO_CONFIG_INT(dbg_resizable, 0, 0, 0, CFGFLAG_CLIENT, "Enables window resizing")
|
||||||
|
|
||||||
MACRO_CONFIG_INT(sv_map_reload, 0, 0, 1, CFGFLAG_SERVER, "Reload the current map")
|
|
||||||
|
|
|
@ -224,6 +224,12 @@ int unpack_packet(unsigned char *buffer, int size, NETPACKETCONSTRUCT *packet)
|
||||||
|
|
||||||
if(packet->flags&NET_PACKETFLAG_CONNLESS)
|
if(packet->flags&NET_PACKETFLAG_CONNLESS)
|
||||||
{
|
{
|
||||||
|
if(size < 6)
|
||||||
|
{
|
||||||
|
dbg_msg("", "connection less packet too small, %d", size);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
packet->flags = NET_PACKETFLAG_CONNLESS;
|
packet->flags = NET_PACKETFLAG_CONNLESS;
|
||||||
packet->ack = 0;
|
packet->ack = 0;
|
||||||
packet->num_chunks = 0;
|
packet->num_chunks = 0;
|
||||||
|
|
|
@ -70,6 +70,7 @@ static int snap_id_inited = 0;
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SRVCLIENT_STATE_EMPTY = 0,
|
SRVCLIENT_STATE_EMPTY = 0,
|
||||||
|
SRVCLIENT_STATE_AUTH,
|
||||||
SRVCLIENT_STATE_CONNECTING,
|
SRVCLIENT_STATE_CONNECTING,
|
||||||
SRVCLIENT_STATE_READY,
|
SRVCLIENT_STATE_READY,
|
||||||
SRVCLIENT_STATE_INGAME,
|
SRVCLIENT_STATE_INGAME,
|
||||||
|
@ -211,9 +212,42 @@ const char *server_clientname(int client_id)
|
||||||
return clients[client_id].name;
|
return clients[client_id].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *str_ltrim(const char *str)
|
||||||
|
{
|
||||||
|
while(*str && *str <= 32)
|
||||||
|
str++;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void str_rtrim(char *str)
|
||||||
|
{
|
||||||
|
int i = str_length(str);
|
||||||
|
while(i >= 0)
|
||||||
|
{
|
||||||
|
if(str[i] > 32)
|
||||||
|
break;
|
||||||
|
str[i] = 0;
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int server_try_setclientname(int client_id, const char *name)
|
static int server_try_setclientname(int client_id, const char *name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
char trimmed_name[64];
|
||||||
|
|
||||||
|
/* trim the name */
|
||||||
|
str_copy(trimmed_name, str_ltrim(name), sizeof(trimmed_name));
|
||||||
|
str_rtrim(trimmed_name);
|
||||||
|
dbg_msg("", "'%s' -> '%s'", name, trimmed_name);
|
||||||
|
name = trimmed_name;
|
||||||
|
|
||||||
|
|
||||||
|
/* check for empty names */
|
||||||
|
if(!name[0])
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* make sure that two clients doesn't have the same name */
|
||||||
for(i = 0; i < MAX_CLIENTS; i++)
|
for(i = 0; i < MAX_CLIENTS; i++)
|
||||||
if(i != client_id && clients[i].state >= SRVCLIENT_STATE_READY)
|
if(i != client_id && clients[i].state >= SRVCLIENT_STATE_READY)
|
||||||
{
|
{
|
||||||
|
@ -221,6 +255,7 @@ static int server_try_setclientname(int client_id, const char *name)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set the client name */
|
||||||
str_copy(clients[client_id].name, name, MAX_NAME_LENGTH);
|
str_copy(clients[client_id].name, name, MAX_NAME_LENGTH);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -544,7 +579,7 @@ static void reset_client(int cid)
|
||||||
|
|
||||||
static int new_client_callback(int cid, void *user)
|
static int new_client_callback(int cid, void *user)
|
||||||
{
|
{
|
||||||
clients[cid].state = SRVCLIENT_STATE_CONNECTING;
|
clients[cid].state = SRVCLIENT_STATE_AUTH;
|
||||||
clients[cid].name[0] = 0;
|
clients[cid].name[0] = 0;
|
||||||
clients[cid].clan[0] = 0;
|
clients[cid].clan[0] = 0;
|
||||||
clients[cid].authed = 0;
|
clients[cid].authed = 0;
|
||||||
|
@ -608,10 +643,9 @@ static void server_process_client_packet(NETCHUNK *packet)
|
||||||
int sys;
|
int sys;
|
||||||
int msg = msg_unpack_start(packet->data, packet->data_size, &sys);
|
int msg = msg_unpack_start(packet->data, packet->data_size, &sys);
|
||||||
|
|
||||||
if(sys)
|
if(clients[cid].state == SRVCLIENT_STATE_AUTH)
|
||||||
{
|
{
|
||||||
/* system message */
|
if(sys && msg == NETMSG_INFO)
|
||||||
if(msg == NETMSG_INFO)
|
|
||||||
{
|
{
|
||||||
char version[64];
|
char version[64];
|
||||||
const char *password;
|
const char *password;
|
||||||
|
@ -636,15 +670,26 @@ static void server_process_client_packet(NETCHUNK *packet)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clients[cid].state = SRVCLIENT_STATE_CONNECTING;
|
||||||
server_send_map(cid);
|
server_send_map(cid);
|
||||||
}
|
}
|
||||||
else if(msg == NETMSG_REQUEST_MAP_DATA)
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(sys)
|
||||||
|
{
|
||||||
|
/* system message */
|
||||||
|
if(msg == NETMSG_REQUEST_MAP_DATA)
|
||||||
{
|
{
|
||||||
int chunk = msg_unpack_int();
|
int chunk = msg_unpack_int();
|
||||||
int chunk_size = 1024-128;
|
int chunk_size = 1024-128;
|
||||||
int offset = chunk * chunk_size;
|
int offset = chunk * chunk_size;
|
||||||
int last = 0;
|
int last = 0;
|
||||||
|
|
||||||
|
/* drop faulty map data requests */
|
||||||
|
if(chunk < 0 || offset > current_map_size)
|
||||||
|
return;
|
||||||
|
|
||||||
if(offset+chunk_size >= current_map_size)
|
if(offset+chunk_size >= current_map_size)
|
||||||
{
|
{
|
||||||
chunk_size = current_map_size-offset;
|
chunk_size = current_map_size-offset;
|
||||||
|
@ -815,6 +860,7 @@ static void server_process_client_packet(NETCHUNK *packet)
|
||||||
if(clients[cid].state >= SRVCLIENT_STATE_READY)
|
if(clients[cid].state >= SRVCLIENT_STATE_READY)
|
||||||
mods_message(msg, cid);
|
mods_message(msg, cid);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,15 @@
|
||||||
|
|
||||||
#include "chat.hpp"
|
#include "chat.hpp"
|
||||||
|
|
||||||
void CHAT::on_reset()
|
void CHAT::on_statechange(int new_state, int old_state)
|
||||||
{
|
{
|
||||||
|
if(old_state <= CLIENTSTATE_CONNECTING)
|
||||||
|
{
|
||||||
mode = MODE_NONE;
|
mode = MODE_NONE;
|
||||||
for(int i = 0; i < MAX_LINES; i++)
|
for(int i = 0; i < MAX_LINES; i++)
|
||||||
lines[i].time = -1000000;
|
lines[i].time = 0;
|
||||||
current_line = 0;
|
current_line = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CHAT::con_say(void *result, void *user_data)
|
void CHAT::con_say(void *result, void *user_data)
|
||||||
|
|
|
@ -47,7 +47,7 @@ public:
|
||||||
void say(int team, const char *line);
|
void say(int team, const char *line);
|
||||||
|
|
||||||
virtual void on_console_init();
|
virtual void on_console_init();
|
||||||
virtual void on_reset();
|
virtual void on_statechange(int new_state, int old_state);
|
||||||
virtual void on_render();
|
virtual void on_render();
|
||||||
virtual void on_message(int msgtype, void *rawmsg);
|
virtual void on_message(int msgtype, void *rawmsg);
|
||||||
virtual bool on_input(INPUT_EVENT e);
|
virtual bool on_input(INPUT_EVENT e);
|
||||||
|
|
|
@ -277,7 +277,10 @@ void CONSOLE::on_render()
|
||||||
progress = 1.0f;
|
progress = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (console_state == CONSOLE_CLOSED || config.cl_editor)
|
if (console_state == CONSOLE_OPEN && config.cl_editor)
|
||||||
|
toggle(0);
|
||||||
|
|
||||||
|
if (console_state == CONSOLE_CLOSED)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (console_state == CONSOLE_OPEN)
|
if (console_state == CONSOLE_OPEN)
|
||||||
|
|
|
@ -171,7 +171,7 @@ void HUD::render_teambalancewarning()
|
||||||
{
|
{
|
||||||
// render prompt about team-balance
|
// render prompt about team-balance
|
||||||
bool flash = time_get()/(time_freq()/2)%2 == 0;
|
bool flash = time_get()/(time_freq()/2)%2 == 0;
|
||||||
if (gameclient.snap.gameobj && gameclient.snap.gameobj->flags&GAMEFLAG_TEAMS != 0)
|
if (gameclient.snap.gameobj && (gameclient.snap.gameobj->flags&GAMEFLAG_TEAMS) != 0)
|
||||||
{
|
{
|
||||||
if (config.cl_warning_teambalance && abs(gameclient.snap.team_size[0]-gameclient.snap.team_size[1]) >= 2)
|
if (config.cl_warning_teambalance && abs(gameclient.snap.team_size[0]-gameclient.snap.team_size[1]) >= 2)
|
||||||
{
|
{
|
||||||
|
|
|
@ -373,9 +373,14 @@ void MENUS::render_serverbrowser_filters(RECT view)
|
||||||
config.b_filter_compatversion ^= 1;
|
config.b_filter_compatversion ^= 1;
|
||||||
|
|
||||||
ui_hsplit_t(&view, 20.0f, &button, &view);
|
ui_hsplit_t(&view, 20.0f, &button, &view);
|
||||||
if (ui_do_button((char *)&config.b_filter_pure, "Only pure", config.b_filter_pure, &button, ui_draw_checkbox, 0))
|
if (ui_do_button((char *)&config.b_filter_pure, "Standard gametype", config.b_filter_pure, &button, ui_draw_checkbox, 0))
|
||||||
config.b_filter_pure ^= 1;
|
config.b_filter_pure ^= 1;
|
||||||
|
|
||||||
|
ui_hsplit_t(&view, 20.0f, &button, &view);
|
||||||
|
/*ui_vsplit_l(&button, 20.0f, 0, &button);*/
|
||||||
|
if (ui_do_button((char *)&config.b_filter_pure_map, "Standard map", config.b_filter_pure_map, &button, ui_draw_checkbox, 0))
|
||||||
|
config.b_filter_pure_map ^= 1;
|
||||||
|
|
||||||
ui_hsplit_t(&view, 20.0f, &button, &view);
|
ui_hsplit_t(&view, 20.0f, &button, &view);
|
||||||
ui_do_label(&button, "Game types: ", 14.0f, -1);
|
ui_do_label(&button, "Game types: ", 14.0f, -1);
|
||||||
ui_vsplit_l(&button, 95.0f, 0, &button);
|
ui_vsplit_l(&button, 95.0f, 0, &button);
|
||||||
|
|
|
@ -95,7 +95,7 @@ void PLAYERS::render_player(
|
||||||
bool is_teamplay = false;
|
bool is_teamplay = false;
|
||||||
bool new_tick = gameclient.new_tick;
|
bool new_tick = gameclient.new_tick;
|
||||||
if(gameclient.snap.gameobj)
|
if(gameclient.snap.gameobj)
|
||||||
is_teamplay = gameclient.snap.gameobj->flags&GAMEFLAG_TEAMS != 0;
|
is_teamplay = (gameclient.snap.gameobj->flags&GAMEFLAG_TEAMS) != 0;
|
||||||
|
|
||||||
// check for ninja
|
// check for ninja
|
||||||
if (player.weapon == WEAPON_NINJA)
|
if (player.weapon == WEAPON_NINJA)
|
||||||
|
|
|
@ -113,7 +113,7 @@ void SCOREBOARD::render_scoreboard(float x, float y, float w, int team, const ch
|
||||||
gfx_texture_set(-1);
|
gfx_texture_set(-1);
|
||||||
gfx_quads_begin();
|
gfx_quads_begin();
|
||||||
gfx_setcolor(0,0,0,0.5f);
|
gfx_setcolor(0,0,0,0.5f);
|
||||||
draw_round_rect(x-10.f, y-10.f, w, h, 40.0f);
|
draw_round_rect(x-10.f, y-10.f, w, h, 17.0f);
|
||||||
gfx_quads_end();
|
gfx_quads_end();
|
||||||
|
|
||||||
// render title
|
// render title
|
||||||
|
@ -157,10 +157,14 @@ void SCOREBOARD::render_scoreboard(float x, float y, float w, int team, const ch
|
||||||
|
|
||||||
if(item.type == NETOBJTYPE_PLAYER_INFO)
|
if(item.type == NETOBJTYPE_PLAYER_INFO)
|
||||||
{
|
{
|
||||||
players[num_players] = (const NETOBJ_PLAYER_INFO *)data;
|
const NETOBJ_PLAYER_INFO *info = (const NETOBJ_PLAYER_INFO *)data;
|
||||||
|
if(info->team == team)
|
||||||
|
{
|
||||||
|
players[num_players] = info;
|
||||||
num_players++;
|
num_players++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// sort players
|
// sort players
|
||||||
for(int k = 0; k < num_players; k++) // ffs, bubblesort
|
for(int k = 0; k < num_players; k++) // ffs, bubblesort
|
||||||
|
@ -182,24 +186,34 @@ void SCOREBOARD::render_scoreboard(float x, float y, float w, int team, const ch
|
||||||
gfx_text(0, x+w-70, y, 24.0f, "Ping", -1);
|
gfx_text(0, x+w-70, y, 24.0f, "Ping", -1);
|
||||||
y += 29.0f;
|
y += 29.0f;
|
||||||
|
|
||||||
|
float font_size = 35.0f;
|
||||||
|
float line_height = 50.0f;
|
||||||
|
float tee_sizemod = 1.0f;
|
||||||
|
float tee_offset = 0.0f;
|
||||||
|
|
||||||
|
if(num_players > 13)
|
||||||
|
{
|
||||||
|
font_size = 30.0f;
|
||||||
|
line_height = 40.0f;
|
||||||
|
tee_sizemod = 0.8f;
|
||||||
|
tee_offset = -5.0f;
|
||||||
|
}
|
||||||
|
|
||||||
// render player scores
|
// render player scores
|
||||||
for(int i = 0; i < num_players; i++)
|
for(int i = 0; i < num_players; i++)
|
||||||
{
|
{
|
||||||
const NETOBJ_PLAYER_INFO *info = players[i];
|
const NETOBJ_PLAYER_INFO *info = players[i];
|
||||||
|
|
||||||
// make sure that we render the correct team
|
// make sure that we render the correct team
|
||||||
if(team == -1 || info->team != team)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
char buf[128];
|
char buf[128];
|
||||||
float font_size = 35.0f;
|
|
||||||
if(info->local)
|
if(info->local)
|
||||||
{
|
{
|
||||||
// background so it's easy to find the local player
|
// background so it's easy to find the local player
|
||||||
gfx_texture_set(-1);
|
gfx_texture_set(-1);
|
||||||
gfx_quads_begin();
|
gfx_quads_begin();
|
||||||
gfx_setcolor(1,1,1,0.25f);
|
gfx_setcolor(1,1,1,0.25f);
|
||||||
draw_round_rect(x, y, w-20, 48, 20.0f);
|
draw_round_rect(x, y, w-20, line_height*0.95f, 17.0f);
|
||||||
gfx_quads_end();
|
gfx_quads_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,10 +242,12 @@ void SCOREBOARD::render_scoreboard(float x, float y, float w, int team, const ch
|
||||||
gfx_quads_end();
|
gfx_quads_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
render_tee(ANIMSTATE::get_idle(), &gameclient.clients[info->cid].render_info, EMOTE_NORMAL, vec2(1,0), vec2(x+90, y+28));
|
TEE_RENDER_INFO teeinfo = gameclient.clients[info->cid].render_info;
|
||||||
|
teeinfo.size *= tee_sizemod;
|
||||||
|
render_tee(ANIMSTATE::get_idle(), &teeinfo, EMOTE_NORMAL, vec2(1,0), vec2(x+90, y+28+tee_offset));
|
||||||
|
|
||||||
|
|
||||||
y += 50.0f;
|
y += line_height;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,9 @@ enum
|
||||||
TILERENDERFLAG_EXTEND=4,
|
TILERENDERFLAG_EXTEND=4,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct SPRITE;
|
//typedef struct SPRITE;
|
||||||
|
|
||||||
void select_sprite(SPRITE *spr, int flags=0, int sx=0, int sy=0);
|
void select_sprite(struct SPRITE *spr, int flags=0, int sx=0, int sy=0);
|
||||||
void select_sprite(int id, int flags=0, int sx=0, int sy=0);
|
void select_sprite(int id, int flags=0, int sx=0, int sy=0);
|
||||||
|
|
||||||
void draw_sprite(float x, float y, float size);
|
void draw_sprite(float x, float y, float size);
|
||||||
|
|
|
@ -1168,14 +1168,14 @@ static void do_map_editor(RECT view, RECT toolbar)
|
||||||
ui_set_hot_item(editor_id);
|
ui_set_hot_item(editor_id);
|
||||||
|
|
||||||
// do global operations like pan and zoom
|
// do global operations like pan and zoom
|
||||||
if(ui_active_item() == 0 && ui_mouse_button(0))
|
if(ui_active_item() == 0 && (ui_mouse_button(0) || ui_mouse_button(2)))
|
||||||
{
|
{
|
||||||
start_wx = wx;
|
start_wx = wx;
|
||||||
start_wy = wy;
|
start_wy = wy;
|
||||||
start_mx = mx;
|
start_mx = mx;
|
||||||
start_my = my;
|
start_my = my;
|
||||||
|
|
||||||
if(inp_key_pressed(KEY_LCTRL) || inp_key_pressed(KEY_RCTRL))
|
if(inp_key_pressed(KEY_LCTRL) || inp_key_pressed(KEY_RCTRL) || ui_mouse_button(2))
|
||||||
{
|
{
|
||||||
if(inp_key_pressed(KEY_LSHIFT))
|
if(inp_key_pressed(KEY_LSHIFT))
|
||||||
operation = OP_PAN_EDITOR;
|
operation = OP_PAN_EDITOR;
|
||||||
|
@ -2416,6 +2416,7 @@ static int popup_menu_file(RECT view)
|
||||||
static int save_as_button = 0;
|
static int save_as_button = 0;
|
||||||
static int open_button = 0;
|
static int open_button = 0;
|
||||||
static int append_button = 0;
|
static int append_button = 0;
|
||||||
|
static int exit_button = 0;
|
||||||
|
|
||||||
RECT slot;
|
RECT slot;
|
||||||
ui_hsplit_t(&view, 2.0f, &slot, &view);
|
ui_hsplit_t(&view, 2.0f, &slot, &view);
|
||||||
|
@ -2457,6 +2458,14 @@ static int popup_menu_file(RECT view)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ui_hsplit_t(&view, 10.0f, &slot, &view);
|
||||||
|
ui_hsplit_t(&view, 12.0f, &slot, &view);
|
||||||
|
if(do_editor_button(&exit_button, "Exit", 0, &slot, draw_editor_button_menuitem, 0, "Exits from the editor"))
|
||||||
|
{
|
||||||
|
config.cl_editor = 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -546,10 +546,10 @@ void CHARACTER::tick()
|
||||||
|
|
||||||
float phys_size = 28.0f;
|
float phys_size = 28.0f;
|
||||||
// handle death-tiles
|
// handle death-tiles
|
||||||
if(col_get((int)(pos.x+phys_size/2), (int)(pos.y-phys_size/2))&COLFLAG_DEATH ||
|
if(col_get((int)(pos.x+phys_size/3), (int)(pos.y-phys_size/3))&COLFLAG_DEATH ||
|
||||||
col_get((int)(pos.x+phys_size/2), (int)(pos.y+phys_size/2))&COLFLAG_DEATH ||
|
col_get((int)(pos.x+phys_size/3), (int)(pos.y+phys_size/3))&COLFLAG_DEATH ||
|
||||||
col_get((int)(pos.x-phys_size/2), (int)(pos.y-phys_size/2))&COLFLAG_DEATH ||
|
col_get((int)(pos.x-phys_size/3), (int)(pos.y-phys_size/3))&COLFLAG_DEATH ||
|
||||||
col_get((int)(pos.x-phys_size/2), (int)(pos.y+phys_size/2))&COLFLAG_DEATH)
|
col_get((int)(pos.x-phys_size/3), (int)(pos.y+phys_size/3))&COLFLAG_DEATH)
|
||||||
{
|
{
|
||||||
die(player->client_id, WEAPON_WORLD);
|
die(player->client_id, WEAPON_WORLD);
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,11 +216,8 @@ void FLAG::reset()
|
||||||
void FLAG::snap(int snapping_client)
|
void FLAG::snap(int snapping_client)
|
||||||
{
|
{
|
||||||
NETOBJ_FLAG *flag = (NETOBJ_FLAG *)snap_new_item(NETOBJTYPE_FLAG, team, sizeof(NETOBJ_FLAG));
|
NETOBJ_FLAG *flag = (NETOBJ_FLAG *)snap_new_item(NETOBJTYPE_FLAG, team, sizeof(NETOBJ_FLAG));
|
||||||
if(!networkclipped(snapping_client, pos))
|
|
||||||
{
|
|
||||||
flag->x = (int)pos.x;
|
flag->x = (int)pos.x;
|
||||||
flag->y = (int)pos.y;
|
flag->y = (int)pos.y;
|
||||||
}
|
|
||||||
flag->team = team;
|
flag->team = team;
|
||||||
flag->carried_by = -1;
|
flag->carried_by = -1;
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ void mods_message(int msgtype, int client_id)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
str_format(chatmsg, sizeof(chatmsg), "Vote called to kick '%s'", server_clientname(kick_id));
|
str_format(chatmsg, sizeof(chatmsg), "%s called for vote to kick '%s'", server_clientname(client_id), server_clientname(kick_id));
|
||||||
str_format(desc, sizeof(desc), "Kick '%s'", server_clientname(kick_id));
|
str_format(desc, sizeof(desc), "Kick '%s'", server_clientname(kick_id));
|
||||||
str_format(cmd, sizeof(cmd), "kick %d", kick_id);
|
str_format(cmd, sizeof(cmd), "kick %d", kick_id);
|
||||||
if (!config.sv_vote_kick_bantime)
|
if (!config.sv_vote_kick_bantime)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */
|
/* copyright (c) 2007 magnus auvinen, see licence.txt for more info */
|
||||||
#include "generated/nethash.c"
|
#include "generated/nethash.c"
|
||||||
#define GAME_VERSION "0.5.1"
|
#define GAME_VERSION "trunk"
|
||||||
#define GAME_NETVERSION "0.5 " GAME_NETVERSION_HASH
|
#define GAME_NETVERSION "0.5 " GAME_NETVERSION_HASH
|
||||||
|
|
Loading…
Reference in a new issue