From 164b961cdd97c4ef324bbb0ae5f46b394201183b Mon Sep 17 00:00:00 2001 From: El-BG-1970 Date: Thu, 4 Aug 2022 11:13:32 +0200 Subject: implemented game:buy-item and game:sell-item --- src/game.lisp | 16 +++++++++++++++- src/zone.lisp | 8 +++++++- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'src') 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))) -- cgit v1.2.3