~octaspire/crates2

ref: 0f7e2b5cb304054655d64adf30751ec34aa165e5 crates2/src/level.lisp -rw-r--r-- 1.3 KiB
0f7e2b5coctaspire Continue with turnstiles, refactor level information 11 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
;; Octaspire Crates 2 - Puzzle Game
;; Copyright 2020 octaspire.com
;;
;; Licensed under the Apache License, Version 2.0 (the "License");
;; you may not use this file except in compliance with the License.
;; You may obtain a copy of the License at
;;
;; http://www.apache.org/licenses/LICENSE-2.0
;;
;; Unless required by applicable law or agreed to in writing, software
;; distributed under the License is distributed on an "AS IS" BASIS,
;; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
;; See the License for the specific language governing permissions and
;; limitations under the License.
(in-package :crates2)

;; Methods

(defmethod update ((self list))
  (let ((level (get-current-level)))
    (when (runningp)
      (loop for crate in level
            do (update crate))
      (purge-lamented))))

(defmethod render ((self list))
  (when (runningp)
    (let ((level (get-current-level)))
      (loop for crate in level
            do (render crate)))))

;; Functions

(defun purge-lamented ()
  (setf *level* (remove-if #'(lambda (crate)
                               (let ((type (type-of crate)))
                                 (and (subtypep type 'moving)
                                      (not (eq type 'player))
                                      (lamented crate)))) *level*)))