X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fbgmscript.qc;h=697cae91ca3296d36c9d0c79612bb575a7ab4e38;hb=2f239100c8b77275d69972f91ac4e7ff913f3d7c;hp=353c5419abd055c12e626ec34451d2099c7cac54;hpb=7aad1a234787d8c6fcd042dad3ec7243e716c96c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/bgmscript.qc b/qcsrc/client/bgmscript.qc index 353c5419a..697cae91c 100644 --- a/qcsrc/client/bgmscript.qc +++ b/qcsrc/client/bgmscript.qc @@ -1,15 +1,20 @@ +#include "bgmscript.qh" +#include "_all.qh" + +#include "../common/util.qh" + #define CONSTANT_SPEED_DECAY float bgmscriptbuf; float bgmscriptbufsize; float bgmscriptbufloaded; -.float bgmscriptline; -.float bgmscriptline0; -.float bgmscriptvolume; -.float bgmscripttime; -.float bgmscriptstate; -.float bgmscriptstatetime; +class(BGMScript) .float bgmscriptline; +class(BGMScript) .float bgmscriptline0; +class(BGMScript) .float bgmscriptvolume; +class(BGMScript) .float bgmscripttime; +class(BGMScript) .float bgmscriptstate; +class(BGMScript) .float bgmscriptstatetime; float GetAttackDecaySustainAmplitude(float a, float d, float s, float t) { @@ -17,10 +22,10 @@ float GetAttackDecaySustainAmplitude(float a, float d, float s, float t) // attack: from 0 to 1, in time a for a full length // decay: from 1 to s, in time d // sustain: s - + if(t < 0) return 0; - + if(a) if(t <= a) return t / a; @@ -38,10 +43,10 @@ float GetReleaseAmplitude(float d, float s, float r, float t) if(!r) return 0; - + if(t > r) return 0; - + releaseval = s * (1 - t / r); if(t < -d) @@ -70,7 +75,7 @@ float GetReleaseTime(float d, float s, float r, float amp) if(!s) return 0; - + // if amp > s, we may be in the attack or in the prolonged decay curve releasetime = (1 - amp / s) * r; @@ -131,8 +136,9 @@ void BGMScript_InitEntity(entity e) e.bgmscriptline = e.bgmscriptline0 = i; if(i >= bgmscriptbufsize) { - print(sprintf("ERROR: bgmscript does not define %s\n", e.bgmscript)); - e.bgmscript = ""; + printf("ERROR: bgmscript does not define %s\n", e.bgmscript); + strunzone(e.bgmscript); + e.bgmscript = string_null; } } } @@ -165,17 +171,17 @@ float GetTimeForAmplitude(entity e, float amp) } } -float BGMScript(entity e) +float doBGMScript(entity e) { float amp, vel; if(e.bgmscript == "") return 1; - + if(autocvar_bgmvolume <= 0) return -1; - e.just_toggled = FALSE; + e.just_toggled = false; if(bgmtime < 0) return -1; @@ -188,13 +194,13 @@ float BGMScript(entity e) e.bgmscripttime = bgmtime; // treat this as a stop event for all notes, to prevent sticking keys - e.bgmscriptstate = FALSE; + e.bgmscriptstate = false; e.bgmscriptvolume = 1; e.bgmscriptstatetime = bgmtime - GetTimeForAmplitude(e, amp); } // find the CURRENT line - for(;;) + for (;;) { tokenize_console(bufstr_get(bgmscriptbuf, e.bgmscriptline)); if(stof(argv(1)) >= bgmtime || argv(0) != e.bgmscript) @@ -213,11 +219,11 @@ float BGMScript(entity e) vel = stof(argv(2)); if(vel > 0) { - e.just_toggled = e.bgmscriptstate = TRUE; + e.just_toggled = e.bgmscriptstate = true; e.bgmscriptvolume = vel; } else - e.just_toggled = e.bgmscriptstate = FALSE; + e.just_toggled = e.bgmscriptstate = false; e.bgmscriptstatetime = e.bgmscripttime - GetTimeForAmplitude(e, amp); }