diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/game.lisp | 15 | ||||
| -rw-r--r-- | src/main.lisp | 55 |
2 files changed, 54 insertions, 16 deletions
diff --git a/src/game.lisp b/src/game.lisp index b55224a..08184fc 100644 --- a/src/game.lisp +++ b/src/game.lisp @@ -5,7 +5,8 @@ :sell-item :change-zone :get-profit - :get-profit-in-zone)) + :get-profit-in-zone + :commodities-panel)) (in-package :game) @@ -65,10 +66,10 @@ (player-item (player:find-item player name)) (quantity (if player-item (cdr player-item) 0)) (profit (if player-item - (- price - (commodities:price (car player-item)))))) - (list name - price - quantity - profit))) + (- price (commodities:price (car player-item))) + 0))) + (list :name name + :price price + :qty quantity + :profit profit))) (zone:get-commodities cur-zone)))) diff --git a/src/main.lisp b/src/main.lisp index 9c0ba32..1fd05a9 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -5,13 +5,50 @@ (in-package :transacc) +(clim:define-application-frame superapp () + () + ;; :panes section describes different parts of the + ;; application-frame. This application has only one pane. + (:panes + (int :interactor :height 400 :width 600)) + + ;; :layouts section describes how the panes are layed out. + ;; This application has one layout named "default" which has a single pane. + (:layouts + (default int))) + +(defun format-panel (panel) + (loop for it in panel do + (format t "~a :~T ~$$ [~@$$] owned: ~a~%" + (getf it :name) + (getf it :price) + (getf it :profit) + (getf it :qty)))) + (defun main () - (let ((player (player:init-player "Joze" 2000)) - (zones - (list - (zone:new-zone "Bronx" - (list (commodities:new-commodity "speed" 500) - (commodities:new-commodity "grass" 40)))))) - (assert (equal (zone:name (car zones)) "Bronx")) - (assert (equal (player:name player) "Joze")) - (format t "~a in the game" (player:name player)))) + (let* ((p (player:init-player "Joze")) + (c (list (commodities:new-commodity "apple" 5) + (commodities:new-commodity "pear" 7))) + (c2 (list (commodities:new-commodity "apple" 6) + (commodities:new-commodity "pear" 2))) + (z (zone:new-zone "Bronx" c)) + (z2 (zone:new-zone "Manhattan" c2)) + (g (game:new-game p z2 (list z z2)))) + + ;; Panel command + (define-superapp-command (com-panel :name t) () + (format-panel (game:commodities-panel g))) + ;; Buy command + (define-superapp-command (com-buy :name t) + ((item 'string) (quantity 'integer)) + (game:buy-item g item quantity)) + ;; Sell command + (define-superapp-command (com-sell :name t) + ((item 'string) (quantity 'integer)) + (game:sell-item g item quantity)) + ;; Goto command + (define-superapp-command (com-goto :name t) + ((dest 'string)) + (game:change-zone g dest)) + + (clim:run-frame-top-level (clim:make-application-frame 'superapp)))) |
