Skip to content

Commit

Permalink
Export eid
Browse files Browse the repository at this point in the history
  • Loading branch information
NoahTheDuke committed Jun 10, 2019
1 parent ecdfedc commit 30f0d2a
Show file tree
Hide file tree
Showing 18 changed files with 48 additions and 37 deletions.
1 change: 1 addition & 0 deletions src/clj/game/cards/agendas.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.agendas
(:require [game.core :refer :all]
[game.core.eid :refer [effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/assets.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.assets
(:require [game.core :refer :all]
[game.core.eid :refer [effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/events.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.events
(:require [game.core :refer :all]
[game.core.eid :refer [make-eid make-result effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/hardware.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.hardware
(:require [game.core :refer :all]
[game.core.eid :refer [make-eid make-result effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/ice.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.ice
(:require [game.core :refer :all]
[game.core.eid :refer [make-eid effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability when-let*]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/identities.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.identities
(:require [game.core :refer :all]
[game.core.eid :refer [effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/operations.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.operations
(:require [game.core :refer :all]
[game.core.eid :refer [make-eid make-result effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability when-let*]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/programs.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.programs
(:require [game.core :refer :all]
[game.core.eid :refer [effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability when-let*]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/resources.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.resources
(:require [game.core :refer :all]
[game.core.eid :refer [make-eid effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/cards/upgrades.clj
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
(ns game.cards.upgrades
(:require [game.core :refer :all]
[game.core.eid :refer [effect-completed]]
[game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[clojure.string :refer [split-lines split join lower-case includes? starts-with?]]
Expand Down
1 change: 1 addition & 0 deletions src/clj/game/core.clj
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(ns game.core
(:require [game.utils :refer :all]
[game.macros :refer [effect req msg wait-for continue-ability]]
[game.core.eid :refer [make-eid make-result register-effect-completed effect-completed complete-with-result]]
[clj-time.core :as t]
[clojure.string :as string :refer [split-lines split join lower-case includes? starts-with?]]
[clojure.java.io :as io]
Expand Down
2 changes: 1 addition & 1 deletion src/clj/game/core/cards.clj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

(declare active? all-installed all-active-installed cards card-init deactivate
card-flag? gain lose get-card-hosted handle-end-run hardware? ice? is-type?
make-eid program? register-events remove-from-host remove-icon make-card
program? register-events remove-from-host remove-icon make-card
resource? rezzed? toast toast-check-mu trash trigger-event
update-breaker-strength update-hosted! update-ice-strength unregister-events
use-mu)
Expand Down
11 changes: 2 additions & 9 deletions src/clj/game/core/costs.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
(in-ns 'game.core)

(declare forfeit prompt! toast damage mill installed? is-type? is-scored? system-msg
facedown? make-result unknown->kw discard-from-hand card-str trash trash-cards
complete-with-result all-installed-runner-type pick-credit-providing-cards all-active
facedown? unknown->kw discard-from-hand card-str trash trash-cards
all-installed-runner-type pick-credit-providing-cards all-active
eligible-pay-credit-cards corp? runner? in-hand?)

(defn deduct
Expand Down Expand Up @@ -139,13 +139,6 @@
costs
(when title (toast state side (str cost-msg " for " title ".")) false)))))

(defn- complete-with-result
"Calls `effect-complete` with `make-result` and also returns the argument.
Helper function for cost-handler"
[state side eid result]
(effect-completed state side (make-result eid result))
result)

(defn cost-names
"Converts a cost (value attribute pair) to a string for printing"
[attr value]
Expand Down
29 changes: 29 additions & 0 deletions src/clj/game/core/eid.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
(ns game.core.eid)

(defn make-eid
([state] (make-eid state nil))
([state {:keys [source source-type]}]
(merge {:eid (:eid (swap! state update-in [:eid] inc))}
(when source {:source source})
(when source-type {:source-type source-type}))))

(defn register-effect-completed
[state side eid effect]
(swap! state update-in [:effect-completed (:eid eid)] #(conj % effect)))

(defn effect-completed
[state side eid]
(doseq [handler (get-in @state [:effect-completed (:eid eid)])]
(handler state side eid))
(swap! state update-in [:effect-completed] dissoc (:eid eid)))

(defn make-result
[eid result]
(assoc eid :result result))

(defn complete-with-result
"Calls `effect-complete` with `make-result` and also returns the argument.
Helper function for cost-handler"
[state side eid result]
(effect-completed state side (make-result eid result))
result)
15 changes: 2 additions & 13 deletions src/clj/game/core/events.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
(in-ns 'game.core)

(declare can-trigger? card-def clear-wait-prompt effect-completed 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?
make-eid register-effect-completed register-suppress resolve-ability
register-suppress resolve-ability
show-wait-prompt trigger-suppress unregister-suppress)

; Functions for registering and dispatching events.
Expand Down Expand Up @@ -298,14 +298,3 @@
"Returns true if this is the first trash of an owned installed card this turn by this side"
[state side]
(= 1 (count (filter #(= (:side (first %)) (side-str side)) (get-installed-trashed state side)))))

;;; Effect completion triggers
(defn register-effect-completed
[state side eid effect]
(swap! state update-in [:effect-completed (:eid eid)] #(conj % effect)))

(defn effect-completed
[state side eid]
(doseq [handler (get-in @state [:effect-completed (:eid eid)])]
(handler state side eid))
(swap! state update-in [:effect-completed] dissoc (:eid eid)))
2 changes: 1 addition & 1 deletion src/clj/game/core/rules.clj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

(declare can-run? can-trash? card-init card-str cards-can-prevent? close-access-prompt enforce-msg
gain-agenda-point get-prevent-list get-agenda-points in-corp-scored? installed? is-type? play-sfx
prevent-draw make-result remove-old-current show-prompt system-say system-msg steal-trigger-events
prevent-draw remove-old-current show-prompt system-say system-msg steal-trigger-events
trash-cards untrashable-while-rezzed? update-all-ice untrashable-while-resources? win win-decked)

;;;; Functions for applying core Netrunner game rules.
Expand Down
11 changes: 0 additions & 11 deletions src/clj/game/core/turns.clj
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,6 @@
[state]
(get-in (swap! state update-in [:rid] inc) [:rid]))

(defn make-eid
([state] (make-eid state nil))
([state {:keys [source source-type]}]
(merge {:eid (:eid (swap! state update-in [:eid] inc))}
(when source {:source source})
(when source-type {:source-type source-type}))))

(defn make-result
[eid result]
(assoc eid :result result))

(defn mulligan
"Mulligan starting hand."
[state side args]
Expand Down
4 changes: 2 additions & 2 deletions src/clj/game/macros.clj
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@
totake (if (= 'apply (first action)) 4 3)
th (nth action totake)]
`(let [~'use-eid# (and (map? ~th) (:eid ~th))
~'new-eid# (if ~'use-eid# ~th (game.core/make-eid ~'state))]
(~'register-effect-completed ~'state ~'side ~'new-eid# ~reqmac)
~'new-eid# (if ~'use-eid# ~th (game.core.eid/make-eid ~'state))]
(~'game.core.eid/register-effect-completed ~'state ~'side ~'new-eid# ~reqmac)
(if ~'use-eid#
~(concat (take totake action) (list 'new-eid#) (drop (inc totake) action))
~(concat (take totake action) (list 'new-eid#) (drop totake action)))))))
Expand Down

0 comments on commit 30f0d2a

Please sign in to comment.