Browse Source

fix resetting of weaponclass in bossrush

silverweed 3 years ago
parent
commit
a84e37142b
3 changed files with 16 additions and 6 deletions
  1. 1 3
      bossrush.cpp
  2. 14 2
      functions.cpp
  3. 1 1
      functions.hpp

+ 1 - 3
bossrush.cpp

@@ -281,10 +281,8 @@ int main(int argc,char** argv)
 						level = choose_level_bossrush(commands);
 					setup_level_bossrush(level, shootrate, poweruprate, walls_num, refresh_time);
 					reset(player1, enemies, boss1, bullets, bombs, walls, walls_num, powerups, rockets, chflag); // reset box, player, enemy and deletes all bullets and bombs
-					resetbosses(bosses,boss1,player1);
+					resetbosses(bosses,boss1,player1,level);
 					num=0;
-					if(level<3)
-						player1.weaponclass=2;
 					erase();
 					refresh();
 					continue;	// Go to the beginning of the main loop

+ 14 - 2
functions.cpp

@@ -1476,7 +1476,7 @@ void setup_level_bossrush(int level, double& shootr, double& poweruprate, int& w
 	}
 }
 
-void resetbosses(boss* Bosses,boss& boss1,player& player1){
+void resetbosses(boss* Bosses,boss& boss1,player& player1,int level){
 	boss* bosses=Bosses;
 
 	bosses->health=bosses->healthmax;
@@ -1492,7 +1492,19 @@ void resetbosses(boss* Bosses,boss& boss1,player& player1){
 	boss1=*Bosses;
 	boss1.alive=true;
 
-	player1.weaponclass=1;
+	// NOTE(jp): level starts from 1
+	switch (level) {
+	case 1:
+		player1.weaponclass=2;
+		break;	
+	case 2:
+	case 3:
+		player1.weaponclass=1;
+		break;	
+	default:
+		player1.weaponclass=0;
+		break;	
+	}
 }
 
 void Victory_bossrush(std::string name,int score,int level,int chflag){

+ 1 - 1
functions.hpp

@@ -94,7 +94,7 @@ int choose_level_bossrush(int* commands);
 
 void setup_level_bossrush(int level, double& shootr, double& poweruprate, int& walls_num, int& refresh_t);
 
-void resetbosses(boss* Bosses,boss& boss1,player& player1);
+void resetbosses(boss* Bosses,boss& boss1,player& player1,int);
 
 void Victory_bossrush(std::string,int,int,int);