|
240 | 240 |
|
241 | 241 | (defn init-level! |
242 | 242 | "Initializes a new level" |
243 | | - [& {:keys [level]}] |
| 243 | + [{:keys [level ship] :as game-state}] |
244 | 244 | (let [num-asteroids (+ 3 level)] |
245 | | - (swap! game-state assoc |
246 | | - :asteroids (vec (for [_ (range num-asteroids)] |
247 | | - (let [edge (rand-int 4) |
248 | | - x (case edge |
249 | | - 0 (rand-int canvas-width) |
250 | | - 1 canvas-width |
251 | | - 2 (rand-int canvas-width) |
252 | | - (rand-int canvas-height)) |
253 | | - y (case edge |
254 | | - 0 0 |
255 | | - 1 (rand-int canvas-height) |
256 | | - 2 canvas-height |
257 | | - 0)] |
258 | | - (create-asteroid :x x :y y :size-type :large)))) |
259 | | - :bullets [] |
260 | | - :particles [] |
261 | | - :ufo-timer (+ 600 (rand-int 600)) |
262 | | - :ship (assoc (:ship @game-state) |
263 | | - :invulnerable 120)))) |
| 245 | + (merge game-state |
| 246 | + {:asteroids (vec (for [_ (range num-asteroids)] |
| 247 | + (let [edge (rand-int 4) |
| 248 | + x (case edge |
| 249 | + 0 (rand-int canvas-width) |
| 250 | + 1 canvas-width |
| 251 | + 2 (rand-int canvas-width) |
| 252 | + (rand-int canvas-height)) |
| 253 | + y (case edge |
| 254 | + 0 0 |
| 255 | + 1 (rand-int canvas-height) |
| 256 | + 2 canvas-height |
| 257 | + 0)] |
| 258 | + (create-asteroid :x x :y y :size-type :large)))) |
| 259 | + :bullets [] |
| 260 | + :particles [] |
| 261 | + :ufo-timer (+ 600 (rand-int 600)) |
| 262 | + :ship (assoc ship :invulnerable 120)}))) |
264 | 263 |
|
265 | 264 | (defn reset-ship! |
266 | 265 | "Resets ship to center" |
|
559 | 558 | (when (empty? asteroids) |
560 | 559 | (play-level-complete-sound) ; Play victory sound |
561 | 560 | (swap! game-state update :level inc) |
562 | | - (init-level! :level (:level @game-state)))))) |
| 561 | + (swap! game-state init-level!))))) |
563 | 562 |
|
564 | 563 | ;; ============================================================================ |
565 | 564 | ;; Drawing Functions |
|
765 | 764 | :distance 0} |
766 | 765 | :fire-button false |
767 | 766 | :hyperspace-button false}) |
768 | | - (init-level! :level 1)) |
| 767 | + (init-level! {:level 1 :ship {}})) |
769 | 768 |
|
770 | 769 | ;; ============================================================================ |
771 | 770 | ;; Canvas Component |
|
0 commit comments