From: z411 Date: Tue, 22 Feb 2022 03:32:48 +0000 (-0300) Subject: Merge branch 'master' into z411/bai-server X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=9d213ded78896cff0b1449f93c77319e6a98c01a;p=xonotic%2Fxonotic-data.pk3dir.git Merge branch 'master' into z411/bai-server --- 9d213ded78896cff0b1449f93c77319e6a98c01a diff --cc qcsrc/client/hud/panel/timer.qc index 095e44307,f70e5a280..7613347b6 --- a/qcsrc/client/hud/panel/timer.qc +++ b/qcsrc/client/hud/panel/timer.qc @@@ -38,32 -36,18 +38,36 @@@ void HUD_Timer( mySize -= '2 2 0' * panel_bg_padding; } - string timer; - float timelimit, timeleft, minutesLeft; + string timer_sub = ""; + float timelimit, timeleft, minutesLeft, overtimes, timeout_last; timelimit = STAT(TIMELIMIT); + overtimes = STAT(OVERTIMESADDED); + timeout_last = STAT(TIMEOUT_LAST); - timeleft = bound(0, timelimit * 60 + STAT(GAMESTARTTIME) - time, timelimit * 60); + if (autocvar_hud_panel_timer_unbound){ + timeleft = max(0, timelimit * 60 + STAT(GAMESTARTTIME) - time); + } else { + timeleft = bound(0, timelimit * 60 + STAT(GAMESTARTTIME) - time, timelimit * 60); + } timeleft = ceil(timeleft); + // countdown sound + // if 3 use server dictated option, otherwise the client's + int countdown_type; + if(autocvar_cl_timer_countdown == 3) + countdown_type = sv_timer_countdown; + else + countdown_type = autocvar_cl_timer_countdown; + + if(countdown_type && !warmup_stage && timeleft > 0 && timeleft != last_timeleft && timeleft <= 10) + { + if(countdown_type == 1 || (countdown_type == 2 && spectatee_status)) + sound(NULL, CH_INFO, SND_ENDCOUNT, VOL_BASE, ATTN_NONE); + + last_timeleft = timeleft; + } + minutesLeft = floor(timeleft / 60); float warmup_timeleft = 0; @@@ -86,47 -70,26 +90,46 @@@ timer_color = '1 0 0'; //red if (intermission_time) { - timer = seconds_tostring(max(0, floor(intermission_time - STAT(GAMESTARTTIME)))); - } else if (warmup_stage && warmup_timeleft >= 60) { - timer = _("WARMUP"); - } else if (autocvar_hud_panel_timer_increment || (!warmup_stage && timelimit == 0) || (warmup_stage && warmup_timeleft <= 0)) { - if (time < STAT(GAMESTARTTIME)) - if (autocvar_hud_panel_timer_unbound){ - timer = seconds_tostring(-(STAT(GAMESTARTTIME) - time)); - } else { - timer = seconds_tostring(0); //while restart is still active, show 00:00 - } + timer = max(0, floor(intermission_time - STAT(GAMESTARTTIME))); + timer_sub = "Intermission"; - //} else if (autocvar_hud_panel_timer_increment || (!warmup_stage && timelimit == 0) || (warmup_stage && warmup_timeleft <= 0)) { + } else if (timeout_last) { + if(autocvar_hud_panel_timer_increment) + timer = max(0, floor(timeout_last - STAT(GAMESTARTTIME))); else - timer = seconds_tostring(floor(time - STAT(GAMESTARTTIME))); - } else { - if(warmup_stage) - timer = seconds_tostring(warmup_timeleft); + timer = ceil(max(0, timelimit * 60 + STAT(GAMESTARTTIME) - timeout_last)); + timer_sub = "Timeout"; + } else if (autocvar_hud_panel_timer_increment || timelimit == 0) { + // Time elapsed timer + if((warmup_stage && warmup_timeleft <= 0) || time < STAT(GAMESTARTTIME)) + timer = 0; else - timer = seconds_tostring(timeleft); + timer = floor(time - STAT(GAMESTARTTIME)); + } else { + // Time left timer + if(warmup_stage) { + if(warmup_timeleft <= 0) + timer = floor(timelimit * 60); + else + timer = warmup_timeleft; + } else { + timer = timeleft; + } + } + + if(warmup_stage) + timer_sub = "Warmup"; + else if(overtimes == 1) + timer_sub = "Overtime"; + else if (overtimes > 1) + timer_sub = sprintf("Overtime #%d", overtimes); + + drawstring_aspect(pos, seconds_tostring(timer), mySize, timer_color, panel_fg_alpha, DRAWFLAG_NORMAL); + + if(timer_sub != "") { + pos.y += mySize.y; + mySize.y = mySize.y / 2; + drawstring_aspect(pos, timer_sub, mySize, '1 0 0', panel_fg_alpha, DRAWFLAG_NORMAL); } - - drawstring_aspect(pos, timer, mySize, timer_color, panel_fg_alpha, DRAWFLAG_NORMAL); draw_endBoldFont(); } diff --cc qcsrc/server/command/vote.qc index cf48ca1a7,40b621aa9..8019d4a42 --- a/qcsrc/server/command/vote.qc +++ b/qcsrc/server/command/vote.qc @@@ -486,8 -475,9 +488,10 @@@ void ReadyRestart_force(bool is_fake_ro FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), { CS(it).allowed_timeouts = autocvar_sv_timeout_number; }); } + round_handler_Activate(!warmup_stage); - if (!sv_ready_restart_after_countdown || warmup_stage) reset_map(true, is_fake_round_start); + if (!sv_ready_restart_after_countdown || warmup_stage) + reset_map(true, is_fake_round_start); + if (autocvar_sv_eventlog) GameLogEcho(":restart"); } diff --cc qcsrc/server/weapons/accuracy.qh index 285da0727,d5d9f97d9..cf698d98c --- a/qcsrc/server/weapons/accuracy.qh +++ b/qcsrc/server/weapons/accuracy.qh @@@ -20,13 -20,10 +20,11 @@@ float autocvar_sv_accuracy_data_share = 1; - .bool cvar_cl_accuracy_data_share; - REPLICATE(cvar_cl_accuracy_data_share, bool, "cl_accuracy_data_share"); - .bool cvar_cl_accuracy_data_receive; - REPLICATE(cvar_cl_accuracy_data_receive, bool, "cl_accuracy_data_receive"); + REPLICATE_INIT(bool, cvar_cl_accuracy_data_share); + REPLICATE_INIT(bool, cvar_cl_accuracy_data_receive); .entity accuracy; +.entity roundaccuracy; .float accuracy_frags[REGISTRY_MAX(Weapons)]; .float accuracy_hit[REGISTRY_MAX(Weapons)];