From 0ca1b0a8d9ab0a7d687a9f2edb6eae2e57851129 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Fri, 28 Jun 2019 14:56:07 +0100 Subject: loop->cl-loop --- NEWS.md | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'NEWS.md') diff --git a/NEWS.md b/NEWS.md index e4e512d..3455f37 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +0.4 (unreleased) +---------------- + +- Replace some calls to `loop` with calls to `cl-loop`. + 0.3 (2019-04-15) ---------------- -- cgit v1.2.3 From adf4c563f1432d880bb427dde42ebad3df57e7d5 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sat, 7 Nov 2020 17:09:21 -0700 Subject: changelog Signed-off-by: Sean Whitton --- NEWS.md | 1 + 1 file changed, 1 insertion(+) (limited to 'NEWS.md') diff --git a/NEWS.md b/NEWS.md index 3455f37..279d58c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,7 @@ ---------------- - Replace some calls to `loop` with calls to `cl-loop`. +- Other code cleanup. 0.3 (2019-04-15) ---------------- -- cgit v1.2.3 From a64af30bd4e5ffe4d49813abe7776a0676c3c74f Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sat, 7 Nov 2020 17:10:30 -0700 Subject: implement displaying recent dice rolls in a split window Signed-off-by: Sean Whitton --- NEWS.md | 1 + TODO.md | 2 -- org-d20.el | 38 ++++++++++++++++++++++++++++++++++---- 3 files changed, 35 insertions(+), 6 deletions(-) (limited to 'NEWS.md') diff --git a/NEWS.md b/NEWS.md index 279d58c..e28052b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ 0.4 (unreleased) ---------------- +- New defcustom, `org-d20-display-rolls-buffer`. - Replace some calls to `loop` with calls to `cl-loop`. - Other code cleanup. diff --git a/TODO.md b/TODO.md index 4dc9be5..d9ad189 100644 --- a/TODO.md +++ b/TODO.md @@ -3,5 +3,3 @@ Features - defcustom to roll each monster's initiative separately (as in 3e), rather than having type of monster act at the same time (as in 5e) - -- small window with trail of recent rolls diff --git a/org-d20.el b/org-d20.el index 9c01e58..ed3dc7f 100644 --- a/org-d20.el +++ b/org-d20.el @@ -82,6 +82,11 @@ Rather than starting again for each type." :type 'boolean :group 'org-d20) +(defcustom org-d20-display-rolls-buffer nil + "Non-nil means split the window and display history of dice rolls." + :type 'boolean + :group 'org-d20) + (defvar org-d20-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "C-c , i") #'org-d20-initiative-dwim) @@ -186,8 +191,8 @@ the best N of them, e.g., 4d6k3." (frame-width)) (s-replace " " "" rolls) rolls))) - (message "%s = %s = %s" exp rolls-display result*)) - (message "%s = %s" exp (int-to-string result)))) + (org-d20--record-roll "%s = %s = %s" exp rolls-display result*)) + (org-d20--record-roll "%s = %s" exp (int-to-string result)))) (when org-d20-dice-sound (play-sound-file org-d20-dice-sound))) @@ -213,8 +218,8 @@ the best N of them, e.g., 4d6k3." (disadv (if (<= fst snd) (concat (propertize fst* 'face 'bold) " " snd*) (concat fst* " " (propertize snd* 'face 'bold))))) - (message "No adv./disadv.: %s\tAdv.: %s\tDisadv.: %s" - fst* adv disadv)) + (org-d20--record-roll "No adv./disadv.: %s\tAdv.: %s\tDisadv.: %s" + fst* adv disadv)) (when org-d20-dice-sound (play-sound-file org-d20-dice-sound))) @@ -448,5 +453,30 @@ the best N of them, e.g., 4d6k3." (defun org-d20--d20-plus (&optional mod) (+ 1 mod (random 20))) +;; Record and display a new dice roll result +(defun org-d20--record-roll (&rest args) + (let ((roll (apply #'format args))) + (with-current-buffer (get-buffer-create "*Dice Trail*") + (setq-local require-final-newline nil) + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) + (insert " " roll)) + (cl-flet ((scroll (window) + (with-selected-window window + (goto-char (point-max)) + (beginning-of-line) + (recenter -1) + (redisplay)))) + (if-let ((window (get-buffer-window "*Dice Trail*"))) + (when (window-parameter window 'org-d20--dice-trail-split) + (scroll window)) + (if (and org-d20-mode org-d20-display-rolls-buffer) + (let ((window (split-window nil -8 'below))) + (set-window-buffer window "*Dice Trail*") + (set-window-parameter window 'org-d20--dice-trail-split t) + (scroll window)) + (message roll)))))) + (provide 'org-d20) ;;; org-d20.el ends here -- cgit v1.2.3 From a3734368cd5a36541dab2fa8f7404cb850991b5b Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Thu, 12 Nov 2020 21:53:08 -0700 Subject: org-d20-d20: show d4 in case Bless spell is active Signed-off-by: Sean Whitton --- NEWS.md | 1 + org-d20.el | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'NEWS.md') diff --git a/NEWS.md b/NEWS.md index e28052b..8ba0aef 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,7 @@ ---------------- - New defcustom, `org-d20-display-rolls-buffer`. +- `org-d20-d20` shows the result of rolling a d4 in case /Bless/ is active. - Replace some calls to `loop` with calls to `cl-loop`. - Other code cleanup. diff --git a/org-d20.el b/org-d20.el index 198b585..28ab294 100644 --- a/org-d20.el +++ b/org-d20.el @@ -210,16 +210,25 @@ the best N of them, e.g., 4d6k3." (interactive) (let* ((fst (cdr (org-d20--roll "1d20"))) (snd (cdr (org-d20--roll "1d20"))) + (bls (cdr (org-d20--roll "1d4"))) (fst* (int-to-string fst)) (snd* (int-to-string snd)) + (bls* (int-to-string bls)) (adv (if (>= fst snd) (concat (propertize fst* 'face 'bold) " " snd*) (concat fst* " " (propertize snd* 'face 'bold)))) (disadv (if (<= fst snd) (concat (propertize fst* 'face 'bold) " " snd*) (concat fst* " " (propertize snd* 'face 'bold))))) - (org-d20--record-roll "No adv./disadv.: %s\tAdv.: %s\tDisadv.: %s" - fst* adv disadv)) + (org-d20--record-roll + "No adv./disadv.: %s%sAdv.: %s%sDisadv.: %s%sBless: %s" + fst* + (make-string (- 4 (length fst*)) ?\ ) + adv + (make-string (- 8 (length adv)) ?\ ) + disadv + (make-string (- 10 (length disadv)) ?\ ) + bls*)) (when org-d20-dice-sound (play-sound-file org-d20-dice-sound))) -- cgit v1.2.3 From bab77ede4b1aaf879e7c24e0522da624ee23bf2e Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Tue, 29 Dec 2020 12:20:13 -0700 Subject: release 0.4 --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'NEWS.md') diff --git a/NEWS.md b/NEWS.md index 8ba0aef..2c3950e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -0.4 (unreleased) +0.4 (2020-12-29) ---------------- - New defcustom, `org-d20-display-rolls-buffer`. -- cgit v1.2.3