6 #define CONSTANT_SPEED_DECAY 17 classfield(BGMScript) .float bgmscriptstatetime;
35 return ((t - a) / d) * (s - 1) + 1;
42 float decayval, releaseval;
50 releaseval = s * (1 - t / r);
60 decayval = ((t + d) / d) * (s - 1) + 1;
61 return max(decayval, releaseval);
74 float decaytime, releasetime;
80 releasetime = (1 - amp / s) * r;
90 decaytime = (amp - 1) / (s - 1) * d - d;
91 return max(decaytime, releasetime);
103 s =
strcat(
"maps/", mi_shortname,
".bgs");
108 while((s =
fgets(fh)))
120 if(e.bgmscript !=
"")
127 m =
strcat(e.bgmscript,
" ");
130 e.bgmscriptline0 = -1;
136 e.bgmscriptline = e.bgmscriptline0 = i;
137 if(i >= bgmscriptbufsize)
139 LOG_INFOF(
"ERROR: bgmscript does not define %s", e.bgmscript);
151 #ifdef CONSTANT_SPEED_DECAY 152 return GetReleaseAmplitude(e.bgmscriptdecay, e.bgmscriptsustain * e.bgmscriptvolume, e.bgmscriptrelease, trel);
154 return GetReleaseAmplitude(e.bgmscriptdecay, e.bgmscriptsustain, e.bgmscriptrelease, trel) * e.bgmscriptvolume;
162 return GetAttackTime(e.bgmscriptattack, amp / e.bgmscriptvolume);
165 #ifdef CONSTANT_SPEED_DECAY 166 return GetReleaseTime(e.bgmscriptdecay, e.bgmscriptsustain * e.bgmscriptvolume, e.bgmscriptrelease, amp);
168 return GetReleaseTime(e.bgmscriptdecay, e.bgmscriptsustain, e.bgmscriptrelease, amp / e.bgmscriptvolume);
177 if(e.bgmscript ==
"")
183 e.just_toggled =
false;
192 e.bgmscriptline = e.bgmscriptline0;
196 e.bgmscriptstate =
false;
197 e.bgmscriptvolume = 1;
212 e.bgmscriptline += 1;
221 e.just_toggled = e.bgmscriptstate =
true;
222 e.bgmscriptvolume = vel;
225 e.just_toggled = e.bgmscriptstate =
false;
float GetTimeForAmplitude(entity e, float amp)
classfield(BGMScript) .float bgmscriptline
float GetAttackTime(float a, float amp)
void BGMScript_InitEntity(entity e)
spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 spree_cen s1 f1 s1 strcat(_("Level %s: "), "^BG%s\3\, _("^BGPress ^F2%s^BG to enter the game"))
float GetReleaseAmplitude(float d, float s, float r, float t)
float GetAttackDecaySustainAmplitude(float a, float d, float s, float t)
float GetCurrentAmplitude(entity e, float trel)
float doBGMScript(entity e)
float GetReleaseTime(float d, float s, float r, float amp)