Skip to content

Commit

Permalink
Revert "Implement define-card, reindent all card files"
Browse files Browse the repository at this point in the history
This reverts commit 5d1e171.
  • Loading branch information
NoahTheDuke committed Jul 13, 2019
1 parent 5d1e171 commit fc1e4d9
Show file tree
Hide file tree
Showing 13 changed files with 19,265 additions and 19,230 deletions.
2,997 changes: 1,499 additions & 1,498 deletions src/clj/game/cards/agendas.clj

Large diffs are not rendered by default.

4,195 changes: 2,098 additions & 2,097 deletions src/clj/game/cards/assets.clj

Large diffs are not rendered by default.

4,781 changes: 2,391 additions & 2,390 deletions src/clj/game/cards/events.clj

Large diffs are not rendered by default.

3,071 changes: 1,536 additions & 1,535 deletions src/clj/game/cards/hardware.clj

Large diffs are not rendered by default.

4,913 changes: 2,457 additions & 2,456 deletions src/clj/game/cards/ice.clj

Large diffs are not rendered by default.

2,687 changes: 1,344 additions & 1,343 deletions src/clj/game/cards/identities.clj

Large diffs are not rendered by default.

4,155 changes: 2,078 additions & 2,077 deletions src/clj/game/cards/operations.clj

Large diffs are not rendered by default.

4,169 changes: 2,085 additions & 2,084 deletions src/clj/game/cards/programs.clj

Large diffs are not rendered by default.

4,769 changes: 2,385 additions & 2,384 deletions src/clj/game/cards/resources.clj

Large diffs are not rendered by default.

2,685 changes: 1,343 additions & 1,342 deletions src/clj/game/cards/upgrades.clj

Large diffs are not rendered by default.

50 changes: 33 additions & 17 deletions src/clj/game/core/card_defs.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,46 @@
[clojure.java.io :refer [file]]
[clojure.stacktrace :refer [print-stack-trace]]))

(defonce card-defs (atom {}))
(defn- load-all-cards
"Load all card definitions into their own namespaces"
([] (load-all-cards nil))
([path]
(doall (pmap load-file
(->> (file (str "src/clj/game/cards" (when path (str "/" path ".clj"))))
(file-seq)
(filter #(and (.isFile %)
(ends-with? % ".clj")))
(map str))))))

(defn define-card
[title impl]
(swap! card-defs assoc title impl))
(defn- get-card-defs
([] (get-card-defs nil))
([path]
(->> (all-ns)
(filter #(starts-with? % (str "game.cards" (when path (str "." path)))))
(map #(ns-resolve % 'card-definitions))
(map var-get)
(apply merge))))

(def card-defs {})

(defn reset-card-defs
"Performs any once only initialization that should be performed on startup"
([] (reset-card-defs nil))
([path]
(let [cards-var #'game.core.card-defs/card-defs]
(alter-var-root cards-var
(constantly
(merge card-defs
(do (load-all-cards path)
(get-card-defs path))))))
'loaded))

(defn card-def
"Retrieves a card's abilities definition map."
[card]
(if-let [title (:title card)]
(get @card-defs title)
(get card-defs title)
(.println *err* (with-out-str
(print-stack-trace
(Exception. (str "Tried to select card def for non-existent card: " card))
25)))))

(defn reset-card-defs []
(require '[game.cards.agendas]
'[game.cards.assets]
'[game.cards.events]
'[game.cards.hardware]
'[game.cards.ice]
'[game.cards.identities]
'[game.cards.operations]
'[game.cards.programs]
'[game.cards.resources]
'[game.cards.upgrades]))
2 changes: 1 addition & 1 deletion src/clj/game/core/events.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
(in-ns 'game.core)

(declare can-trigger? clear-wait-prompt event-title get-card
(declare can-trigger? card-def clear-wait-prompt event-title get-card
get-nested-host get-remote-names get-runnable-zones get-zones installed?
register-suppress resolve-ability
show-wait-prompt trigger-suppress unregister-suppress)
Expand Down
21 changes: 15 additions & 6 deletions test/clj/game_test/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,21 @@
edn/read-string
merge))

(when (empty? @all-cards)
(->> (load-cards)
(map (juxt :title identity))
(into {})
(reset! all-cards)))
(reset-card-defs)
(defn load-all-cards []
(when (empty? @all-cards)
(->> (load-cards)
(map #(assoc % :cid (utils/make-cid)))
(map (juxt :title identity))
(into {})
(reset! all-cards))
(reset-card-defs)))
(load-all-cards)

(hawk/watch! [{:paths ["src/clj/game/cards"]
:filter hawk/file?
:handler (fn [ctx e]
(reset-card-defs
(-> e :file io/file .getName (string/split #"\.") first)))}])

;; General utilities necessary for starting a new game
(defn find-card
Expand Down

0 comments on commit fc1e4d9

Please sign in to comment.