]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Remove terraindetail (== 1 anyway)
[lugaru.git] / Source / GameTick.cpp
index 8984c42df84b92a41c861a7677bac07e2d76e08c..7e231e0a03f508604dec7a56b2936c002da850e2 100644 (file)
@@ -49,7 +49,6 @@ extern XYZ viewer;
 extern int environment;
 extern float texscale;
 extern Terrain terrain;
-extern int channels[100];
 extern int kTextureSize;
 extern float screenwidth,screenheight;
 extern float gravity;
@@ -64,7 +63,6 @@ extern Light light;
 extern float texdetail;
 extern GLubyte bloodText[512*512*3];
 extern GLubyte wolfbloodText[512*512*3];
-extern float terraindetail;
 extern float camerashake;
 extern float woozy;
 extern float blackout;
@@ -84,7 +82,6 @@ extern bool autoslomo;
 extern bool keyboardfrozen;
 extern int netdatanew;
 extern bool loadingstuff;
-extern char mapname[256];
 extern XYZ windvector;
 extern bool debugmode;
 static int music1;
@@ -158,28 +155,6 @@ extern int hostile;
 extern bool stillloading;
 extern bool winfreeze;
 
-extern int numdialogues;
-extern int numdialogueboxes[max_dialogues];
-extern int dialoguetype[max_dialogues];
-extern int dialogueboxlocation[max_dialogues][max_dialoguelength];
-extern float dialogueboxcolor[max_dialogues][max_dialoguelength][3];
-extern int dialogueboxsound[max_dialogues][max_dialoguelength];
-extern char dialoguetext[max_dialogues][max_dialoguelength][128];
-extern char dialoguename[max_dialogues][max_dialoguelength][64];
-extern XYZ dialoguecamera[max_dialogues][max_dialoguelength];
-extern XYZ participantlocation[max_dialogues][10];
-extern int participantfocus[max_dialogues][max_dialoguelength];
-extern int participantaction[max_dialogues][max_dialoguelength];
-extern float participantrotation[max_dialogues][10];
-extern XYZ participantfacing[max_dialogues][max_dialoguelength][10];
-extern float dialoguecamerarotation[max_dialogues][max_dialoguelength];
-extern float dialoguecamerarotation2[max_dialogues][max_dialoguelength];
-extern int indialogue;
-extern int whichdialogue;
-extern int directing;
-extern float dialoguetime;
-extern int dialoguegonethrough[20];
-
 extern bool campaign;
 
 extern float oldgamespeed;
@@ -214,9 +189,6 @@ static bool stripfx(const char *str, const char *pfx)
   return !strncasecmp(str, pfx, strlen(pfx));
 }
 
-extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
-
-
 static const char *cmd_names[] = {
 #define DECLARE_COMMAND(cmd) #cmd " ",
 #include "ConsoleCmds.h"
@@ -242,9 +214,7 @@ static void ch_quit(Game *game, const char *args)
 
 static void ch_map(Game *game, const char *args)
 {
-  char buf[64];
-  snprintf(buf, 63, ":Data:Maps:%s", args);
-  game->Loadlevel(buf);
+  game->Loadlevel(args);
   game->whichlevel = -2;
   campaign = 0;
 }
@@ -1318,29 +1288,19 @@ void    Game::Setenvironment(int which)
 
        float temptexdetail;
        environment=which;
-/*
-       OPENAL_SetPaused(channels[music1snow], true);
-       OPENAL_SetPaused(channels[music1grass], true);
-       OPENAL_SetPaused(channels[music1desert], true);
-       OPENAL_SetPaused(channels[wind], true);
-       OPENAL_SetPaused(channels[desertambient], true);
-*/
-       OPENAL_SetPaused(channels[stream_music1snow], true);
-       OPENAL_SetPaused(channels[stream_music1grass], true);
-       OPENAL_SetPaused(channels[stream_music1desert], true);
-       OPENAL_SetPaused(channels[stream_wind], true);
-       OPENAL_SetPaused(channels[stream_desertambient], true);
+
+       pause_sound(stream_music1snow);
+       pause_sound(stream_music1grass);
+       pause_sound(stream_music1desert);
+       pause_sound(stream_wind);
+       pause_sound(stream_desertambient);
 
 
        if(environment==snowyenvironment){
                windvector=0;
                windvector.z=3;
-               if(ambientsound){
-                       //PlaySoundEx( wind, samp[wind], NULL, true);
-                       PlayStreamEx(stream_wind, samp[stream_wind], 0, true);
-                       OPENAL_SetPaused(channels[stream_wind], false);
-                       OPENAL_SetVolume(channels[stream_wind], 256);
-               }
+               if(ambientsound)
+                 emit_stream_np(stream_wind);
 
                LoadTexture(":Data:Textures:snowtree.png",&objects.treetextureptr,0,1);
                LoadTexture(":Data:Textures:bushsnow.png",&objects.bushtextureptr,0,1);
@@ -1368,9 +1328,7 @@ void      Game::Setenvironment(int which)
                        ":Data:Textures:Skybox(snow):Back.jpg",
                        ":Data:Textures:Skybox(snow):Right.jpg",
                        ":Data:Textures:Skybox(snow):Up.jpg",
-                       ":Data:Textures:Skybox(snow):Down.jpg",
-                       ":Data:Textures:Skybox(snow):Cloud.jpg",
-                       ":Data:Textures:Skybox(snow):Reflect.jpg");
+                       ":Data:Textures:Skybox(snow):Down.jpg");
 
 
 
