]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
cleanup of campaign levels handling.
[lugaru.git] / Source / GameTick.cpp
index ce260d68a069fbebb7436a335fd38150b8ec7cc7..4048f8783dbe7960a84857db1f80d8e125cc3e5e 100644 (file)
@@ -5612,9 +5612,10 @@ void Game::MenuTick(){
                                        else
                                                LoadStuff();
                                        whichchoice=selected-NB_CAMPAIGN_MENU_ITEM-1-accountactive->getCampaignChoicesMade();
+                                       actuallevel=(accountactive->getCampaignChoicesMade()>0?campaignlevels[accountactive->getCampaignChoicesMade()-1].nextlevel[whichchoice]:0);
                                        visibleloading=1;
                                        stillloading=1;
-                                       Loadlevel(campaignmapname[campaignchoicewhich[whichchoice]]);
+                                       Loadlevel(campaignlevels[actuallevel].mapname.c_str());
                                        campaign=1;
                                        mainmenu=0;
                                        gameon=1;
@@ -5870,13 +5871,13 @@ void Game::Tick(){
                if(mainmenu&&endgame==1)
             mainmenu=10;
         //go to level select after completing a campaign level
-        if(campaign&&winfreeze&&mainmenu==0&&campaignchoosenext[campaignchoicewhich[whichchoice]]==1) {
+        if(campaign&&winfreeze&&mainmenu==0&&campaignlevels[actuallevel].choosenext==1) {
             mainmenu=5;
             gameon=0;
             winfreeze=0;
             fireSound();
             flash();
-            if(musictoggle){
+            if(musictoggle) {
                 OPENAL_SetFrequency(OPENAL_ALL, 0.001);
                 emit_stream_np(stream_menutheme);
                 pause_sound(leveltheme);
@@ -6885,18 +6886,18 @@ void Game::Tick(){
                     }
 
                     //draw weapon
-                    if(i==0||!player[0].dead||player[i].weaponactive!=-1)
+                    if(i==0||!player[0].dead||player[i].weaponactive!=-1) {
                         if(player[i].drawkeydown&&!player[i].drawtogglekeydown||
                                 player[i].num_weapons==2&&
                                 player[i].weaponactive==-1&&
                                 player[i].isIdle()||
                                 player[0].dead&&
                                 player[i].weaponactive!=-1&&
-                                i!=0){
-                            bool isgood=1;
+                                i!=0) {
+                            bool isgood=true;
                             if(player[i].weaponactive!=-1)
                                 if(weapons[player[i].weaponids[player[i].weaponactive]].getType()==staff)
-                                    isgood=0;
+                                    isgood=false;
                             if(isgood&&player[i].creature!=wolftype){
                                 if(player[i].isIdle()&&player[i].num_weapons&&weapons[player[i].weaponids[0]].getType()==knife){
                                     setAnimation(i,drawrightanim);
@@ -6917,33 +6918,36 @@ void Game::Tick(){
                                 }
                             }
                         }
-                    //clean weapon
-                    if(player[i].isCrouch()&&
-                            weapons[player[i].weaponids[player[i].weaponactive]].bloody&&
-                            bloodtoggle&&
-                            player[i].onterrain&&
-                            player[i].num_weapons&&
-                            player[i].weaponactive!=-1&&
-                            player[i].attackkeydown&&
-                            bloodtoggle&&musictype!=stream_fighttheme) {
-                            if(weapons[player[i].weaponids[player[i].weaponactive]].getType()==knife)
-                                setAnimation(i,crouchstabanim);
-                            if(weapons[player[i].weaponids[player[i].weaponactive]].getType()==sword)
-                                setAnimation(i,swordgroundstabanim);
-                            player[i].hasvictim=0;
                     }
+                    
+                    //clean weapon
+                    if(player[i].weaponactive!=-1) {
+                                               if (player[i].isCrouch()&&
+                                                       weapons[player[i].weaponids[player[i].weaponactive]].bloody&&
+                                                       bloodtoggle&&
+                                                       player[i].onterrain&&
+                                                       player[i].num_weapons&&
+                                                       player[i].attackkeydown&&
+                                                       musictype!=stream_fighttheme) {
+                                                               if(weapons[player[i].weaponids[player[i].weaponactive]].getType()==knife)
+                                                                       setAnimation(i,crouchstabanim);
+                                                               if(weapons[player[i].weaponids[player[i].weaponactive]].getType()==sword)
+                                                                       setAnimation(i,swordgroundstabanim);
+                                                               player[i].hasvictim=0;
+                                               }
+                                       }
 
                     if(!player[i].drawkeydown)
                         player[i].drawtogglekeydown=0;
 
                     XYZ absflatfacing;
-                    if(i==0){
+                    if(i==0) {
                         absflatfacing=0;
                         absflatfacing.z=-1;
 
                         absflatfacing=DoRotation(absflatfacing,0,-rotation,0);
-                    }
-                    else absflatfacing=flatfacing;
+                    } else
+                                               absflatfacing=flatfacing;
 
                     if(indialogue!=-1){
                         player[i].forwardkeydown=0;
@@ -7695,7 +7699,7 @@ void Game::TickOnceAfter(){
 
                                        fireSound(firestartsound);
 
-                                       Loadlevel(campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);
+                                       Loadlevel(campaignlevels[accountactive->getCampaignChoicesMade()].mapname.c_str());
 
                                        fireSound();
 
@@ -7729,11 +7733,11 @@ void Game::TickOnceAfter(){
                 // 0 = load next level
                 // 1 = go back to level select screen
                 // 2 = stealthload next level
-                               if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){
-                                       if(campaignnumnext[campaignchoicewhich[whichchoice]]==0)
+                               if(mainmenu==0&&winfreeze&&(campaignlevels[actuallevel].choosenext)==1){
+                                       if(campaignlevels[actuallevel].nextlevel.empty())
                                                endgame=1;
                                } else if(mainmenu==0&&winfreeze) {
-                                       stealthloading = (campaignchoosenext[campaignchoicewhich[whichchoice]]==2);
+                                       stealthloading = (campaignlevels[actuallevel].choosenext==2);
 
                                        if(!stealthloading){
                                                fireSound(firestartsound);
@@ -7751,9 +7755,10 @@ void Game::TickOnceAfter(){
                                        if(!firstload)
                                                LoadStuff();
                                        whichchoice=0;
+                                       actuallevel=campaignlevels[actuallevel].nextlevel.front();
                                        visibleloading=1;
                                        stillloading=1;
-                                       Loadlevel(campaignmapname[campaignchoicewhich[0]]);
+                                       Loadlevel(campaignlevels[actuallevel].mapname.c_str());
                                        campaign=1;
                                        mainmenu=0;
                                        gameon=1;