diff options
Diffstat (limited to 'lisparuga/enemy.scm')
-rw-r--r-- | lisparuga/enemy.scm | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/lisparuga/enemy.scm b/lisparuga/enemy.scm new file mode 100644 index 0000000..5ecba62 --- /dev/null +++ b/lisparuga/enemy.scm @@ -0,0 +1,65 @@ +;;; Lisparuga +;;; Copyright © 2020 David Thompson <dthompson2@worcester.edu> +;;; +;;; Lisparuga is free software: you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published +;;; by the Free Software Foundation, either version 3 of the License, +;;; or (at your option) any later version. +;;; +;;; Lisparuga is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Lisparuga. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Enemy actors. +;; +;;; Code: + +(define-module (lisparuga enemy) + #:use-module (chickadee math rect) + #:use-module (chickadee math vector) + #:use-module (chickadee scripting) + #:use-module (chickadee render texture) + #:use-module (lisparuga actor) + #:use-module (lisparuga asset) + #:use-module (lisparuga bullets) + #:use-module (lisparuga config) + #:use-module (lisparuga node) + #:use-module (lisparuga node-2d) + #:use-module (oop goops) + #:export (<enemy> + health + points + parting-shots + + make-utatsugumi)) + + +;;; +;;; Base Enemy +;;; +(define-class <enemy> (<actor>) + (health #:accessor health #:init-keyword #:health) + (points #:getter points #:init-keyword #:points) + (parting-shots #:getter parting-shots #:init-keyword #:parting-shots)) + + +;;; +;;; Utatsugumi +;;; + +(define-class <utatsugumi> (<enemy>)) + +(define (make-utatsugumi polarity x y) + (make <utatsugumi> + #:name (gensym "utatsugumi-") + #:health 1 + #:points 20 + #:parting-shots 5 + #:polarity polarity + #:position (vec2 x y))) |