@@ -1386,12 +1344,8 @@ void     Game::Setenvironment(int which)
                LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0);
 
 
-               if(ambientsound){
-                       //PlaySoundEx( desertambient, samp[desertambient], NULL, true);
-                       PlayStreamEx( stream_desertambient, samp[stream_desertambient], NULL, true);
-                       OPENAL_SetPaused(channels[stream_desertambient], false);
-                       OPENAL_SetVolume(channels[stream_desertambient], 256);
-               }
+               if(ambientsound)
+                 emit_stream_np(stream_desertambient);
 
                footstepsound = footstepsn1;
                footstepsound2 = footstepsn2;
@@ -1413,9 +1367,7 @@ void      Game::Setenvironment(int which)
                        ":Data:Textures:Skybox(sand):Back.jpg",
                        ":Data:Textures:Skybox(sand):Right.jpg",
                        ":Data:Textures:Skybox(sand):Up.jpg",
-                       ":Data:Textures:Skybox(sand):Down.jpg",
-                       ":Data:Textures:Skybox(sand):Cloud.jpg",
-                       ":Data:Textures:Skybox(sand):Reflect.jpg");
+                       ":Data:Textures:Skybox(sand):Down.jpg");
 
 
 
@@ -1430,11 +1382,8 @@ void     Game::Setenvironment(int which)
                LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
                LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
 
-               if(ambientsound){
-                       PlayStreamEx( stream_wind, samp[stream_wind], NULL, true);
-                       OPENAL_SetPaused(channels[stream_wind], false);
-                       OPENAL_SetVolume(channels[stream_wind], 100);
-               }
+               if(ambientsound)
+                 emit_stream_np(stream_wind, 100.);
 
                footstepsound = footstepgr1;
                footstepsound2 = footstepgr2;
@@ -1456,9 +1405,7 @@ void      Game::Setenvironment(int which)
                        ":Data:Textures:Skybox(grass):Back.jpg",
                        ":Data:Textures:Skybox(grass):Right.jpg",
                        ":Data:Textures:Skybox(grass):Up.jpg",
-                       ":Data:Textures:Skybox(grass):Down.jpg",
-                       ":Data:Textures:Skybox(grass):Cloud.jpg",
-                       ":Data:Textures:Skybox(grass):Reflect.jpg");
+                       ":Data:Textures:Skybox(grass):Down.jpg");
 
 
 
