f473d0289410
Name the little critters
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Sat, 06 Aug 2016 19:42:26 +0000 |
parents | 8c46ebe7e712 |
children | bedfd140c6ef |
branches/tags | (none) |
files | silt.lisp |
Changes
--- a/silt.lisp Sat Aug 06 19:24:57 2016 +0000 +++ b/silt.lisp Sat Aug 06 19:42:26 2016 +0000 @@ -286,6 +286,17 @@ heightmap) +;;;; Name Generation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defparameter *name-syllable-lists* + '(#(snarf glor snorri) + #(able amble bur blur chand))) + +(defun random-name () + (format nil "~:(~{~A~}~)" + (mapcar (lambda (syllables) (random-elt syllables)) + *name-syllable-lists*))) + + ;;;; Roll-Your-Own-ECS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Entities are stored in an {id -> entity} hash table. ;;; @@ -617,7 +628,8 @@ ;;; Fauna -(define-entity creature (coords visible sentient flavor metabolizing)) +(define-entity creature (coords visible sentient flavor metabolizing) + (name :initform (random-name) :accessor creature-name)) (defparameter *directions* @@ -671,6 +683,9 @@ "It likes food."))) +(defmethod starve :after ((c creature)) + (log-message "~A has starved!" (creature-name c))) + ;;;; Profiling ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (sb-sprof::profile-call-counts "SILT")