diff options
Diffstat (limited to 'src/player.lisp')
| -rw-r--r-- | src/player.lisp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/player.lisp b/src/player.lisp index bff62aa..d91c32a 100644 --- a/src/player.lisp +++ b/src/player.lisp @@ -1,7 +1,10 @@ (defpackage player (:use :cl) (:export :init-player - :name)) + :name + :cash + :debt + :buy-item)) (in-package :player) @@ -19,7 +22,7 @@ :accessor clout) (stash :initform 0 :accessor stash) - (stock :initform (make-instance 'inventory :size 100) + (stock :initform (inventory:new-inventory 100) :accessor stock))) (defun init-player (name &optional (cash 2000) (debt 5000)) @@ -27,3 +30,15 @@ :name name :cash cash :debt debt)) + +(defmethod buy-item ((p player) item quantity) + (with-slots (stock cash) p + (let ((cost (* quantity + (commodities:price item)))) + (when (>= cash cost) + (progn + (inventory:add-item stock item quantity) + (setq cash (- cash cost)) + t))))) + + |