@@ -1474,35 +1421,31 @@ void    Game::Setenvironment(int which)
 
 void   Game::Loadlevel(int which){
        stealthloading=0;
-
-       if(which==0)Loadlevel((char *)":Data:Maps:map1");
-       else if(which==1)Loadlevel((char *)":Data:Maps:map2");
-       else if(which==2)Loadlevel((char *)":Data:Maps:map3");
-       else if(which==3)Loadlevel((char *)":Data:Maps:map4");
-       else if(which==4)Loadlevel((char *)":Data:Maps:map5");
-       else if(which==5)Loadlevel((char *)":Data:Maps:map6");
-       else if(which==6)Loadlevel((char *)":Data:Maps:map7");
-       else if(which==7)Loadlevel((char *)":Data:Maps:map8");
-       else if(which==8)Loadlevel((char *)":Data:Maps:map9");
-       else if(which==9)Loadlevel((char *)":Data:Maps:map10");
-       else if(which==10)Loadlevel((char *)":Data:Maps:map11");
-       else if(which==11)Loadlevel((char *)":Data:Maps:map12");
-       else if(which==12)Loadlevel((char *)":Data:Maps:map13");
-       else if(which==13)Loadlevel((char *)":Data:Maps:map14");
-       else if(which==14)Loadlevel((char *)":Data:Maps:map15");
-       else if(which==15)Loadlevel((char *)":Data:Maps:map16");
-       else if(which==-1){tutoriallevel=-1;Loadlevel((char *)":Data:Maps:tutorial");}
-       else Loadlevel((char *)":Data:Maps:mapsave");
-
        whichlevel=which;
+
+       if (which == -1)
+         {
+           tutoriallevel = -1;
+           Loadlevel("tutorial");
+         }
+       else if (which >= 0 && which <= 15)
+         {
+           char buf[32];
+           snprintf(buf, 32, "map%d", which + 1);
+           Loadlevel(buf);
+         }
+       else
+         Loadlevel("mapsave");
 }
 
