Skip to content

Commit

Permalink
Merge pull request #1131 from FortressOne/staging
Browse files Browse the repository at this point in the history
Staging
  • Loading branch information
drzel authored Aug 17, 2023
2 parents 7379dca + d9e8df7 commit 22a0a96
Show file tree
Hide file tree
Showing 17 changed files with 450 additions and 478 deletions.
98 changes: 42 additions & 56 deletions csqc/hud_helpers.qc
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,26 @@ float(PanelID id, vector pos, vector size, float alpha, float enabled) hud_panel
return sui_is_clicked(id);
};

static string lmp_lookup(float c, float use_red) {
string lmp = "";
switch (c) {
case ' ': return "";
case '*': return "use_red"; // Caller must handle
case '-': lmp = "num_minus"; break;
case '/': lmp = "num_slash"; break;
case ':': lmp = "num_colon"; break;
default: {
if (c >= '0' && c <= '9')
lmp = sprintf("num_%g", c-'0');
else
return "sb_quad"; // Unrecognized.
}
}
if (use_red)
lmp = strcat("a", lmp);
return lmp;
}

// this draws backwards, haven't bothered to change as we don't use it
void Hud_DrawLargeValue(vector pos, float value, float threshhold, float size)
{
Expand Down Expand Up @@ -143,81 +163,47 @@ void Hud_DrawLargeValue(vector pos, float value, float threshhold, float size)

void Hud_DrawStringLMP(vector pos, string value, float size)
{
float c;
float len, i;
float len, i, j;
string s;
if (!size) size = 24;
vector vsize = [size, size, 0];
s = value;
len = strlen(s);
i = 0;
float use_red = FALSE;

while(i<len) {
c = str2chr(s, i);
if (c == 47) // "/"
{
// because i'm dodgy
HRC_drawpic(pos + [i * size, 0, 0], "NUM_SLASH", vsize, '1 1 1', 1, 0);
}
else if (c == 37) // "%"
{
HRC_drawpic(pos + [i * size, 0, 0], "num_percent", vsize, '1 1 1', 1, 0);
}
else
{
HRC_drawpic(pos + [i * size, 0, 0], sprintf("num_%g", c-'0'), vsize, '1 1 1', 1, 0);
for (i = 0, j = 0; i < len; i++) {
string lmp = lmp_lookup(str2chr(s,i), use_red);
if (lmp == "use_red") {
use_red = !use_red;
continue;
}
i+=1;

if (lmp != "")
HRC_drawpic(pos + [j * size, 0, 0], lmp, vsize, '1 1 1', 1, 0);
j++;
}
}

void Hud_DrawStringLMPThreshold(vector pos, string value, float size, float threshold)
{
float c;
float len, i, intval;
string s, lmpname;
float len, i, j, intval, use_red = FALSE;
string s, lmp;
if (!size) size = 24;
vector vsize = [size, size, 0];
s = value;
intval = stof(value);
len = strlen(s);
i = 0;

while(i<len) {
c = str2chr(s, i);
lmpname = "";
switch (c) {
case 37: // "%"
{
lmpname = "num_percent";
break;
}
case 45: // "-"
{
lmpname = "num_minus";
break;
}
case 47: // "/"
{
lmpname = "num_slash";
break;
}
case 58: // ":"
{
lmpname = "num_colon";
break;
}
default:
{
lmpname = sprintf("num_%g", c-'0');
break;
}
for (i = 0, j = 0; i < len; i++) {
string lmp = lmp_lookup(str2chr(s,i), use_red || intval < threshold);
if (lmp == "use_red") {
use_red = !use_red;
continue;
}
if(intval < threshold) {
lmpname = strcat("a", lmpname);
}
HRC_drawpic(pos + [i * size, 0, 0], lmpname, vsize, '1 1 1', 1, 0);
i+=1;

if (lmp != "")
HRC_drawpic(pos + [j * size, 0, 0], lmp, vsize, '1 1 1', 1, 0);
j++;
}
}

Expand Down
130 changes: 45 additions & 85 deletions csqc/main.qc
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ void PushToSlotHistory(float value) {
slot_history[slot_history_top] = value;
}

float RemoveFromSlotHistory(float slot) {
void RemoveFromSlotHistory(float slot) {
if (slot_history_top == -1) {
// Stack is empty
return -1;
return;
}

for (float i = slot_history_top; i >= 0; i--) {
Expand All @@ -52,6 +52,28 @@ float RemoveFromSlotHistory(float slot) {
}


static void BindAlias(TFAlias* tfa) {
if (tfa->impulse == 0 && tfa->cmd == "") // Some aliases are !csqc-only
return;

if (tfa->impulse)
localcmd(sprintf("alias %s impulse %d\n", tfa->alias, tfa->impulse));
else
localcmd(strcat("alias ", tfa->alias, " \"", tfa->cmd, "\"\n"));
}

static void SetupAliases() {
float i;

for (i = 0; i < client_aliases.length; i++)
BindAlias(&client_aliases[i]);

for (i = 0; i < csqc_aliases.length; i++)
BindAlias(&csqc_aliases[i]);

print("Aliases set\n");
}

DECLARE_PERF_SAMPLER(frame_timing, 60, 0.1);
DECLARE_PERF_SAMPLER(hud_timing, 60, 0.1);
DECLARE_PERF_SAMPLER(hud_partial_timing, 60, 0.1);
Expand Down Expand Up @@ -106,27 +128,11 @@ noref void(float apiver, string enginename, float enginever) CSQC_Init = {

registercommand("+aux_jump");
registercommand("-aux_jump");
registercommand("+special");
registercommand("-special");
registercommand("+special2");
registercommand("-special2");
registercommand("+grenade1");
registercommand("-grenade1");
registercommand("+grenade2");
registercommand("-grenade2");
registercommand("+dropflag");
registercommand("-dropflag");
registercommand("+rj");
registercommand("-rj");
// registercommand("+quick1");
// registercommand("-quick1");
// registercommand("+quick2");
// registercommand("-quick2");
// registercommand("+quick3");
// registercommand("-quick3");
// registercommand("+quick4");
// registercommand("-quick4");
registercommand("tracktarget");

registercommand("slot_a");

registercommand("+fo_showscores");
registercommand("-fo_showscores");
registercommand("fo_settings_check");
Expand Down Expand Up @@ -159,12 +165,17 @@ noref void(float apiver, string enginename, float enginever) CSQC_Init = {
vote_list_filter = "";

TF_Init();

ClientSettings_Check();
SetupAliases();
print("CSQC initialization finished\n");
};

noref void() CSQC_WorldLoaded = {
print("CSQC World Loaded\n");
ClientSettings_Check();
localcmd("menu_restart\n");
// Resolve race condition where models packed into map package sometimes do
// not resolve correctly.
localcmd("flush\n");
}

void FO_CussView();
Expand Down Expand Up @@ -214,6 +225,7 @@ void Slot_Keydown(float slot) {

void Slot_Keyup(float slot) {
RemoveFromSlotHistory(slot);

if (slot_history_top >= 0) { // still holding another +slot bind
localcmd(sprintf("impulse %f\n", slot_history[slot_history_top]));
} else {
Expand All @@ -224,6 +236,8 @@ void Slot_Keyup(float slot) {
}
}

void W_ChangeToSlotAlternate(string opt1, string opt2);

noref float(string cmd) CSQC_ConsoleCommand = {
tokenize_console(cmd);
float val;
Expand Down Expand Up @@ -378,9 +392,6 @@ noref float(string cmd) CSQC_ConsoleCommand = {
FO_Show_Scores(FALSE);
}
break;
case "tracktarget":
localcmd("cmd tracktarget\n");
break;
case "+aux_jump":
jump_counter++;
localcmd("+jump\n");
Expand All @@ -397,60 +408,6 @@ noref float(string cmd) CSQC_ConsoleCommand = {
}

break;
case "+special":
localcmd("+button3\n");
break;
case "-special":
localcmd("-button3\n");
break;
case "+special2":
localcmd("+button4\n");
break;
case "-special2":
localcmd("-button4\n");
break;
case "+grenade1":
localcmd("+button5\n");
break;
case "-grenade1":
localcmd("-button5\n");
break;
case "+grenade2":
localcmd("+button6\n");
break;
case "-grenade2":
localcmd("-button6\n");
break;
case "+dropflag":
localcmd("+button7\n");
break;
case "-dropflag":
localcmd("-button7\n");
break;
// case "+quick1":
// localcmd("+button8\n");
// break;
// case "-quick1":
// localcmd("-button8\n");
// break;
// case "+quick2":
// localcmd("+button9\n");
// break;
// case "-quick2":
// localcmd("-button9\n");
// break;
// case "+quick3":
// localcmd("+button10\n");
// break;
// case "-quick3":
// localcmd("-button10\n");
// break;
// case "+quick4":
// localcmd("+button11\n");
// break;
// case "-quick4":
// localcmd("-button11\n");
// break;
case "+rj":
if (player_class == PC_SOLDIER || player_class == PC_PYRO) {
localcmd("+button4\n");
Expand All @@ -473,6 +430,9 @@ noref float(string cmd) CSQC_ConsoleCommand = {
case "vote_removemap":
RemoveVoteMap(argv(1), TRUE);
break;
case "slot_a": // Alternate between passed options
W_ChangeToSlotAlternate(argv(1), argv(2));
break;
}

return FALSE;
Expand Down Expand Up @@ -565,20 +525,20 @@ static vector FO_Conc_Offset() {
}

float amp = Blend(table[i+1].amp_end, cur->amp_end, rem, cur->duration);
amp *= pstate_pred.conc_amp;
float a = (cur->duration - rem) / cur->duration * cur->cycles * 2 * M_PI;
a += cur->offset * 2 * M_PI;

return [amp * sin(a), amp * sin(a) * cos(a), 0];
return [sin(a), sin(a) * cos(a), amp * pstate_pred.conc_amp];
}

static void FO_UpdateConcAim() {
makevectors(input_angles);
vector o = FO_Conc_Offset();

cuss_state.c_forward = normalize(v_forward * 200 + o.x * v_right + o.y * v_up);
cuss_state.c_forward = normalize(v_forward * 200 + o.x * o.z * v_right + o.y * o.z * v_up);

cuss_state.c_view = vectoangles(v_forward * 200 + o.x/4 * v_right + o.y/4 * v_up);
vector vv = o * min(o.z / 4, 20);
cuss_state.c_view = vectoangles(v_forward * 200 + vv.x * v_right + vv.y * v_up);
cuss_state.c_view[0] *= -1;
}

Expand Down Expand Up @@ -809,7 +769,7 @@ void Perf_Status() {
}

void ClientSettings_Check() {
localcmd("cl_movespeedkey 1");
localcmd("cl_movespeedkey 1\n");
if (cvar("worker_count") == 0)
printf("ERROR: Please set `worker_count 4` to reduce stuttering!\n");
if (cvar("r_temporalscenecache") == 0)
Expand Down
Loading

0 comments on commit 22a0a96

Please sign in to comment.