diff options
Diffstat (limited to 'src/player.lisp')
| -rw-r--r-- | src/player.lisp | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/src/player.lisp b/src/player.lisp index 6bcf173..bff62aa 100644 --- a/src/player.lisp +++ b/src/player.lisp @@ -5,59 +5,6 @@ (in-package :player) -(defclass inventory () - ((size :initarg :size - :reader size) - (filled :initform 0 - :accessor filled) - (items :initform '() - :accessor items))) - -(defmethod find-item ((inv inventory) name) - (with-slots (items) inv - (find-if - #'(lambda (i) - (equal (commodities:name (car i)) name)) - items))) - -(defmethod delete-item ((inv inventory) item) - ;; removes <item> from inventory list and substracts - ;; its stored quantity from the filled attribute - (with-slots (filled items) inv - (setq items (remove item items)) - (setq filled (- filled (cdr item))))) - -(defmethod add-item ((inv inventory) item quantity) - ;; add <quantity> of <item> to inventory - (with-slots (size filled items) inv - (when (> size (+ filled quantity)) - (let* ((old-item - (find-item inv (commodities:name item))) - (qt (if old-item - (progn - (delete-item inv old-item) - (+ quantity (cdr old-item))) - quantity))) - (prog1 - (setq filled (+ filled qt)) - (push (cons item qt) - items)))))) - -(defmethod remove-item ((inv inventory) name quantity) - ;; remove <quantity> of <item> from inventory - ;; quantity must be positive or zero - (assert (>= quantity 0)) - (with-slots (filled items) inv - (let ((item (find-item inv name))) - (when item - (delete-item inv item) - (if (< quantity (cdr item)) - (progn - (add-item inv - (car item) - (- (cdr item) quantity)) - (cons (car item) quantity)) - item))))) (defclass player () ((name :initarg :name |
