Files
IL-GSC/IW/PC/ALL/scripts/mp/_hud_util.gsc
2023-10-27 03:49:01 -04:00

990 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\mp\_hud_util.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 42
* Decompile Time: 1643 ms
* Timestamp: 10/27/2023 12:20:36 AM
*******************************************************************/
//Function Number: 1
setparent(param_00)
{
if(isdefined(self.parent) && self.parent == param_00)
{
return;
}
if(isdefined(self.parent))
{
self.parent removechild(self);
}
self.parent = param_00;
self.parent addchild(self);
if(isdefined(self.point))
{
setpoint(self.point,self.relativepoint,self.xoffset,self.yoffset);
return;
}
setpoint("TOPLEFT");
}
//Function Number: 2
getparent()
{
return self.parent;
}
//Function Number: 3
removedestroyedchildren()
{
if(isdefined(self.childchecktime) && self.childchecktime == gettime())
{
return;
}
self.childchecktime = gettime();
var_00 = [];
foreach(var_02 in self.children)
{
if(!isdefined(var_02))
{
continue;
}
var_02.index = var_00.size;
var_00[var_00.size] = var_02;
}
self.children = var_00;
}
//Function Number: 4
addchild(param_00)
{
param_00.index = self.children.size;
self.children[self.children.size] = param_00;
removedestroyedchildren();
}
//Function Number: 5
removechild(param_00)
{
param_00.parent = undefined;
if(self.children[self.children.size - 1] != param_00)
{
self.children[param_00.index] = self.children[self.children.size - 1];
self.children[param_00.index].index = param_00.index;
}
self.children[self.children.size - 1] = undefined;
param_00.index = undefined;
}
//Function Number: 6
setpoint(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(param_04))
{
param_04 = 0;
}
var_05 = getparent();
if(param_04)
{
self moveovertime(param_04);
}
if(!isdefined(param_02))
{
param_02 = 0;
}
self.xoffset = param_02;
if(!isdefined(param_03))
{
param_03 = 0;
}
self.yoffset = param_03;
self.point = param_00;
self.alignx = "center";
self.aligny = "middle";
if(issubstr(param_00,"TOP"))
{
self.aligny = "top";
}
if(issubstr(param_00,"BOTTOM"))
{
self.aligny = "bottom";
}
if(issubstr(param_00,"LEFT"))
{
self.alignx = "left";
}
if(issubstr(param_00,"RIGHT"))
{
self.alignx = "right";
}
if(!isdefined(param_01))
{
param_01 = param_00;
}
self.relativepoint = param_01;
var_06 = "center_adjustable";
var_07 = "middle";
if(issubstr(param_01,"TOP"))
{
var_07 = "top_adjustable";
}
if(issubstr(param_01,"BOTTOM"))
{
var_07 = "bottom_adjustable";
}
if(issubstr(param_01,"LEFT"))
{
var_06 = "left_adjustable";
}
if(issubstr(param_01,"RIGHT"))
{
var_06 = "right_adjustable";
}
if(var_05 == level.uiparent)
{
self.horzalign = var_06;
self.vertalign = var_07;
}
else
{
self.horzalign = var_05.horzalign;
self.vertalign = var_05.vertalign;
}
if(scripts\mp\_utility::strip_suffix(var_06,"_adjustable") == var_05.alignx)
{
var_08 = 0;
var_09 = 0;
}
else if(var_08 == "center" || var_07.alignx == "center")
{
var_08 = int(var_07.width / 2);
if(var_07 == "left_adjustable" || var_06.alignx == "right")
{
var_09 = -1;
}
else
{
var_09 = 1;
}
}
else
{
var_08 = var_07.width;
if(var_07 == "left_adjustable")
{
var_09 = -1;
}
else
{
var_09 = 1;
}
}
self.x = var_05.x + var_08 * var_09;
if(scripts\mp\_utility::strip_suffix(var_07,"_adjustable") == var_05.aligny)
{
var_0A = 0;
var_0B = 0;
}
else if(var_09 == "middle" || var_07.aligny == "middle")
{
var_0A = int(var_07.height / 2);
if(var_08 == "top_adjustable" || var_06.aligny == "bottom")
{
var_0B = -1;
}
else
{
var_0B = 1;
}
}
else
{
var_0A = var_07.height;
if(var_08 == "top_adjustable")
{
var_0B = -1;
}
else
{
var_0B = 1;
}
}
self.y = var_05.y + var_0A * var_0B;
self.x = self.x + self.xoffset;
self.y = self.y + self.yoffset;
switch(self.elemtype)
{
case "bar":
setpointbar(param_00,param_01,param_02,param_03);
break;
}
updatechildren();
}
//Function Number: 7
setpointbar(param_00,param_01,param_02,param_03)
{
self.bar.horzalign = self.horzalign;
self.bar.vertalign = self.vertalign;
self.bar.alignx = "left";
self.bar.aligny = self.aligny;
self.bar.y = self.y;
if(self.alignx == "left")
{
self.bar.x = self.x;
}
else if(self.alignx == "right")
{
self.bar.x = self.x - self.width;
}
else
{
self.bar.x = self.x - int(self.width / 2);
}
if(self.aligny == "top")
{
self.bar.y = self.y;
}
else if(self.aligny == "bottom")
{
self.bar.y = self.y;
}
updatebar(self.bar.frac);
}
//Function Number: 8
updatebar(param_00,param_01)
{
if(self.elemtype == "bar")
{
updatebarscale(param_00,param_01);
}
}
//Function Number: 9
updatebarscale(param_00,param_01)
{
var_02 = int(self.width * param_00 + 0.5);
if(!var_02)
{
var_02 = 1;
}
self.bar.frac = param_00;
self.bar setshader(self.bar.shader,var_02,self.height);
if(isdefined(param_01) && var_02 < self.width)
{
if(param_01 > 0)
{
self.bar scaleovertime(1 - param_00 / param_01,self.width,self.height);
}
else if(param_01 < 0)
{
self.bar scaleovertime(param_00 / -1 * param_01,1,self.height);
}
}
self.bar.rateofchange = param_01;
self.bar.lastupdatetime = gettime();
}
//Function Number: 10
createfontstring(param_00,param_01)
{
var_02 = newclienthudelem(self);
var_02.elemtype = "font";
var_02.font = param_00;
var_02.fontscale = param_01;
var_02.basefontscale = param_01;
var_02.x = 0;
var_02.y = 0;
var_02.width = 0;
var_02.height = int(level.fontheight * param_01);
var_02.xoffset = 0;
var_02.yoffset = 0;
var_02.children = [];
var_02 setparent(level.uiparent);
var_02.hidden = 0;
return var_02;
}
//Function Number: 11
createserverfontstring(param_00,param_01,param_02)
{
if(isdefined(param_02))
{
var_03 = newteamhudelem(param_02);
}
else
{
var_03 = newhudelem();
}
var_03.elemtype = "font";
var_03.font = param_00;
var_03.fontscale = param_01;
var_03.basefontscale = param_01;
var_03.x = 0;
var_03.y = 0;
var_03.width = 0;
var_03.height = int(level.fontheight * param_01);
var_03.xoffset = 0;
var_03.yoffset = 0;
var_03.children = [];
var_03 setparent(level.uiparent);
var_03.hidden = 0;
return var_03;
}
//Function Number: 12
createservertimer(param_00,param_01,param_02)
{
if(isdefined(param_02))
{
var_03 = newteamhudelem(param_02);
}
else
{
var_03 = newhudelem();
}
var_03.elemtype = "timer";
var_03.font = param_00;
var_03.fontscale = param_01;
var_03.basefontscale = param_01;
var_03.x = 0;
var_03.y = 0;
var_03.width = 0;
var_03.height = int(level.fontheight * param_01);
var_03.xoffset = 0;
var_03.yoffset = 0;
var_03.children = [];
var_03 setparent(level.uiparent);
var_03.hidden = 0;
return var_03;
}
//Function Number: 13
createtimer(param_00,param_01)
{
var_02 = newclienthudelem(self);
var_02.elemtype = "timer";
var_02.font = param_00;
var_02.fontscale = param_01;
var_02.basefontscale = param_01;
var_02.x = 0;
var_02.y = 0;
var_02.width = 0;
var_02.height = int(level.fontheight * param_01);
var_02.xoffset = 0;
var_02.yoffset = 0;
var_02.children = [];
var_02 setparent(level.uiparent);
var_02.hidden = 0;
return var_02;
}
//Function Number: 14
createicon(param_00,param_01,param_02)
{
var_03 = newclienthudelem(self);
var_03.elemtype = "icon";
var_03.x = 0;
var_03.y = 0;
var_03.width = param_01;
var_03.height = param_02;
var_03.basewidth = var_03.width;
var_03.baseheight = var_03.height;
var_03.xoffset = 0;
var_03.yoffset = 0;
var_03.children = [];
var_03 setparent(level.uiparent);
var_03.hidden = 0;
if(isdefined(param_00))
{
var_03 setshader(param_00,param_01,param_02);
var_03.shader = param_00;
}
return var_03;
}
//Function Number: 15
createservericon(param_00,param_01,param_02,param_03)
{
if(isdefined(param_03))
{
var_04 = newteamhudelem(param_03);
}
else
{
var_04 = newhudelem();
}
var_04.elemtype = "icon";
var_04.x = 0;
var_04.y = 0;
var_04.width = param_01;
var_04.height = param_02;
var_04.basewidth = var_04.width;
var_04.baseheight = var_04.height;
var_04.xoffset = 0;
var_04.yoffset = 0;
var_04.children = [];
var_04 setparent(level.uiparent);
var_04.hidden = 0;
if(isdefined(param_00))
{
var_04 setshader(param_00,param_01,param_02);
var_04.shader = param_00;
}
return var_04;
}
//Function Number: 16
createserverbar(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(isdefined(param_04))
{
var_06 = newteamhudelem(param_04);
}
else
{
var_06 = newhudelem();
}
var_06.x = 0;
var_06.y = 0;
var_06.frac = 0;
var_06.color = param_00;
var_06.sort = -2;
var_06.shader = "progress_bar_fill";
var_06 setshader("progress_bar_fill",param_01,param_02);
var_06.hidden = 0;
if(isdefined(param_03))
{
var_06.flashfrac = param_03;
}
if(isdefined(param_04))
{
var_07 = newteamhudelem(param_04);
}
else
{
var_07 = newhudelem();
}
var_07.elemtype = "bar";
var_07.x = 0;
var_07.y = 0;
var_07.width = param_01;
var_07.height = param_02;
var_07.xoffset = 0;
var_07.yoffset = 0;
var_07.bar = var_06;
var_07.children = [];
var_07.sort = -3;
var_07.color = (0,0,0);
var_07.alpha = 0.5;
var_07 setparent(level.uiparent);
var_07 setshader("progress_bar_bg",param_01,param_02);
var_07.hidden = 0;
return var_07;
}
//Function Number: 17
createbar(param_00,param_01,param_02,param_03)
{
var_04 = newclienthudelem(self);
var_04.x = 0;
var_04.y = 0;
var_04.frac = 0;
var_04.color = param_00;
var_04.sort = -2;
var_04.shader = "progress_bar_fill";
var_04 setshader("progress_bar_fill",param_01,param_02);
var_04.hidden = 0;
if(isdefined(param_03))
{
var_04.flashfrac = param_03;
}
var_05 = newclienthudelem(self);
var_05.elemtype = "bar";
var_05.width = param_01;
var_05.height = param_02;
var_05.xoffset = 0;
var_05.yoffset = 0;
var_05.bar = var_04;
var_05.children = [];
var_05.sort = -3;
var_05.color = (0,0,0);
var_05.alpha = 0.5;
var_05 setparent(level.uiparent);
var_05 setshader("progress_bar_bg",param_01 + 4,param_02 + 4);
var_05.hidden = 0;
return var_05;
}
//Function Number: 18
getcurrentfraction()
{
var_00 = self.bar.frac;
if(isdefined(self.bar.rateofchange))
{
var_00 = var_00 + gettime() - self.bar.lastupdatetime * self.bar.rateofchange;
if(var_00 > 1)
{
var_00 = 1;
}
if(var_00 < 0)
{
var_00 = 0;
}
}
return var_00;
}
//Function Number: 19
createprimaryprogressbar(param_00,param_01)
{
if(isagent(self))
{
return undefined;
}
if(!isdefined(param_00))
{
param_00 = 0;
}
if(!isdefined(param_01))
{
param_01 = -25;
}
if(self issplitscreenplayer())
{
param_01 = param_01 + 20;
}
var_02 = createbar((1,1,1),level.primaryprogressbarwidth,level.primaryprogressbarheight);
var_02 setpoint("CENTER",undefined,level.primaryprogressbarx + param_00,level.primaryprogressbary + param_01);
return var_02;
}
//Function Number: 20
createprimaryprogressbartext(param_00,param_01,param_02,param_03)
{
if(isagent(self))
{
return undefined;
}
if(!isdefined(param_00))
{
param_00 = 0;
}
if(!isdefined(param_01))
{
param_01 = -25;
}
if(self issplitscreenplayer())
{
param_01 = param_01 + 20;
}
var_04 = level.primaryprogressbarfontsize;
var_05 = "default";
if(isdefined(param_02))
{
var_04 = param_02;
}
if(isdefined(param_03))
{
var_05 = param_03;
}
var_06 = createfontstring(var_05,var_04);
var_06 setpoint("CENTER",undefined,level.primaryprogressbartextx + param_00,level.primaryprogressbartexty + param_01);
var_06.sort = -1;
return var_06;
}
//Function Number: 21
createteamprogressbar(param_00)
{
var_01 = createserverbar((1,0,0),level.teamprogressbarwidth,level.teamprogressbarheight,undefined,param_00);
var_01 setpoint("TOP",undefined,0,level.teamprogressbary);
return var_01;
}
//Function Number: 22
createteamprogressbartext(param_00)
{
var_01 = createserverfontstring("default",level.teamprogressbarfontsize,param_00);
var_01 setpoint("TOP",undefined,0,level.teamprogressbartexty);
return var_01;
}
//Function Number: 23
setflashfrac(param_00)
{
self.bar.flashfrac = param_00;
}
//Function Number: 24
hideelem()
{
if(self.hidden)
{
return;
}
self.hidden = 1;
if(self.alpha != 0)
{
self.alpha = 0;
}
if(self.elemtype == "bar" || self.elemtype == "bar_shader")
{
self.bar.hidden = 1;
if(self.bar.alpha != 0)
{
self.bar.alpha = 0;
}
}
}
//Function Number: 25
showelem()
{
if(!self.hidden)
{
return;
}
self.hidden = 0;
if(self.elemtype == "bar" || self.elemtype == "bar_shader")
{
if(self.alpha != 0.5)
{
self.alpha = 0.5;
}
self.bar.hidden = 0;
if(self.bar.alpha != 1)
{
self.bar.alpha = 1;
return;
}
return;
}
if(self.alpha != 1)
{
self.alpha = 1;
}
}
//Function Number: 26
flashthread()
{
self endon("death");
if(!self.hidden)
{
self.alpha = 1;
}
for(;;)
{
if(self.frac >= self.flashfrac)
{
if(!self.hidden)
{
self fadeovertime(0.3);
self.alpha = 0.2;
wait(0.35);
self fadeovertime(0.3);
self.alpha = 1;
}
wait(0.7);
continue;
}
if(!self.hidden && self.alpha != 1)
{
self.alpha = 1;
}
wait(0.05);
}
}
//Function Number: 27
destroyelem()
{
var_00 = [];
for(var_01 = 0;var_01 < self.children.size;var_01++)
{
if(isdefined(self.children[var_01]))
{
var_00[var_00.size] = self.children[var_01];
}
}
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01] setparent(getparent());
}
if(self.elemtype == "bar" || self.elemtype == "bar_shader")
{
self.bar destroy();
}
self destroy();
}
//Function Number: 28
seticonshader(param_00)
{
self setshader(param_00,self.width,self.height);
self.shader = param_00;
}
//Function Number: 29
geticonshader(param_00)
{
return self.shader;
}
//Function Number: 30
seticonsize(param_00,param_01)
{
self setshader(self.shader,param_00,param_01);
}
//Function Number: 31
setwidth(param_00)
{
self.width = param_00;
}
//Function Number: 32
setheight(param_00)
{
self.height = param_00;
}
//Function Number: 33
setsize(param_00,param_01)
{
self.width = param_00;
self.height = param_01;
}
//Function Number: 34
updatechildren()
{
for(var_00 = 0;var_00 < self.children.size;var_00++)
{
var_01 = self.children[var_00];
var_01 setpoint(var_01.point,var_01.relativepoint,var_01.xoffset,var_01.yoffset);
}
}
//Function Number: 35
transitionreset()
{
self.x = self.xoffset;
self.y = self.yoffset;
if(self.elemtype == "font")
{
self.fontscale = self.basefontscale;
self.label = &"";
}
else if(self.elemtype == "icon")
{
self setshader(self.shader,self.width,self.height);
}
self.alpha = 0;
}
//Function Number: 36
transitionzoomin(param_00)
{
switch(self.elemtype)
{
case "timer":
case "font":
self.fontscale = 6.3;
self changefontscaleovertime(param_00);
self.fontscale = self.basefontscale;
break;
case "icon":
self setshader(self.shader,self.width * 6,self.height * 6);
self scaleovertime(param_00,self.width,self.height);
break;
}
}
//Function Number: 37
transitionpulsefxin(param_00,param_01)
{
var_02 = int(param_00) * 1000;
var_03 = int(param_01) * 1000;
switch(self.elemtype)
{
case "timer":
case "font":
self setpulsefx(var_02 + 250,var_03 + var_02,var_02 + 250);
break;
default:
break;
}
}
//Function Number: 38
transitionslidein(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "left";
}
switch(param_01)
{
case "left":
self.x = self.x + 1000;
break;
case "right":
self.x = self.x - 1000;
break;
case "up":
self.y = self.y - 1000;
break;
case "down":
self.y = self.y + 1000;
break;
}
self moveovertime(param_00);
self.x = self.xoffset;
self.y = self.yoffset;
}
//Function Number: 39
transitionslideout(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = "left";
}
var_02 = self.xoffset;
var_03 = self.yoffset;
switch(param_01)
{
case "left":
var_02 = var_02 + 1000;
break;
case "right":
var_02 = var_02 - 1000;
break;
case "up":
var_03 = var_03 - 1000;
break;
case "down":
var_03 = var_03 + 1000;
break;
}
self.alpha = 1;
self moveovertime(param_00);
self.x = var_02;
self.y = var_03;
}
//Function Number: 40
transitionzoomout(param_00)
{
switch(self.elemtype)
{
case "timer":
case "font":
self changefontscaleovertime(param_00);
self.fontscale = 6.3;
break;
case "icon":
self scaleovertime(param_00,self.width * 6,self.height * 6);
break;
}
}
//Function Number: 41
transitionfadein(param_00)
{
self fadeovertime(param_00);
if(isdefined(self.maxalpha))
{
self.alpha = self.maxalpha;
return;
}
self.alpha = 1;
}
//Function Number: 42
transitionfadeout(param_00)
{
self fadeovertime(0.15);
self.alpha = 0;
}