I didnt look through all the code posted, so not sure if this will help. However, this is how I would do it.
Since you have a sprite manager, you need to be able to 'create' sprites, manage them while they are alive, and eventually destroy them after a certain time, or condition.
For the projectile, you need to 'create' it at the location of your player, and let your sprites hold a heading and velocity.
so when player fires, create projectile sprite, set its heading to whatever heading your player has, set its velocity to something fast, then let the sprite manager, continue to update its movement, check collisions, and draw the projecting, until it gets off screen or hits something, etc... then let the sprite manager destory the object.