The circuit I designed for this project has four main sections:

Power MOSFET:

At the top of the circuit there is a irf9540n P-Channel MOSFET connected between a 5 volt regulator and the power from the battery. The reason I use this is because the switch I would prefer to use has three states. To one side and the middle it locks into place while on the far side it acts as a momentary switch. I close to use the momentary switch side to act as a digital input to the arduino to "charge the laser", for the middle to be "powered" (but not doing anything), and for the far right to be "turned off". The best way I could think to do this would be to connect power to the center lead of the switch and run the far right lead to the base of a P-channel MOSFET. That way, when the switch is connected power is to the right, power is applied to the MOSFET's base and the circuit is disabled. When the switch is to the far left, the voltage goes through a voltage divider and then to an Arduino pin where the signal can be read. When the switch is in the middle, no voltage is applied, and the pull down resistor on the P-Channel MOSFET closes the P-Channel MOSFET and allows the Arduino to be powered.

Laser Driver:



The 2.5 watt laser diode is driven by a TIP31A NPN transistor. I had to cut off the heat-sink of the transistor when I found the clearance was just a little too tight. Though I wouldn't recommend this, it should be fine. The transistor is driven by a 1k ohm resistor connected between pin 7 and the transistor's gate. I also have a blue LED and resistor in parallel with the laser diode to act as an indicator for whether the laser was intended to fire, even if the laser isn't plugged in. This is a far safer method of trouble shooting.

Audio Driver:



In order to enable basic audio sound effects a small, 2n2222 transistor and accompanying 48 ohm resistor are used to act as a basic audio driver. A 8 ohm speaker is connected between 5v and this transistor, which is connected to ground. The Arduino oscillates pin 11 on and off rapidly, causing the speaker to oscillate back and forth and generate sound.

NeoPixels:



For the few who haven't worked with them before, NeoPixels are a strip of individually addressable RGB LEDs. Essentially you apply power, ground, and give it a data signal and you can control a huge line of them. There are 8 sections throughout the cannon built to house NeoPixel Strips and one for a custom NeoPixel ring. Simply wire them together in one long chain, and connect one end to pin 9 on the Arduino.