src/entities/food.lisp @ ea80c30bf217

Tweak
author Steve Losh <steve@stevelosh.com>
date Sun, 08 Jan 2017 14:00:57 +0000
parents 903ab2ce309c
children d61f3224d0dc
(in-package :ap.entities)

(defparameter *foods*
  (concatenate 'vector
               (read-file-into-form "data/vegetables.lisp")
               (read-file-into-form "data/meat.lisp")))

(defparameter *tastes*
  #("a bit rotten"
    "a bit strange"
    "awful"
    "better than nothing"
    "better than you expected"
    "crunchy"
    "decent"
    "delicious"
    "depressing"
    "expensive"
    "faintly of mice"
    "gritty"
    "horrifying"
    "like an old sock"
    "like it's brand new"
    "like it's starting to go bad"
    "like something else"
    "like something your father used to make"
    "like something your mother used to make"
    "musty"
    "okay"
    "pretty nice"
    "questionable"
    "salty"
    "sour"
    "spicy"
    "wonderful"))


(define-entity food (visible coords holdable)
  (energy :accessor food/energy :initarg :food/energy))

(defun random-food-energy ()
  (random-range 30.0 80.0))

(defun random-food-description ()
  (format nil "a ~A of ~A"
          (random-elt #("can" "tin" "package"))
          (random-elt *foods*)))

(defun random-food-taste ()
  (format nil "It tastes ~A."
          (random-elt *tastes*)))

(defun make-food (x y)
  (create-entity 'food
    :coords/x x
    :coords/y y
    :visible/glyph "%"
    :visible/color ap::+black-yellow+
    :holdable/description (random-food-description)
    :food/energy (random-food-energy)))