support bgmscript with target_music
authorRudolf Polzer <divverent@alientrap.org>
Tue, 19 Oct 2010 15:48:07 +0000 (17:48 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Tue, 19 Oct 2010 15:48:07 +0000 (17:48 +0200)
qcsrc/client/Defs.qc
qcsrc/client/bgmscript.qc
qcsrc/client/target_music.qc

index caab7332292524b54ece81f7ecc2d44806f67f86..e816fe221a13bc4994deb8aaf2f90318b1364e38 100644 (file)
@@ -262,3 +262,6 @@ float campingrifle_scope;
 float nex_scope;
 
 float cr_maxbullets;
+
+float bgmtime;
+
index 587a2e96cf8ac289bf287905ce5560c7eb17ab65..c23b425ae9d2e4edd0ace7c0cd77ec703b06b7ed 100644 (file)
@@ -167,7 +167,6 @@ float GetTimeForAmplitude(entity e, float amp)
 
 float BGMScript(entity e)
 {
-       float t;
        float amp, vel;
 
        if(e.bgmscript == "")
@@ -178,34 +177,33 @@ float BGMScript(entity e)
 
        e.just_toggled = FALSE;
 
-       t = gettime(GETTIME_CDTRACK);
-       if(t < 0)
+       if(bgmtime < 0)
                return -1;
 
-       if(t < e.bgmscripttime)
+       if(bgmtime < e.bgmscripttime)
        {
                //print("reset ", e.bgmscript, "\n");
                amp = GetCurrentAmplitude(e, e.bgmscripttime - e.bgmscriptstatetime + drawframetime);
 
                e.bgmscriptline = e.bgmscriptline0;
-               e.bgmscripttime = t;
+               e.bgmscripttime = bgmtime;
 
                // treat this as a stop event for all notes, to prevent sticking keys
                e.bgmscriptstate = FALSE;
                e.bgmscriptvolume = 1;
-               e.bgmscriptstatetime = t - GetTimeForAmplitude(e, amp);
+               e.bgmscriptstatetime = bgmtime - GetTimeForAmplitude(e, amp);
        }
 
        // find the CURRENT line
        for(;;)
        {
                tokenize_console(bufstr_get(bgmscriptbuf, e.bgmscriptline));
-               if(stof(argv(1)) >= t || argv(0) != e.bgmscript)
+               if(stof(argv(1)) >= bgmtime || argv(0) != e.bgmscript)
                {
-                       e.bgmscripttime = t;
-                       return GetCurrentAmplitude(e, t - e.bgmscriptstatetime);
+                       e.bgmscripttime = bgmtime;
+                       return GetCurrentAmplitude(e, bgmtime - e.bgmscriptstatetime);
                }
-               else if(t >= stof(argv(1)))
+               else if(bgmtime >= stof(argv(1)))
                {
                        e.bgmscriptline += 1;
                        e.bgmscripttime = stof(argv(1));
index a7a46d80ad5788c19e58e649c7d25c0a147b1376..b1957038eb4eb9b7c1a97574713ceed3e42bf2e4 100644 (file)
@@ -50,6 +50,11 @@ void TargetMusic_Advance()
                }
        }
        music_trigger = world;
+
+       if(best)
+               bgmtime = getsoundtime(best, CHAN_VOICE);
+       else
+               bgmtime = gettime(GETTIME_CDTRACK);
 }
 
 void Net_TargetMusic()