summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game.lisp16
-rw-r--r--src/zone.lisp8
2 files changed, 22 insertions, 2 deletions
diff --git a/src/game.lisp b/src/game.lisp
index 7c2cbbb..2f7ce88 100644
--- a/src/game.lisp
+++ b/src/game.lisp
@@ -1,6 +1,8 @@
(defpackage game
(:use :cl)
- (:export :new-game))
+ (:export :new-game
+ :buy-item
+ :sell-item))
(in-package :game)
@@ -17,3 +19,15 @@
:player player
:zones zones
:start-zone start-zone))
+
+(defmethod buy-item ((g game) name amount)
+ (with-slots (player curzone) g
+ (let ((item (zone:get-commodity curzone name)))
+ (when item
+ (player:buy-item player name amount)))))
+
+(defmethod sell-item ((g game) name amount)
+ (with-slots (player curzone) g
+ (let ((item (zone:get-commodity curzone name)))
+ (when item
+ (player:sell-item player name amount)))))
diff --git a/src/zone.lisp b/src/zone.lisp
index 3121a5c..9a27f17 100644
--- a/src/zone.lisp
+++ b/src/zone.lisp
@@ -1,7 +1,8 @@
(defpackage zone
(:use :cl)
(:export :new-zone
- :name))
+ :name
+ :get-commodity))
(in-package :zone)
@@ -15,3 +16,8 @@
(make-instance 'zone
:name name
:commodities commodities))
+
+(defmethod get-commodity ((z zone) commodity-name)
+ (find-if (lambda (c) (equal (commodities:name c)
+ commodity-name))
+ (commodities z)))