 
 (defn do-action!
   ([ship {:keys [acceleration rotation fire-weapon] :as action} activate?]
-   (when acceleration (dosync (alter ship assoc :acceleration (if activate? acceleration 0) :collidable? ship-damage)))
+   (when acceleration (dosync (alter ship assoc :acceleration (if activate? acceleration 0) :collidable? ship-damage)
+                              (alter ship toggle-shooting :engine activate?)))
    (when rotation (dosync (alter ship set-rotation rotation activate?)))
    (when fire-weapon (dosync (alter ship toggle-shooting fire-weapon activate?))))
   ([ship action]

   :cockpit-shape  [[-0.143 0.714] [0.143 0.714] [0.286 -0.143] [-0.286 -0.143]]
   :cockpit-color  (Color. 0 0 80)

   :weapons        {:machinegun (create-weapon :projectile)
                    :launcher   (create-weapon :missile)}
   :shots          []


(defmethod move :missile [missile]
  (basic-move missile false))

(defmethod move :fire [{:keys [life-time color] :as fire}]
  (if (< life-time turn-millis)
    nil
    (let [fire (basic-move fire false)
          alpha (int (* (.getAlpha color) (- 1 (/ turn-millis life-time))))
          color (Color. (.getRed color) (.getGreen color) (.getBlue color) alpha)
          life-time (- life-time turn-millis)]
      (assoc fire :life-time life-time
                  :color color))))

(defmethod move :asteroid [asteroid]
  (basic-move asteroid))

