               (int \A) {:rotation (- ship-rotation-speed)}
               (int \D) {:rotation ship-rotation-speed}
               (int \W) {:acceleration ship-acceleration}
-              (int \J) {:fire-missile true}
-              (int \K) {:shoot true}})
+              (int \J) {:fire-weapon :launcher}
+              (int \K) {:fire-weapon :machinegun}})
 
 ; END: constants
 

      (ref-set asteroids asteroids*))))

(defn do-action!
  ([ship {:keys [acceleration rotation shoot fire-missile] :as action} activate?]
   (when acceleration (dosync (alter ship assoc :acceleration (if activate? acceleration 0) :collidable? ship-damage)))
   (when rotation (dosync (alter ship set-rotation rotation activate?)))
   (when shoot (dosync (alter ship assoc :shooting? activate? :collidable? ship-damage)))
   (when fire-missile (dosync (alter ship assoc :firing? activate? :collidable? ship-damage))))
  ([ship action]
   (do-action! ship action true)))


(def debris-life-millis 3000)

(def ammunition-types {:projectile {:size         (/ ship-size 10)
                                    :shape        [[-1.0 -5.0] [1.0 -5.0] [0.0 1.0]]
                                    :color        (Color. 250 50 10)
                                    :speed        2.5
                                    :acceleration 0
                                    :damage       3
                                    :cooldown     300}
                       :missile    {:size         (/ ship-size 3)
                                    :shape          [[0.0 1.0] [0.5 -1.0] [0.5 -3.5] [1.0 -4.5] [0.5 -4.5] [0.25 -4.25]
                                                     [-0.25 -4.25] [-0.5 -4.5] [-1.0 -4.5] [-0.5 -3.5] [-0.5 -1.0]]
                                    :color          (Color. 10 50 250)
                                    :speed        0
                                    :acceleration 3
                                    :damage       30
