summaryrefslogtreecommitdiffstats
path: root/src/game.lisp
diff options
context:
space:
mode:
authorEl-BG-1970 <elouangros@hotmail.com>2022-08-04 16:41:30 +0200
committerEl-BG-1970 <elouangros@hotmail.com>2022-08-04 16:41:30 +0200
commit5731684cca287633b7589c12ca1372eec5dc0f0a (patch)
treef0920be6027b5d1d03d321fb9160735599f27cc4 /src/game.lisp
parent164b961cdd97c4ef324bbb0ae5f46b394201183b (diff)
downloadtransacc-5731684cca287633b7589c12ca1372eec5dc0f0a.tar.gz
implemented game:change-zone
Diffstat (limited to 'src/game.lisp')
-rw-r--r--src/game.lisp37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/game.lisp b/src/game.lisp
index 2f7ce88..51c3a4d 100644
--- a/src/game.lisp
+++ b/src/game.lisp
@@ -2,32 +2,41 @@
(:use :cl)
(:export :new-game
:buy-item
- :sell-item))
+ :sell-item
+ :change-zone))
(in-package :game)
(defclass game ()
- ((player :initarg player
+ ((player :initarg :player
:accessor player)
- (zones :initarg zones
+ (zones :initarg :zones
:accessor zones)
- (curzone :initarg start-zone
- :accessor cur-zone)))
+ (cur-zone :initarg :start-zone
+ :accessor cur-zone)))
-(defun new-game (player zones start-zone)
+(defun new-game (player start-zone zones)
(make-instance 'game
: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)))))
+ (with-slots (player cur-zone) g
+ (let ((item (zone:get-commodity cur-zone name)))
+ (when item
+ (player:buy-item player item 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)))))
+ (with-slots (player cur-zone) g
+ (let ((item (zone:get-commodity cur-zone name)))
+ (when item
+ (player:sell-item player item amount)))))
+
+(defmethod change-zone ((g game) name)
+ (with-slots (cur-zone zones) g
+ (let ((z (find-if (lambda (z) (string= name
+ (zone:name z)))
+ zones)))
+ (when z
+ (setq cur-zone z)))))