summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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)))))
+
+