iw5_bot_warfare/maps/mp/bots/_hud_util.gsc
2021-05-08 20:21:17 -06:00

852 lines
19 KiB
Plaintext

// IW5 PC GSC
// Decompiled by https://github.com/xensik/gsc-tool
setParent( var_0 )
{
if ( isdefined( self.parent ) && self.parent == var_0 )
return;
if ( isdefined( self.parent ) )
self.parent removeChild( self );
self.parent = var_0;
self.parent addChild( self );
if ( isdefined( self.point ) )
setPoint( self.point, self.relativePoint, self.xOffset, self.yOffset );
else
setPoint( "TOPLEFT" );
}
getParent()
{
return self.parent;
}
addChild( var_0 )
{
var_0.index = self.children.size;
self.children[self.children.size] = var_0;
}
removeChild( var_0 )
{
var_0.parent = undefined;
if ( self.children[self.children.size - 1] != var_0 )
{
self.children[var_0.index] = self.children[self.children.size - 1];
self.children[var_0.index].index = var_0.index;
}
self.children[self.children.size - 1] = undefined;
var_0.index = undefined;
}
setPoint( var_0, var_1, var_2, var_3, var_4 )
{
if ( !isdefined( var_4 ) )
var_4 = 0;
var_5 = getParent();
if ( var_4 )
self moveovertime( var_4 );
if ( !isdefined( var_2 ) )
var_2 = 0;
self.xOffset = var_2;
if ( !isdefined( var_3 ) )
var_3 = 0;
self.yOffset = var_3;
self.point = var_0;
self.alignx = "center";
self.aligny = "middle";
if ( issubstr( var_0, "TOP" ) )
self.aligny = "top";
if ( issubstr( var_0, "BOTTOM" ) )
self.aligny = "bottom";
if ( issubstr( var_0, "LEFT" ) )
self.alignx = "left";
if ( issubstr( var_0, "RIGHT" ) )
self.alignx = "right";
if ( !isdefined( var_1 ) )
var_1 = var_0;
self.relativePoint = var_1;
var_6 = "center_adjustable";
var_7 = "middle";
if ( issubstr( var_1, "TOP" ) )
var_7 = "top_adjustable";
if ( issubstr( var_1, "BOTTOM" ) )
var_7 = "bottom_adjustable";
if ( issubstr( var_1, "LEFT" ) )
var_6 = "left_adjustable";
if ( issubstr( var_1, "RIGHT" ) )
var_6 = "right_adjustable";
if ( var_5 == level.uiParent )
{
self.horzalign = var_6;
self.vertalign = var_7;
}
else
{
self.horzalign = var_5.horzalign;
self.vertalign = var_5.vertalign;
}
if ( maps\mp\_utility::strip_suffix( var_6, "_adjustable" ) == var_5.alignx )
{
var_8 = 0;
var_9 = 0;
}
else if ( var_6 == "center" || var_5.alignx == "center" )
{
var_8 = int( var_5.width / 2 );
if ( var_6 == "left_adjustable" || var_5.alignx == "right" )
var_9 = -1;
else
var_9 = 1;
}
else
{
var_8 = var_5.width;
if ( var_6 == "left_adjustable" )
var_9 = -1;
else
var_9 = 1;
}
self.x = var_5.x + var_8 * var_9;
if ( maps\mp\_utility::strip_suffix( var_7, "_adjustable" ) == var_5.aligny )
{
var_10 = 0;
var_11 = 0;
}
else if ( var_7 == "middle" || var_5.aligny == "middle" )
{
var_10 = int( var_5.height / 2 );
if ( var_7 == "top_adjustable" || var_5.aligny == "bottom" )
var_11 = -1;
else
var_11 = 1;
}
else
{
var_10 = var_5.height;
if ( var_7 == "top_adjustable" )
var_11 = -1;
else
var_11 = 1;
}
self.y = var_5.y + var_10 * var_11;
self.x = self.x + self.xOffset;
self.y = self.y + self.yOffset;
switch ( self.elemType )
{
case "bar":
setPointBar( var_0, var_1, var_2, var_3 );
break;
}
updateChildren();
}
setPointBar( var_0, var_1, var_2, var_3 )
{
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 );
}
updateBar( var_0, var_1 )
{
if ( self.elemType == "bar" )
updateBarScale( var_0, var_1 );
}
updateBarScale( var_0, var_1 )
{
var_2 = int( self.width * var_0 + 0.5 );
if ( !var_2 )
var_2 = 1;
self.bar.frac = var_0;
self.bar setshader( self.bar.shader, var_2, self.height );
if ( isdefined( var_1 ) && var_2 < self.width )
{
if ( var_1 > 0 )
self.bar scaleovertime( 1 - var_0 / var_1, self.width, self.height );
else if ( var_1 < 0 )
self.bar scaleovertime( var_0 / -1 * var_1, 1, self.height );
}
self.bar.rateOfChange = var_1;
self.bar.lastUpdateTime = gettime();
}
createFontString( var_0, var_1 )
{
var_2 = newclienthudelem( self );
var_2.elemType = "font";
var_2.font = var_0;
var_2.fontScale = var_1;
var_2.baseFontScale = var_1;
var_2.x = 0;
var_2.y = 0;
var_2.width = 0;
var_2.height = int( level.fontHeight * var_1 );
var_2.xOffset = 0;
var_2.yOffset = 0;
var_2.children = [];
var_2 setParent( level.uiParent );
var_2.hidden = 0;
return var_2;
}
createServerFontString( var_0, var_1, var_2 )
{
if ( isdefined( var_2 ) )
var_3 = newteamhudelem( var_2 );
else
var_3 = newhudelem();
var_3.elemType = "font";
var_3.font = var_0;
var_3.fontScale = var_1;
var_3.baseFontScale = var_1;
var_3.x = 0;
var_3.y = 0;
var_3.width = 0;
var_3.height = int( level.fontHeight * var_1 );
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
return var_3;
}
createServerTimer( var_0, var_1, var_2 )
{
if ( isdefined( var_2 ) )
var_3 = newteamhudelem( var_2 );
else
var_3 = newhudelem();
var_3.elemType = "timer";
var_3.font = var_0;
var_3.fontScale = var_1;
var_3.baseFontScale = var_1;
var_3.x = 0;
var_3.y = 0;
var_3.width = 0;
var_3.height = int( level.fontHeight * var_1 );
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
return var_3;
}
createTimer( var_0, var_1 )
{
var_2 = newclienthudelem( self );
var_2.elemType = "timer";
var_2.font = var_0;
var_2.fontScale = var_1;
var_2.baseFontScale = var_1;
var_2.x = 0;
var_2.y = 0;
var_2.width = 0;
var_2.height = int( level.fontHeight * var_1 );
var_2.xOffset = 0;
var_2.yOffset = 0;
var_2.children = [];
var_2 setParent( level.uiParent );
var_2.hidden = 0;
return var_2;
}
createIcon( var_0, var_1, var_2 )
{
var_3 = newclienthudelem( self );
var_3.elemType = "icon";
var_3.x = 0;
var_3.y = 0;
var_3.width = var_1;
var_3.height = var_2;
var_3.baseWidth = var_3.width;
var_3.baseHeight = var_3.height;
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
if ( isdefined( var_0 ) )
{
var_3 setshader( var_0, var_1, var_2 );
var_3.shader = var_0;
}
return var_3;
}
createServerIcon( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
var_4 = newteamhudelem( var_3 );
else
var_4 = newhudelem();
var_4.elemType = "icon";
var_4.x = 0;
var_4.y = 0;
var_4.width = var_1;
var_4.height = var_2;
var_4.baseWidth = var_4.width;
var_4.baseHeight = var_4.height;
var_4.xOffset = 0;
var_4.yOffset = 0;
var_4.children = [];
var_4 setParent( level.uiParent );
var_4.hidden = 0;
if ( isdefined( var_0 ) )
{
var_4 setshader( var_0, var_1, var_2 );
var_4.shader = var_0;
}
return var_4;
}
createServerBar( var_0, var_1, var_2, var_3, var_4, var_5 )
{
if ( isdefined( var_4 ) )
var_6 = newteamhudelem( var_4 );
else
var_6 = newhudelem();
var_6.x = 0;
var_6.y = 0;
var_6.frac = 0;
var_6.color = var_0;
var_6.sort = -2;
var_6.shader = "progress_bar_fill";
var_6 setshader( "progress_bar_fill", var_1, var_2 );
var_6.hidden = 0;
if ( isdefined( var_3 ) )
var_6.flashFrac = var_3;
if ( isdefined( var_4 ) )
var_7 = newteamhudelem( var_4 );
else
var_7 = newhudelem();
var_7.elemType = "bar";
var_7.x = 0;
var_7.y = 0;
var_7.width = var_1;
var_7.height = var_2;
var_7.xOffset = 0;
var_7.yOffset = 0;
var_7.bar = var_6;
var_7.children = [];
var_7.sort = -3;
var_7.color = ( 0, 0, 0 );
var_7.alpha = 0.5;
var_7 setParent( level.uiParent );
var_7 setshader( "progress_bar_bg", var_1, var_2 );
var_7.hidden = 0;
return var_7;
}
createBar( var_0, var_1, var_2, var_3 )
{
var_4 = newclienthudelem( self );
var_4.x = 0;
var_4.y = 0;
var_4.frac = 0;
var_4.color = var_0;
var_4.sort = -2;
var_4.shader = "progress_bar_fill";
var_4 setshader( "progress_bar_fill", var_1, var_2 );
var_4.hidden = 0;
if ( isdefined( var_3 ) )
var_4.flashFrac = var_3;
var_5 = newclienthudelem( self );
var_5.elemType = "bar";
var_5.width = var_1;
var_5.height = var_2;
var_5.xOffset = 0;
var_5.yOffset = 0;
var_5.bar = var_4;
var_5.children = [];
var_5.sort = -3;
var_5.color = ( 0, 0, 0 );
var_5.alpha = 0.5;
var_5 setParent( level.uiParent );
var_5 setshader( "progress_bar_bg", var_1 + 4, var_2 + 4 );
var_5.hidden = 0;
return var_5;
}
getCurrentFraction()
{
var_0 = self.bar.frac;
if ( isdefined( self.bar.rateOfChange ) )
{
var_0 = var_0 + gettime() - self.bar.lastUpdateTime * self.bar.rateOfChange;
if ( var_0 > 1 )
var_0 = 1;
if ( var_0 < 0 )
var_0 = 0;
}
return var_0;
}
createPrimaryProgressBar( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( self issplitscreenplayer() )
var_1 = var_1 + 20;
var_2 = createBar( ( 1, 1, 1 ), level.primaryProgressBarWidth, level.primaryProgressBarHeight );
var_2 setPoint( "CENTER", undefined, level.primaryProgressBarX + var_0, level.primaryProgressBarY + var_1 );
return var_2;
}
createPrimaryProgressBarText( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( self issplitscreenplayer() )
var_1 = var_1 + 20;
var_2 = createFontString( "hudbig", level.primaryProgressBarFontSize );
var_2 setPoint( "CENTER", undefined, level.primaryProgressBarTextX + var_0, level.primaryProgressBarTextY + var_1 );
var_2.sort = -1;
return var_2;
}
createTeamProgressBar( var_0 )
{
var_1 = createServerBar( ( 1, 0, 0 ), level.teamProgressBarWidth, level.teamProgressBarHeight, undefined, var_0 );
var_1 setPoint( "TOP", undefined, 0, level.teamProgressBarY );
return var_1;
}
createTeamProgressBarText( var_0 )
{
var_1 = createServerFontString( "default", level.teamProgressBarFontSize, var_0 );
var_1 setPoint( "TOP", undefined, 0, level.teamProgressBarTextY );
return var_1;
}
setFlashFrac( var_0 )
{
self.bar.flashFrac = var_0;
}
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;
}
}
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;
}
else if ( self.alpha != 1 )
self.alpha = 1;
}
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;
}
}
destroyElem()
{
var_0 = [];
for ( var_1 = 0; var_1 < self.children.size; var_1++ )
{
if ( isdefined( self.children[var_1] ) )
var_0[var_0.size] = self.children[var_1];
}
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
var_0[var_1] setParent( getParent() );
if ( self.elemType == "bar" || self.elemType == "bar_shader" )
self.bar destroy();
self destroy();
}
setIconShader( var_0 )
{
self setshader( var_0, self.width, self.height );
self.shader = var_0;
}
getIconShader( var_0 )
{
return self.shader;
}
setIconSize( var_0, var_1 )
{
self setshader( self.shader, var_0, var_1 );
}
setWidth( var_0 )
{
self.width = var_0;
}
setHeight( var_0 )
{
self.height = var_0;
}
setSize( var_0, var_1 )
{
self.width = var_0;
self.height = var_1;
}
updateChildren()
{
for ( var_0 = 0; var_0 < self.children.size; var_0++ )
{
var_1 = self.children[var_0];
var_1 setPoint( var_1.point, var_1.relativePoint, var_1.xOffset, var_1.yOffset );
}
}
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;
}
transitionZoomIn( var_0 )
{
switch ( self.elemType )
{
case "font":
case "timer":
self.fontScale = 6.3;
self changefontscaleovertime( var_0 );
self.fontScale = self.baseFontScale;
break;
case "icon":
self setshader( self.shader, self.width * 6, self.height * 6 );
self scaleovertime( var_0, self.width, self.height );
break;
}
}
transitionPulseFXIn( var_0, var_1 )
{
var_2 = int( var_0 ) * 1000;
var_3 = int( var_1 ) * 1000;
switch ( self.elemType )
{
case "font":
case "timer":
self setpulsefx( var_2 + 250, var_3 + var_2, var_2 + 250 );
break;
default:
break;
}
}
transitionSlideIn( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = "left";
switch ( var_1 )
{
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( var_0 );
self.x = self.xOffset;
self.y = self.yOffset;
}
transitionSlideOut( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = "left";
var_2 = self.xOffset;
var_3 = self.yOffset;
switch ( var_1 )
{
case "left":
var_2 = var_2 + 1000;
break;
case "right":
var_2 = var_2 - 1000;
break;
case "up":
var_3 = var_3 - 1000;
break;
case "down":
var_3 = var_3 + 1000;
break;
}
self.alpha = 1;
self moveovertime( var_0 );
self.x = var_2;
self.y = var_3;
}
transitionZoomOut( var_0 )
{
switch ( self.elemType )
{
case "font":
case "timer":
self changefontscaleovertime( var_0 );
self.fontScale = 6.3;
case "icon":
self scaleovertime( var_0, self.width * 6, self.height * 6 );
break;
}
}
transitionFadeIn( var_0 )
{
self fadeovertime( var_0 );
if ( isdefined( self.maxAlpha ) )
self.alpha = self.maxAlpha;
else
self.alpha = 1;
}
transitionFadeOut( var_0 )
{
self fadeovertime( 0.15 );
self.alpha = 0;
}
getWeeklyRef( var_0 )
{
for ( var_1 = 0; var_1 < 3; var_1++ )
{
var_2 = self getplayerdata( "weeklyChallengeId", var_1 );
var_3 = tablelookupbyrow( "mp/weeklyChallengesTable.csv", var_2, 0 );
if ( var_3 == var_0 )
return "ch_weekly_" + var_1;
}
return "";
}
getDailyRef( var_0 )
{
for ( var_1 = 0; var_1 < 3; var_1++ )
{
var_2 = self getplayerdata( "dailyChallengeId", var_1 );
var_3 = tablelookupbyrow( "mp/dailyChallengesTable.csv", var_2, 0 );
if ( var_3 == var_0 )
return "ch_daily_" + var_1;
}
return "";
}
ch_getProgress( var_0 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self getplayerdata( "challengeProgress", var_0 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self getplayerdata( "challengeProgress", getDailyRef( var_0 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self getplayerdata( "challengeProgress", getWeeklyRef( var_0 ) );
}
ch_getState( var_0 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self getplayerdata( "challengeState", var_0 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self getplayerdata( "challengeState", getDailyRef( var_0 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self getplayerdata( "challengeState", getWeeklyRef( var_0 ) );
}
ch_setProgress( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self setplayerdata( "challengeProgress", var_0, var_1 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self setplayerdata( "challengeProgress", getDailyRef( var_0 ), var_1 );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self setplayerdata( "challengeProgress", getWeeklyRef( var_0 ), var_1 );
}
ch_setState( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self setplayerdata( "challengeState", var_0, var_1 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self setplayerdata( "challengeState", getDailyRef( var_0 ), var_1 );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self setplayerdata( "challengeState", getWeeklyRef( var_0 ), var_1 );
}
ch_getTarget( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return int( tablelookup( "mp/allChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return int( tablelookup( "mp/dailyChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return int( tablelookup( "mp/weeklyChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
}