Skip to content

Commit

Permalink
redesign game UI to make it slightly less atrocious
Browse files Browse the repository at this point in the history
  • Loading branch information
vii committed Jun 3, 2012
1 parent 001e6e4 commit f6053c5
Show file tree
Hide file tree
Showing 10 changed files with 169 additions and 172 deletions.
2 changes: 1 addition & 1 deletion src/blackjack/blackjack.lisp
Expand Up @@ -124,7 +124,7 @@
((my blackjack) ((my blackjack)
(<p :class "blackjack" "Blackjack!")))))) (<p :class "blackjack" "Blackjack!"))))))


(my-defun blackjack-player 'object-to-ml () (my-defun blackjack-player 'player-full-state-to-ml ()
(<div :class "blackjack-player" (<div :class "blackjack-player"
(call-next-method) (call-next-method)
(loop for h in (my hands) (loop for h in (my hands)
Expand Down
2 changes: 1 addition & 1 deletion src/game/coins.lisp
Expand Up @@ -12,7 +12,7 @@
do do
(setf (player-controller-var p 'coins) (its coins p)))) (setf (player-controller-var p 'coins) (its coins p))))


(my-defun coin-game-player 'object-to-ml () (my-defun coin-game-player 'player-full-state-to-ml ()
(<div :class "coin-game-player" (<div :class "coin-game-player"
(call-next-method) (call-next-method)
(let ((coins (or (my coins) (my 'player-controller-var 'coins)))) (let ((coins (or (my coins) (my 'player-controller-var 'coins))))
Expand Down
9 changes: 7 additions & 2 deletions src/game/framework.lisp
Expand Up @@ -28,7 +28,7 @@
(random-elt (choices-list choices))) (random-elt (choices-list choices)))


(my-defun game finished (&rest args) (my-defun game finished (&rest args)
(setf (my game-over) t) (setf (my game-over) (list* :game-over args))
(apply 'game-announce me :game-over args) (apply 'game-announce me :game-over args)
(values)) (values))


Expand All @@ -40,6 +40,11 @@
(my-defun player announce (message &rest args) (my-defun player announce (message &rest args)
(apply 'game-announce (my game) message args)) (apply 'game-announce (my game) message args))


(defgeneric player-full-state-to-ml (player))

(my-defun player full-state-to-ml ()
(object-to-ml me))

(my-defun game listeners () (my-defun game listeners ()
(append (mapcar 'player-controller (my players)) (my other-listeners))) (append (mapcar 'player-controller (my players)) (my other-listeners)))


Expand Down Expand Up @@ -173,4 +178,4 @@
(defmethod (setf player-controller-var) (new-value (player player) var) (defmethod (setf player-controller-var) (new-value (player player) var)
(setf (player-controller-var (player-controller player) var) new-value)) (setf (player-controller-var (player-controller player) var) new-value))
(defmethod player-controller-name-to-ml ((player player)) (defmethod player-controller-name-to-ml ((player player))
(player-controller-name-to-ml (player-controller player))) (player-controller-name-to-ml (player-controller player)))
17 changes: 10 additions & 7 deletions src/game/web-messages.lisp
@@ -1,21 +1,24 @@
(in-package #:tpd2.game) (in-package #:tpd2.game)


(defmacro def-web-state-message (message args &body body) (defmacro def-web-state-message (message args &body body)
`(my-defun web-state 'inform (game-state (message (eql ,message)) &key ,@args &allow-other-keys) `(progn
(declare (ignorable game-state)) (defmethod message-to-ml ((message (eql ,message)) &key ,@args &allow-other-keys)
(macrolet ((a (&rest args) (declare (ignorable game-state))
`(my add-announcement (<p :class "game-message" ,@args)))) (with-ml-output ,@body))
,@body))) (my-defun web-state 'inform (game-state (message (eql ,message)) &key ,@args &allow-other-keys)
(declare (ignorable game-state))
(my add-announcement (<p :class "game-message" ,@body)))))


(macrolet ((messages (&body body) (macrolet ((messages (&body body)
`(progn `(progn
,@(loop for (keyword args . ml) in body ,@(loop for (keyword args . ml) in body
collect `(def-web-state-message ,keyword ,args collect `(def-web-state-message ,keyword ,args
(a ,@ml)))))) ,@ml)))))


(messages (messages
(:talk (sender text) (:talk (sender text)
(<span :class "game-talk-message" sender ": " (<q text))) (<span :class "game-talk-message" sender ": " (<q text)))
(:shuffle () "The deck has been shuffled.")
(:new-player (player) (:new-player (player)
player " has joined the game.") player " has joined the game.")
(:resigned (player) (:resigned (player)
Expand Down Expand Up @@ -57,7 +60,7 @@
(t (t
(when result (when result
(with-ml-output (with-ml-output
(friendly-string result) ".") (friendly-string result) ". ")
"Game over.")))) "Game over."))))
(:demand (player amount) (:demand (player amount)
player " demanded " amount ".") player " demanded " amount ".")
Expand Down

0 comments on commit f6053c5

Please sign in to comment.