function name changes (readability) and more commenting

This commit is contained in:
Gered 2016-03-03 19:21:26 -05:00
parent b68fbb55db
commit 9068d39139

View file

@ -10,17 +10,17 @@
vwowrla.core.schemas vwowrla.core.schemas
vwowrla.core.utils)) vwowrla.core.utils))
(defn- ignore-interaction? (defn- ignore-encounter-entity-interaction?
[entity-name ignore-entity-list {:keys [target-name source-name] :as event}] [entity-name ignore-entity-list {:keys [target-name source-name] :as event}]
(and (or (= entity-name target-name) (and (or (= entity-name target-name)
(= entity-name source-name)) (= entity-name source-name))
(or (contained-in? target-name ignore-entity-list) (or (contained-in? target-name ignore-entity-list)
(contained-in? source-name ignore-entity-list)))) (contained-in? source-name ignore-entity-list))))
(s/defn ignored-interaction-event? :- s/Bool (s/defn ignored-encounter-entity-interaction-event? :- s/Bool
"returns true if the given parsed combat log line is between entities that have "returns true if the given combat event is to do with an encounter entity and another
been specified to ignore interactions between for the purposes of detecting entity that has been listed on the encounter entity's ignore list, indicating that
an encounter trigger" the combat event should be ignored for the purposes of triggering an encounter"
[encounter :- DefinedEncounter [encounter :- DefinedEncounter
event :- CombatEvent] event :- CombatEvent]
(->> (:entities encounter) (->> (:entities encounter)
@ -29,19 +29,18 @@
(seq (:ignore-interactions-with entity-props)))) (seq (:ignore-interactions-with entity-props))))
(filter (filter
(fn [[entity-name entity-props]] (fn [[entity-name entity-props]]
(ignore-interaction? entity-name (:ignore-interactions-with entity-props) event))) (ignore-encounter-entity-interaction? entity-name (:ignore-interactions-with entity-props) event)))
(seq) (seq)
(boolean))) (boolean)))
(defn- ignore-skill? (defn- ignore-encounter-entity-skill?
[entity-name ignore-skill-list {:keys [source-name skill] :as event}] [entity-name ignore-skill-list {:keys [source-name skill] :as event}]
(and (= entity-name source-name) (and (= entity-name source-name)
(contained-in? skill ignore-skill-list))) (contained-in? skill ignore-skill-list)))
(s/defn ignored-skill-event? :- s/Bool (s/defn ignored-encounter-entity-skill-event? :- s/Bool
"returns true if the given parsed combat log line is for an encounter entity "returns true if the given combat event is for an encounter entity that is using a skill
that is using a skill that has been specifically indicated should be ignored that should be ignored for the purposes of triggering an encounter"
for the purposes of triggering an encounter"
[encounter :- DefinedEncounter [encounter :- DefinedEncounter
event :- CombatEvent] event :- CombatEvent]
(->> (:entities encounter) (->> (:entities encounter)
@ -50,7 +49,7 @@
(seq (:ignore-skills entity-props)))) (seq (:ignore-skills entity-props))))
(filter (filter
(fn [[entity-name entity-props]] (fn [[entity-name entity-props]]
(ignore-skill? entity-name (:ignore-skills entity-props) event))) (ignore-encounter-entity-skill? entity-name (:ignore-skills entity-props) event)))
(seq) (seq)
(boolean))) (boolean)))
@ -60,20 +59,32 @@
detected" detected"
[{:keys [target-name source-name damage aura-name type skill] :as event} :- CombatEvent [{:keys [target-name source-name damage aura-name type skill] :as event} :- CombatEvent
data :- RaidAnalysis] data :- RaidAnalysis]
; find the name of a defined encounter which includes either the target-name entity
; or source-name entity from the given combat event within the encounters list of entities
; (put another way, determine if the current combat event _somehow_ involves any entity
; that is part of a known encounter)
(if-let [encounter-name (or (find-defined-encounter-name target-name) (if-let [encounter-name (or (find-defined-encounter-name target-name)
(find-defined-encounter-name source-name))] (find-defined-encounter-name source-name))]
; disregard this combat event (and not start an encounter) if:
; - we haven't already got a successful encounter of the same name, OR
; - this combat event is regarding an aura gain/loss and the aura name is on the global
; ignore list for encounter triggering, OR
; - this combat event is regarding a skill use and the skill name is on the global
; ignore list for encounter triggering
(if (and (not (any-successful-encounters? encounter-name data)) (if (and (not (any-successful-encounters? encounter-name data))
(not (contained-in? aura-name non-combat-starting-auras)) (not (contained-in? aura-name non-combat-starting-auras))
(not (contained-in? skill non-combat-starting-skills))) (not (contained-in? skill non-combat-starting-skills)))
; now look at individual encounter-specific criteria for whether this combat event
; can trigger the encounter or not
(let [encounter (get defined-encounters encounter-name)] (let [encounter (get defined-encounters encounter-name)]
(cond (cond
(ignored-interaction-event? encounter event) (ignored-encounter-entity-interaction-event? encounter event)
nil nil
(ignored-skill-event? encounter event) (ignored-encounter-entity-skill-event? encounter event)
nil nil
; if either of these are defined, then their criteria MUST pass to ; if ANY of these are defined, then their criteria MUST pass to
; trigger an encounter ; trigger an encounter
(or (:trigger-on-damage? encounter) (or (:trigger-on-damage? encounter)
(:trigger-on-aura? encounter) (:trigger-on-aura? encounter)