Move weapon and shot logic out of Player