From 36df81a7e3bb23d4cc347cc335fbd9b949a6af91 Mon Sep 17 00:00:00 2001 From: colin Date: Mon, 6 Mar 2023 18:33:45 -0800 Subject: Altered: s/campaign/adventure globally --- DEV.org | 18 +++++++++--------- dnd.asd | 2 +- src/endpoints.lisp | 13 +++++++++---- src/model.lisp | 32 ++++++++++++++++---------------- src/names.lisp | 4 ++-- src/pages/tavern.lisp | 4 +++- src/queries.lisp | 20 ++++++++++---------- src/transactions.lisp | 4 ++-- src/views/adventure.lisp | 8 ++++++++ src/views/campaign.lisp | 8 -------- 10 files changed, 60 insertions(+), 53 deletions(-) create mode 100644 src/views/adventure.lisp delete mode 100644 src/views/campaign.lisp diff --git a/DEV.org b/DEV.org index 66f3c53..5629287 100644 --- a/DEV.org +++ b/DEV.org @@ -7,23 +7,23 @@ - [X] Wot's Yer Name, Fella? (make the form) - [X] handle post (set a cookie/header) - [X] make a tavern page -** TODO Make Campaigns +** TODO Make Adventures - creator - seers - title - rumors -As a player, I can "petition the Emperor" to submit a request for a campaign -against the darkness. I give this campaign a title it shall be known by. -I will become the CREATOR of the campaign, and one of its SEERS. I can +As a player, I can "petition the Emperor" to submit a request for a adventure +against the darkness. I give this adventure a title it shall be known by. +I will become the CREATOR of the adventure, and one of its SEERS. I can appoint fellow players as additional SEERS. -Once a campaign exists, any player may submit a RUMOR related to said -campaign. Rumors are viewable by all, but SEERS may act upon those rumors +Once a adventure exists, any player may submit a RUMOR related to said +adventure. Rumors are viewable by all, but SEERS may act upon those rumors to lay out a plan of attack, create a QUEST which is filled with HAZARDS informed by those rumors. -** TODO Make Monsters (in campaigns) +** TODO Make Monsters (in adventures) ** TODO Attack Monsters (assign heroes / change status) * More fings for wargfood @@ -41,7 +41,7 @@ informed by those rumors. | Landing Page: Overview | Tavern | | Authorization | Doorkeeper | | Sprint | Quest | -| Project | Campaign | +| Project | Adventure | | User account creation | Shrine | | | Equipment/Loot | | Assignment To A Task | Melee | @@ -53,7 +53,7 @@ informed by those rumors. | | Level / Experience | -Campaigns can have a pace. The pace is used to deduct hitpoints when +Adventures can have a pace. The pace is used to deduct hitpoints when nothing happens. Penalty for retreating: Roll a die,lose something (hp), (equip). diff --git a/dnd.asd b/dnd.asd index 032e37a..aad542e 100644 --- a/dnd.asd +++ b/dnd.asd @@ -39,7 +39,7 @@ (:file "player") (:file "quest") (:file "hazard") - (:file "campaign"))) + (:file "adventure"))) (:module "pages" :serial t :components ((:file "doorkeeper") diff --git a/src/endpoints.lisp b/src/endpoints.lisp index dbfb455..5b65ff7 100644 --- a/src/endpoints.lisp +++ b/src/endpoints.lisp @@ -130,10 +130,15 @@ functions in url parameters in endpoint definitions." (birth-from-the-goddess-loins player name) (redirect-to "/tavern")))) -(defendpoint* :post "/new-campaign" () () +(defendpoint* :get "/adventure-awaits" () () + (with-session (player) + (render (page-render-mode) + (make-instance 'new-adventure)))) + +(defendpoint* :post "/adventure-awaits" () () (with-session (creator) (with-checked-plist ((title :title 'a-short-string)) (lzb:request-body) - (let ((campaign - (create-campaign creator title))) - (redirect-to (urlpath campaign)))))) + (let ((adventure + (create-adventure creator title))) + (redirect-to (urlpath adventure)))))) diff --git a/src/model.lisp b/src/model.lisp index 49cd03a..f64e28f 100644 --- a/src/model.lisp +++ b/src/model.lisp @@ -122,17 +122,17 @@ (:metaclass db:persistent-class)) -(defmethod campaign ((hero hero)) +(defmethod adventure ((hero hero)) (a:when-let (quest (quest hero)) - (campaign quest))) + (adventure quest))) -(defclass campaign (game-object) +(defclass adventure (game-object) ((creator :reader creator :initarg :creator - :initform (error "campaigns must have a creator") + :initform (error "adventures must have a creator") :type player - :documentation "The player instance of the user who made this campaign.") + :documentation "The player instance of the user who made this adventure.") (seers :accessor seers :initarg :seers @@ -142,7 +142,7 @@ (title :accessor title :initarg :title - :initform (error "A campaign needs a title") + :initform (error "A adventure needs a title") :type string) (rumors :accessor rumors @@ -150,7 +150,7 @@ :type (or nil (cons rumor)) :documentation "Beasts, Monsters, and Hazards rumored to be lurking about.")) (:metaclass db:persistent-class) - (:documentation "A campaign is a container of quests. Campaigns are expected to be engaged with on a particular schedule, and are run by particular people.")) + (:documentation "A adventure is a container of quests. Adventures are expected to be engaged with on a particular schedule, and are run by particular people.")) (defclass rumor (db:store-object) ((reporter @@ -163,19 +163,19 @@ :initform (error "A rumor must contain some reported matter") :initarg :reported :type string - :documentation "A description of the supposed peril that awaits heroes in a particular campaign.")) + :documentation "A description of the supposed peril that awaits heroes in a particular adventure.")) (:metaclass db:persistent-class) - (:documentation "Transcript of a rumor reported by some player related to a Campaign.")) + (:documentation "Transcript of a rumor reported by some player related to a Adventure.")) (defclass quest (game-object) - ((campaign - :reader campaign - :initarg :campaign - :initform (error "No quest can fall outside the scope of a campaign.") - :type campaign + ((adventure + :reader adventure + :initarg :adventure + :initform (error "No quest can fall outside the scope of a adventure.") + :type adventure :index-type idx:hash-index - :index-reader quests-in-campaign - :documentation "The campaign to which this quest belongs") + :index-reader quests-in-adventure + :documentation "The adventure to which this quest belongs") (name :accessor name :initarg :name diff --git a/src/names.lisp b/src/names.lisp index 48601b4..b355405 100644 --- a/src/names.lisp +++ b/src/names.lisp @@ -7,8 +7,8 @@ (:documentation "Returns a unique name for an object, or NIL if it does not have one.") (:method ((ob t)) nil)) -(defmethod unique-name ((campaign campaign)) - (title campaign)) +(defmethod unique-name ((adventure adventure)) + (title adventure)) (defmethod unique-name ((hero hero)) (name hero)) diff --git a/src/pages/tavern.lisp b/src/pages/tavern.lisp index e6250e1..1f6c441 100644 --- a/src/pages/tavern.lisp +++ b/src/pages/tavern.lisp @@ -13,5 +13,7 @@ (:br) (:a :href "/goddess-shrine" "Pray a new hero rises.") (:br) - (:a :href "/spymaster" "Report a Roguish Rumour...")))) + (:a :href "/spymaster" "Report a Roguish Rumour...") + (:br) + (:a :href "/adventure-awaits" "Embark on a new Adventure!")))) diff --git a/src/queries.lisp b/src/queries.lisp index 1816c5c..9cd581c 100644 --- a/src/queries.lisp +++ b/src/queries.lisp @@ -9,22 +9,22 @@ "Return all quests in which one of player's heroes is engaged." (remove nil (mapcar #'quest (player-heroes player)))) -(defun player-campaigns (player) - "Return a list of campaigns one of the players' heroes is involved in." - (mapcar #'campaign (player-quests player) )) +(defun player-adventures (player) + "Return a list of adventures one of the players' heroes is involved in." + (mapcar #'adventure (player-quests player) )) -(defun campaign-heros (campaign &key (activep t)) - "All the heros actively involved in this CAMPAIGN. If ACTIVEP, then +(defun adventure-heros (adventure &key (activep t)) + "All the heros actively involved in this ADVENTURE. If ACTIVEP, then only the active quest(s) are considered, otherwise all quests are considered." (remove-duplicates (mapcan #'heroes-on-quest (if activep - (remove-if-not #'quest-startedp (quests-in-campaign campaign)) - (quests-in-campaign campaign))))) + (remove-if-not #'quest-startedp (quests-in-adventure adventure)) + (quests-in-adventure adventure))))) (defun fetch-comrades (player &key (activep t)) - "Returns all the heroes in any one of the player's campaigns. If + "Returns all the heroes in any one of the player's adventures. If ACTIVEP, then only heroes involved in active quests are returned." (remove-duplicates - (loop :for campaign :in (player-campaigns player) - :nconc (campaign-heros campaign :activep activep)))) + (loop :for adventure :in (player-adventures player) + :nconc (adventure-heros adventure :activep activep)))) diff --git a/src/transactions.lisp b/src/transactions.lisp index ad9c9e8..647452b 100644 --- a/src/transactions.lisp +++ b/src/transactions.lisp @@ -17,6 +17,6 @@ (db:with-transaction () (make-instance 'player :nickname nick))) -(defun create-campaign (player title) +(defun create-adventure (player title) (db:with-transaction () - (make-instance 'campaign :title title :creator player))) + (make-instance 'adventure :title title :creator player))) diff --git a/src/views/adventure.lisp b/src/views/adventure.lisp new file mode 100644 index 0000000..b4980f1 --- /dev/null +++ b/src/views/adventure.lisp @@ -0,0 +1,8 @@ +;;;; views/adventure.lisp -- views of for adventure instances + +(in-package :dnd) + + +(defrender :inline ((adventure adventure)) + (with-html + (:a :href (urlpath adventure) (title adventure)))) diff --git a/src/views/campaign.lisp b/src/views/campaign.lisp deleted file mode 100644 index 5e1498a..0000000 --- a/src/views/campaign.lisp +++ /dev/null @@ -1,8 +0,0 @@ -;;;; views/campaign.lisp -- views of for campaign instances - -(in-package :dnd) - - -(defrender :inline ((campaign campaign)) - (with-html - (:a :href (urlpath campaign) (title campaign)))) -- cgit v1.2.3