         square #(* % %)]
     (<= (+ (square delta-x) (square delta-y)) (square size))))
 
+(defn damage [{current-damage :damage-taken :as obj} damage-amount]
+  (assoc obj :damage-taken (if current-damage (+ current-damage damage-amount) damage-amount)))
+
 (defmulti check-collision
           (fn [obj1 obj2]
             (cond

    :direction      dir
    :rotation-speed 0

    :collidable?    true
    })
  ([{:keys [position size direction speed] :as ship}]
   (let [dir-vec (m/rotate-vec direction [0 1])

              (and (sequential? obj1) (sequential? obj2)) :seq-seq)))

(defmethod check-collision :map-map [obj1 obj2]
  (if (and (:collidable? obj1)
           (:collidable? obj2)
           (collide? obj1 obj2))
    [(damage obj1 (:collidable? obj2)) (damage obj2 (:collidable? obj1))]
    [obj1 obj2]))

(defmethod check-collision :map-seq [obj1 coll]
  (loop [obj1 obj1, coll coll, coll-result []]