-void   Game::Loadlevel(char *name){
+void   Game::Loadlevel(const char *name){
        int i,j,k,l,m;
        static int oldlevel;
        int templength;
        float lamefloat;
        int lameint;
+       static const char *pfx = ":Data:Maps:";
+       char *buf;
 
        float headprop,legprop,armprop,bodyprop;
 
@@ -1531,18 +1474,20 @@ void    Game::Loadlevel(char *name){
        if(!firstload){
                oldlevel=50;
        }
-       OPENAL_SetPaused(channels[whooshsound], true);
-       OPENAL_SetPaused(channels[stream_firesound], true);
+       pause_sound(whooshsound);
+       pause_sound(stream_firesound);
 
        // Change the map filename into something that is os specific
-       char *FixedFN = ConvertFileName(name);
+       buf = (char*) alloca(strlen(pfx) + strlen(name) + 1);
+       sprintf(buf, "%s%s", pfx, name);
+       const char *FixedFN = ConvertFileName(buf);
 
        int mapvers;
        FILE                    *tfile;
        tfile=fopen( FixedFN, "rb" );
        if(tfile)
        {
-               OPENAL_SetPaused(channels[stream_firesound], true);
+               pause_sound(stream_firesound);
 
 
                scoreadded=0;
@@ -1707,21 +1652,6 @@ void     Game::Loadlevel(char *name){
                        player[0].creature=rabbittype;
                }
 
-               for(i=0;i<max_dialogues;i++)
-               {
-                       for(j=0;j<max_dialoguelength;j++)
-                       {
-                               for(k=0;k<128;k++)
-                               {
-                                       dialoguetext[i][j][k]='\0';
-                               }
-                               for(k=0;k<64;k++)
-                               {
-                                       dialoguename[i][j][k]='\0';
-                               }
-                       }
-               }
-
                player[0].lastattack=-1;
                player[0].lastattack2=-1;
                player[0].lastattack3=-1;
@@ -1758,6 +1688,7 @@ void      Game::Loadlevel(char *name){
                                                                funpackf(tfile, "Bb", &dialoguetext[k][l][m]);
                                                                if(dialoguetext[k][l][m]=='\0')break;
                                                        }
+                                                       dialoguetext[k][l][m] = 0;
 
                                                        funpackf(tfile, "Bi",&templength);
                                                        if(templength>64||templength<=0)templength=64;
@@ -1767,6 +1698,7 @@ void      Game::Loadlevel(char *name){
                                                                        break;
                                                                }
                                                        }
+                                                       dialoguename[k][l][m] = 0;
                                                        funpackf(tfile, "Bf Bf Bf", &dialoguecamera[k][l].x, &dialoguecamera[k][l].y, &dialoguecamera[k][l].z);
                                                        funpackf(tfile, "Bi", &participantfocus[k][l]);
                                                        funpackf(tfile, "Bi", &participantaction[k][l]);
@@ -2217,33 +2149,17 @@ void    Game::Loadlevel(char *name){
                if(environment==snowyenvironment)
                {
                        if(ambientsound)
-                       {
-                               PlayStreamEx(stream_wind, samp[stream_wind], NULL, true);
-                               OPENAL_SetPaused(channels[stream_wind], false);
-                               OPENAL_SetVolume(channels[stream_wind], 256);
-                       }
+                         emit_stream_np(stream_wind);
                }
                else if(environment==desertenvironment)
                {
                        if(ambientsound)
-                       {
-                               //PlaySoundEx(desertambient,
-                               //      samp[desertambient], NULL, true);
-                               PlayStreamEx(stream_desertambient,
-                                       samp[stream_desertambient], NULL, true);
-                               OPENAL_SetPaused(channels[stream_desertambient], false);
-                               OPENAL_SetVolume(channels[stream_desertambient], 256);
-                       }
+                         emit_stream_np(stream_desertambient);
                }
                else if(environment==grassyenvironment)
                {
                        if(ambientsound)
-                       {
-                               //PlaySoundEx(wind, samp[wind], NULL, true);
-                               PlayStreamEx(stream_wind, samp[stream_wind], NULL, true);
-                               OPENAL_SetPaused(channels[stream_wind], false);
-                               OPENAL_SetVolume(channels[stream_wind], 100);
-                       }
+                         emit_stream_np(stream_wind, 100.);
                }
                oldmusicvolume[0]=0;
                oldmusicvolume[1]=0;
@@ -2338,15 +2254,13 @@ void    Game::Tick()
                                if(mainmenu&&musictoggle){
                                        if(mainmenu==1||mainmenu==2||mainmenu==100){
                                                OPENAL_SetFrequency(OPENAL_ALL, 0.001);
-                                               PlayStreamEx( stream_music3, samp[stream_music3], NULL, true);
-                                               OPENAL_SetPaused(channels[stream_music3], false);
-                                               OPENAL_SetVolume(channels[stream_music3], 256);
-                                               OPENAL_SetPaused(channels[music1], true);
+                                               emit_stream_np(stream_music3);
+                                               pause_sound(music1);
                                        }
                                }
                                if(!mainmenu){
-                                       OPENAL_SetPaused(channels[stream_music3], true);
-                                       OPENAL_SetPaused(channels[music1], false);
+                                       pause_sound(stream_music3);
+                                       resume_stream(music1);
                                }
                        }
                        if(mainmenu==3){
@@ -2419,8 +2333,8 @@ void      Game::Tick()
                                {
                                        //resume
                                        mainmenu=0;
-                                       OPENAL_SetPaused(channels[stream_music3], true);
-                                       OPENAL_SetPaused(channels[music1], false);
+                                       pause_sound(stream_music3);
+                                       resume_stream(music1);
                                }
                        }
 
@@ -2449,7 +2363,7 @@ void      Game::Tick()
                                if(!gameon){
                                        //quit
                                        tryquit=1;
-                                       OPENAL_SetPaused(channels[stream_music3], true);
+                                       pause_sound(stream_music3);
                                }
                                else{
                                        //end game
@@ -2532,9 +2446,9 @@ void      Game::Tick()
                                musictoggle=1-musictoggle;
 
                                if(!musictoggle){
-                                       OPENAL_SetPaused(channels[music1], true);
-                                       OPENAL_SetPaused(channels[stream_music2], true);
-                                       OPENAL_SetPaused(channels[stream_music3], true);
+                                       pause_sound(music1);
+                                       pause_sound(stream_music2);
+                                       pause_sound(stream_music3);
 
                                        for(i=0;i<4;i++){
                                                oldmusicvolume[i]=0;
@@ -2542,11 +2456,8 @@ void     Game::Tick()
                                        }
                                }
 
-                               if(musictoggle){
-                                       PlayStreamEx( stream_music3, samp[stream_music3], NULL, true);
-                                       OPENAL_SetPaused(channels[stream_music3], false);
-                                       OPENAL_SetVolume(channels[stream_music3], 256);
-                               }
+                               if(musictoggle)
+                                 emit_stream_np(stream_music3);
                        }
                        if(Input::Button()&&!oldbutton&&selected==9){
                                invertmouse=1-invertmouse;
@@ -2644,7 +2555,7 @@ void      Game::Tick()
 
                                mainmenu=0;
                                gameon=1;
-                               OPENAL_SetPaused(channels[stream_music3], true);
+                               pause_sound(stream_music3);
                        }
                        if(Input::Button()&&!oldbutton&&(selected-7>=accountactive->getCampaignChoicesMade())){
                                fireSound();
@@ -2658,30 +2569,15 @@ void    Game::Tick()
                                targetlevel=7;
                                if(firstload) TickOnceAfter();
                                else LoadStuff();
-                               for(i=0;i<255;i++){
-                                       mapname[i]='\0';
-                               }
-                               mapname[0]=':';
-                               mapname[1]='D';
-                               mapname[2]='a';
-                               mapname[3]='t';
-                               mapname[4]='a';
-                               mapname[5]=':';
-                               mapname[6]='M';
-                               mapname[7]='a';
-                               mapname[8]='p';
-                               mapname[9]='s';
-                               mapname[10]=':';
-                               strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountactive->getCampaignChoicesMade()]]);
                                whichchoice=selected-7-accountactive->getCampaignChoicesMade();
                                visibleloading=1;
                                stillloading=1;
-                               Loadlevel(mapname);
+                               Loadlevel(campaignmapname[campaignchoicewhich[selected-7-accountactive->getCampaignChoicesMade()]]);
                                //Loadlevel(campaignmapname[levelorder[selected-7]]);
                                campaign=1;
                                mainmenu=0;
                                gameon=1;
-                               OPENAL_SetPaused(channels[stream_music3], true);
+                               pause_sound(stream_music3);
                        }
                        if(Input::Button()&&!oldbutton&&selected==4){
                                fireSound();
@@ -2733,7 +2629,7 @@ void      Game::Tick()
 
                                mainmenu=0;
                                gameon=1;
-                               OPENAL_SetPaused(channels[stream_music3], true);
+                               pause_sound(stream_music3);
                        }
                        if(Input::Button()&&!oldbutton&&selected==numchallengelevels){
                                fireSound();
@@ -3714,7 +3610,7 @@ void      Game::Tick()
                                                                                                                        player[k].targetanimation=walljumpleftanim;
                                                                                                                        player[k].targetframe=0;
                                                                                                                        emit_sound_at(movewhooshsound, player[k].coords);
-                                                                                                                       if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                       if(k==0)pause_sound(whooshsound);
 
                                                                                                                        lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
                                                                                                                        player[k].rotation=-asin(0-lowpointtarget.x);
@@ -3734,7 +3630,7 @@ void      Game::Tick()
                                                                                                                                player[k].targetanimation=walljumprightanim;
                                                                                                                                player[k].targetframe=0;
                                                                                                                                emit_sound_at(movewhooshsound, player[k].coords);
-                                                                                                                               if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                               if(k==0)pause_sound(whooshsound);
 
                                                                                                                                lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
                                                                                                                                player[k].rotation=-asin(0-lowpointtarget.x);
@@ -3754,7 +3650,7 @@ void      Game::Tick()
                                                                                                                                        player[k].targetanimation=walljumpbackanim;
                                                                                                                                        player[k].targetframe=0;
                                                                                                                                        emit_sound_at(movewhooshsound, player[k].coords);
-                                                                                                                                       if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                                       if(k==0)pause_sound(whooshsound);
 
                                                                                                                                        lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
                                                                                                                                        player[k].rotation=-asin(0-lowpointtarget.x);
@@ -3774,7 +3670,7 @@ void      Game::Tick()
                                                                                                                                                player[k].targetanimation=walljumpfrontanim;
                                                                                                                                                player[k].targetframe=0;
                                                                                                                                                emit_sound_at(movewhooshsound, player[k].coords);
-                                                                                                                                               if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                                               if(k==0)pause_sound(whooshsound);
 
                                                                                                                                                lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0);
                                                                                                                                                player[k].rotation=-asin(0-lowpointtarget.x);
