diff options
Diffstat (limited to 'src/main.lisp')
| -rw-r--r-- | src/main.lisp | 55 |
1 files changed, 46 insertions, 9 deletions
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)))) |
