summaryrefslogtreecommitdiffstats
path: root/src/player.lisp
diff options
context:
space:
mode:
authorEl-BG-1970 <elouangros@hotmail.com>2022-07-31 17:30:05 +0200
committerEl-BG-1970 <elouangros@hotmail.com>2022-07-31 17:30:05 +0200
commit3dc8dc250a5cd4089f43a4ff2ac9e9593fa93203 (patch)
treeea02343e6a9897595790b69d87ded3a0f90e3d39 /src/player.lisp
parent4352604d3349098317a29006b1665bc457463e66 (diff)
downloadtransacc-3dc8dc250a5cd4089f43a4ff2ac9e9593fa93203.tar.gz
buy-item and some player tests
Diffstat (limited to 'src/player.lisp')
-rw-r--r--src/player.lisp19
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)))))
+
+