98 lines
2.7 KiB
Text
98 lines
2.7 KiB
Text
// common code goes here
|
|
|
|
// extra sound channels for the mod
|
|
enum ESWWMGZChannels
|
|
{
|
|
CHAN_YOUDONEFUCKEDUP = 63200, // exception handler
|
|
CHAN_DEMOVOICE = 63201, // demolitionist voices
|
|
CHAN_FOOTSTEP = 63202, // footstep sounds and others
|
|
CHAN_WEAPONEXTRA = 63203, // additional weapon sounds (usually loops)
|
|
CHAN_POWERUP = 63204, // powerup sounds
|
|
CHAN_POWERUPEXTRA = 63205, // additional powerup sounds
|
|
CHAN_JETPACK = 63206, // jetpack sound
|
|
CHAN_ITEMEXTRA = 63207, // additional item sounds
|
|
CHAN_WEAPONEXTRA2 = 63208, // additional weapon sound slot
|
|
CHAN_WEAPONEXTRA3 = 63209, // additional weapon sound slot (again)
|
|
CHAN_DAMAGE = 63210, // used for impact/hit sounds
|
|
CHAN_AMBEXTRA = 63211, // player ambience when submerged
|
|
CHAN_DEMOVOICEAUX = 63212, // extra channel to make oneliner voices louder
|
|
CHAN_DEMOVOICEAUX2 = 63213, // how many more channels do I need???
|
|
CHAN_DEMOVOICEAUX3 = 63214, // oh god, the loudening
|
|
CHAN_FUELREGEN = 63215 // sound of fuel regenerating
|
|
};
|
|
|
|
const FallbackTag = "AWESOME IT'S PENIS"; // used on tag processing, please don't mind the actual string used)
|
|
const MaxBouncePerTic = 40; // maximum simultaneous bounces in one tic for a lightweight actor before we consider it's stuck
|
|
|
|
// basic "does nothing" actor, used to remove stuff in CheckReplacement
|
|
Class SWWMNothing : Actor
|
|
{
|
|
States
|
|
{
|
|
Spawn:
|
|
TNT1 A 1;
|
|
Stop;
|
|
}
|
|
}
|
|
|
|
// fractic-compatible interpolators, with double value
|
|
Class SmoothLinearValueInterpolator
|
|
{
|
|
private double val, oldval, diff;
|
|
|
|
static SmoothLinearValueInterpolator Create( double val, double diff )
|
|
{
|
|
let v = new("SmoothLinearValueInterpolator");
|
|
v.oldval = v.val = val;
|
|
v.diff = diff;
|
|
return v;
|
|
}
|
|
void Reset( double newval )
|
|
{
|
|
oldval = val = newval;
|
|
}
|
|
void Update( double newval )
|
|
{
|
|
oldval = val;
|
|
if ( abs(newval-val) < diff ) val = newval;
|
|
else if ( val > newval ) val = max(newval,val-diff);
|
|
else val = min(newval,val+diff);
|
|
}
|
|
double GetValue( double fractic = 1. )
|
|
{
|
|
return SWWMUtility.Lerp(oldval,val,fractic);
|
|
}
|
|
}
|
|
Class SmoothDynamicValueInterpolator
|
|
{
|
|
private double val, oldval, factor, mindiff, maxdiff;
|
|
|
|
static SmoothDynamicValueInterpolator Create( double val, double factor, double mindiff, double maxdiff )
|
|
{
|
|
let v = new("SmoothDynamicValueInterpolator");
|
|
v.oldval = v.val = val;
|
|
v.factor = factor;
|
|
v.mindiff = mindiff;
|
|
v.maxdiff = maxdiff;
|
|
return v;
|
|
}
|
|
void Reset( double newval )
|
|
{
|
|
oldval = val = newval;
|
|
}
|
|
void Update( double newval )
|
|
{
|
|
oldval = val;
|
|
if ( abs(newval-val) < mindiff ) val = newval;
|
|
else
|
|
{
|
|
double diff = min(abs(newval-val)*factor,maxdiff);
|
|
if ( val > newval ) val = max(newval,val-diff);
|
|
else val = min(newval,val+diff);
|
|
}
|
|
}
|
|
double GetValue( double fractic = 1. )
|
|
{
|
|
return SWWMUtility.Lerp(oldval,val,fractic);
|
|
}
|
|
}
|