@@ -3809,7 +3705,7 @@ void      Game::Tick()
                                                                                                                player[k].onterrain=1;
 
                                                                                                                if(player[k].id==0){
-                                                                                                                       OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                       pause_sound(whooshsound);
                                                                                                                        OPENAL_SetVolume(channels[whooshsound], 0);
                                                                                                                }
 
@@ -3914,7 +3810,7 @@ void      Game::Tick()
 
                                                                                                                                                                                                        if(j>10||!player[k].isRun()){
                                                                                                                                                                                                                if(player[k].targetanimation==jumpdownanim||player[k].targetanimation==jumpupanim){
-                                                                                                                                                                                                                       if(k==0)OPENAL_SetPaused(channels[whooshsound], true);
+                                                                                                                                                                                                                       if(k==0)pause_sound(whooshsound);
                                                                                                                                                                                                                }
                                                                                                                                                                                                                emit_sound_at(jumpsound, player[k].coords, 128.);
 
@@ -4124,7 +4020,7 @@ void      Game::Tick()
                                                                                        }
                                                        }
                                                        if(!directing){
-                                                               OPENAL_SetPaused(channels[whooshsound], true);
+                                                               pause_sound(whooshsound);
                                                                viewer=dialoguecamera[whichdialogue][indialogue];
                                                                if(viewer.y<terrain.getHeight(viewer.x,viewer.z)+.1){
                                                                        viewer.y=terrain.getHeight(viewer.x,viewer.z)+.1;
@@ -4226,7 +4122,6 @@ void      Game::Tick()
 
 
                                                dialoguetime+=multiplier;
-                                               skybox.cloudmove+=multiplier;
                                                hawkrotation+=multiplier*25;
                                                realhawkcoords=0;
                                                realhawkcoords.x=25;
@@ -4671,7 +4566,7 @@ void      Game::Tick()
                                                        }
                                                        if(!player[0].onfire){
                                                                emit_sound_at(fireendsound, player[0].coords);
-                                                               OPENAL_SetPaused(channels[stream_firesound], true);
+                                                               pause_sound(stream_firesound);
                                                        }
                                                        slomotogglekeydown=1;
                                                }
