I use a rotating method approch too this problem, and found a suitable solution useing code. I have a weapon equiped array which is a 12 slot array. I also include a larger array to store the weapons in a struct format. I am currently doing the same thing but the code all is in teir 2.
first you need to see if the weapon is equiped.
Then reset the bullet data by checking if it is equiped
check if the rate of fire is greater then a number.
then place the bullet using sin or cos.
store some information about the speed and the angle fired
increment the life of the bullet
player.g_bullets[xxb][yyb].active is true
increment the data of each bullet
Check to see if it hits a wall or enemy. If this is true then reset the data of the missle.
The stuct that contains the information is in a player struct.
The array i used to look for equiped weapons is a 12 in length
the bullets that i used are stored in the player struct which there is a array of 80 by 20 this stores all the copys of the bullets and weather are not they are active.