@@ -5057,7 +4952,6 @@ void      Game::Tick()
                                                        //player[0].DoDamage(1000);
 
                                                        emit_sound_at(whooshsound, player[0].coords, 128.);
-                                                       //OPENAL_SetPaused(channels[whooshsound], true);
 
                                                        texturesizetogglekeydown=1;
                                                }
@@ -7293,8 +7187,8 @@ void      Game::Tick()
 
                                                        for(k=0;k<numplayers;k++){
                                                                player[k].DoAnimations();
-                                                               player[k].whichpatchx=player[k].coords.x/(terrain.size/subdivision*terrain.scale*terraindetail);
-                                                               player[k].whichpatchz=player[k].coords.z/(terrain.size/subdivision*terrain.scale*terraindetail);
+                                                               player[k].whichpatchx=player[k].coords.x/(terrain.size/subdivision*terrain.scale);
+                                                               player[k].whichpatchz=player[k].coords.z/(terrain.size/subdivision*terrain.scale);
                                                        }
 
                                                        objects.DoStuff();
@@ -7332,9 +7226,7 @@ void      Game::Tick()
                                                                                OPENAL_StopSound(OPENAL_ALL);  // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu...
                                                                                OPENAL_SetFrequency(OPENAL_ALL, 0.001);
 
-                                                                               PlayStreamEx( stream_music3, samp[stream_music3], NULL, true);
-                                                                               OPENAL_SetPaused(channels[stream_music3], false);
-                                                                               OPENAL_SetVolume(channels[stream_music3], 256);
+                                                                               emit_stream_np(stream_music3);
 
                                                                                gameon=0;
                                                                                mainmenu=5;
@@ -7513,26 +7405,20 @@ void    Game::TickOnceAfter(){
                if(musicvolume[2]>128&&!loading&&!mainmenu)musicvolume[2]=128;
 
                if(musictoggle){
-                       if(musicvolume[0]>0&&oldmusicvolume[0]<=0){
-                               PlayStreamEx( music1, samp[music1], NULL, true);
-                               OPENAL_SetPaused(channels[music1], false);
-                       }
-                       if(musicvolume[1]>0&&oldmusicvolume[1]<=0){
-                               PlayStreamEx( stream_music2, samp[stream_music2], NULL, true);
-                               OPENAL_SetPaused(channels[stream_music2], false);
-                       }
-                       if(musicvolume[2]>0&&oldmusicvolume[2]<=0){
-                               PlayStreamEx( stream_music3, samp[stream_music3], NULL, true);
-                               OPENAL_SetPaused(channels[stream_music3], false);
-                       }
+                       if(musicvolume[0]>0&&oldmusicvolume[0]<=0)
+                         emit_stream_np(music1, musicvolume[0]);
+                       if(musicvolume[1]>0&&oldmusicvolume[1]<=0)
+                         emit_stream_np(stream_music2, musicvolume[1]);
+                       if(musicvolume[2]>0&&oldmusicvolume[2]<=0)
+                         emit_stream_np(stream_music3, musicvolume[2]);
                        if(musicvolume[0]<=0&&oldmusicvolume[0]>0){
-                               OPENAL_SetPaused(channels[music1], true);
+                               pause_sound(music1);
                        }
                        if(musicvolume[1]<=0&&oldmusicvolume[1]>0){
-                               OPENAL_SetPaused(channels[stream_music2], true);
+                               pause_sound(stream_music2);
                        }
                        if(musicvolume[2]<=0&&oldmusicvolume[2]>0){
-                               OPENAL_SetPaused(channels[stream_music3], true);
+                               pause_sound(stream_music3);
                        }
 
                        if(musicvolume[0]!=oldmusicvolume[0]){
@@ -7549,9 +7435,9 @@ void      Game::TickOnceAfter(){
                                oldmusicvolume[i]=musicvolume[i];
                        }
                } else {
-                       OPENAL_SetPaused(channels[music1], true);
-                       OPENAL_SetPaused(channels[stream_music2], true);
-                       OPENAL_SetPaused(channels[stream_music3], true);
+                       pause_sound(music1);
+                       pause_sound(stream_music2);
+                       pause_sound(stream_music3);
 
                        for(i=0;i<4;i++){
                                oldmusicvolume[i]=0;
@@ -7663,22 +7549,7 @@ void     Game::TickOnceAfter(){
 
                                        fireSound(firestartsound);
 
-                                       for(i=0;i<255;i++){
-                                               mapname[i]='\0';
-                                       }
-                                       mapname[0]=':';
-                                       mapname[1]='D';
-                                       mapname[2]='a';
-                                       mapname[3]='t';
-                                       mapname[4]='a';
-                                       mapname[5]=':';
-                                       mapname[6]='M';
-                                       mapname[7]='a';
-                                       mapname[8]='p';
-                                       mapname[9]='s';
-                                       mapname[10]=':';
-                                       strcat(mapname,campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);//[campaignchoicewhich[whichchoice]]);
-                                       Loadlevel(mapname);
+                                       Loadlevel(campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);
 
                                        fireSound();
 
@@ -7782,33 +7653,15 @@ void    Game::TickOnceAfter(){
                                        loading=2;
                                        loadtime=0;
                                        targetlevel=7;
-                                       //if(firstload)TickOnceAfter();
                                        if(!firstload)LoadStuff();
-                                       //else {
-                                       for(i=0;i<255;i++){
-                                               mapname[i]='\0';
-                                       }
-                                       mapname[0]=':';
-                                       mapname[1]='D';
-                                       mapname[2]='a';
-                                       mapname[3]='t';
-                                       mapname[4]='a';
-                                       mapname[5]=':';
-                                       mapname[6]='M';
-                                       mapname[7]='a';
-                                       mapname[8]='p';
-                                       mapname[9]='s';
-                                       mapname[10]=':';
-
-                                       strcat(mapname,campaignmapname[campaignchoicewhich[0]]);
                                        whichchoice=0;
                                        visibleloading=1;
                                        stillloading=1;
-                                       Loadlevel(mapname);
+                                       Loadlevel(campaignmapname[campaignchoicewhich[0]]);
                                        campaign=1;
                                        mainmenu=0;
                                        gameon=1;
-                                       OPENAL_SetPaused(channels[stream_music3], true);
+                                       pause_sound(stream_music3);
 
                                        stealthloading=0;
                                }