use schema with all event handler functions too
This commit is contained in:
parent
a22e28f4b0
commit
4fb63f930e
|
@ -1,13 +1,17 @@
|
||||||
(ns vwowrla.core.events.handlers
|
(ns vwowrla.core.events.handlers
|
||||||
(:require
|
(:require
|
||||||
[vwowrla.core.encounters.analysis :as analysis]))
|
[schema.core :as s]
|
||||||
|
[vwowrla.core.encounters.analysis :as analysis])
|
||||||
|
(:use
|
||||||
|
vwowrla.core.schemas))
|
||||||
|
|
||||||
(defmulti handle-event
|
(defmulti handle-event
|
||||||
(fn [{:keys [event]} _]
|
(fn [{:keys [event]} _]
|
||||||
(keyword event)))
|
(keyword event)))
|
||||||
|
|
||||||
(defmethod handle-event :skill-damage-to-target
|
(s/defmethod handle-event :skill-damage-to-target :- RaidAnalysis
|
||||||
[{:keys [source-name skill target-name damage damage-type absorbed resisted blocked crit? timestamp] :as event} data]
|
[{:keys [source-name skill target-name damage damage-type absorbed resisted blocked crit? timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -22,8 +26,9 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :skill-avoided-by-target
|
(s/defmethod handle-event :skill-avoided-by-target :- RaidAnalysis
|
||||||
[{:keys [source-name target-name skill avoidance-method timestamp] :as event} data]
|
[{:keys [source-name target-name skill avoidance-method timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -33,8 +38,9 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :damage-reflected
|
(s/defmethod handle-event :damage-reflected :- RaidAnalysis
|
||||||
[{:keys [source-name target-name damage damage-type timestamp] :as event} data]
|
[{:keys [source-name target-name damage damage-type timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -46,8 +52,9 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :melee-damage-to-target
|
(s/defmethod handle-event :melee-damage-to-target :- RaidAnalysis
|
||||||
[{:keys [source-name target-name damage damage-type hit-type absorbed resisted blocked crit? timestamp] :as event} data]
|
[{:keys [source-name target-name damage damage-type hit-type absorbed resisted blocked crit? timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -63,8 +70,9 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :melee-avoided-by-target
|
(s/defmethod handle-event :melee-avoided-by-target :- RaidAnalysis
|
||||||
[{:keys [source-name target-name avoidance-method timestamp] :as event} data]
|
[{:keys [source-name target-name avoidance-method timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -74,12 +82,14 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :skill-interrupted-by-target
|
(s/defmethod handle-event :skill-interrupted-by-target :- RaidAnalysis
|
||||||
[{:keys [source-name target-name skill timestamp] :as event} data]
|
[{:keys [source-name target-name skill timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :dot-damages-target
|
(s/defmethod handle-event :dot-damages-target :- RaidAnalysis
|
||||||
[{:keys [source-name skill target-name damage damage-type absorbed resisted timestamp] :as event} data]
|
[{:keys [source-name skill target-name damage damage-type absorbed resisted timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-damage
|
(analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
target-name
|
target-name
|
||||||
|
@ -93,29 +103,35 @@
|
||||||
timestamp
|
timestamp
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :cast-begins
|
(s/defmethod handle-event :cast-begins :- RaidAnalysis
|
||||||
[{:keys [source-name skill spell? timestamp] :as event} data]
|
[{:keys [source-name skill spell? timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
; don't think we really care about this ?
|
; don't think we really care about this ?
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :skill-performed-on-target
|
(s/defmethod handle-event :skill-performed-on-target :- RaidAnalysis
|
||||||
[{:keys [source-name target-name skill spell? extra timestamp] :as event} data]
|
[{:keys [source-name target-name skill spell? extra timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-source-to-target-cast source-name target-name skill timestamp data))
|
(analysis/process-source-to-target-cast source-name target-name skill timestamp data))
|
||||||
|
|
||||||
(defmethod handle-event :cast
|
(s/defmethod handle-event :cast :- RaidAnalysis
|
||||||
[{:keys [source-name skill spell? timestamp] :as event} data]
|
[{:keys [source-name skill spell? timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-entity-cast source-name skill timestamp data))
|
(analysis/process-entity-cast source-name skill timestamp data))
|
||||||
|
|
||||||
(defmethod handle-event :skill-heals-target
|
(s/defmethod handle-event :skill-heals-target :- RaidAnalysis
|
||||||
[{:keys [source-name skill crit? target-name amount timestamp] :as event} data]
|
[{:keys [source-name skill crit? target-name amount timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :resource-gained
|
(s/defmethod handle-event :resource-gained :- RaidAnalysis
|
||||||
[{:keys [target-name amount resource-type source-name skill timestamp] :as event} data]
|
[{:keys [target-name amount resource-type source-name skill timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :resource-lost
|
(s/defmethod handle-event :resource-lost :- RaidAnalysis
|
||||||
[{:keys [target-name amount resource-type source-name skill timestamp] :as event} data]
|
[{:keys [target-name amount resource-type source-name skill timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(condp = resource-type
|
(condp = resource-type
|
||||||
:health (analysis/process-source-to-target-damage
|
:health (analysis/process-source-to-target-damage
|
||||||
source-name
|
source-name
|
||||||
|
@ -129,33 +145,39 @@
|
||||||
data)
|
data)
|
||||||
data))
|
data))
|
||||||
|
|
||||||
(defmethod handle-event :special-gained
|
(s/defmethod handle-event :special-gained :- RaidAnalysis
|
||||||
[{:keys [target-name special source timestamp] :as event} data]
|
[{:keys [target-name special source timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :aura-gained
|
(s/defmethod handle-event :aura-gained :- RaidAnalysis
|
||||||
[{:keys [target-name aura-name aura-type stacks timestamp] :as event} data]
|
[{:keys [target-name aura-name aura-type stacks timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :aura-lost
|
(s/defmethod handle-event :aura-lost :- RaidAnalysis
|
||||||
[{:keys [target-name aura-name faded? stacks timestamp] :as event} data]
|
[{:keys [target-name aura-name faded? stacks timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :other-damage
|
(s/defmethod handle-event :other-damage :- RaidAnalysis
|
||||||
[{:keys [target-name damage damage-type resisted absorbed source timestamp] :as event} data]
|
[{:keys [target-name damage damage-type resisted absorbed source timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :death
|
(s/defmethod handle-event :death :- RaidAnalysis
|
||||||
[{:keys [source-name timestamp] :as event} data]
|
[{:keys [source-name timestamp]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(analysis/process-entity-death source-name timestamp data))
|
(analysis/process-entity-death source-name timestamp data))
|
||||||
|
|
||||||
|
|
||||||
(defmethod handle-event :ignored
|
(s/defmethod handle-event :ignored :- RaidAnalysis
|
||||||
[{:keys [line] :as event} data]
|
[{:keys [line]} :- CombatEvent
|
||||||
#_(println "[WARN] *** IGNORED ***" line)
|
data :- RaidAnalysis]
|
||||||
data)
|
data)
|
||||||
|
|
||||||
(defmethod handle-event :default
|
(s/defmethod handle-event :default :- RaidAnalysis
|
||||||
[{:keys [line] :as event} data]
|
[{:keys [line]} :- CombatEvent
|
||||||
|
data :- RaidAnalysis]
|
||||||
(println "[WARN] *** UNRECOGNIZED ***" line)
|
(println "[WARN] *** UNRECOGNIZED ***" line)
|
||||||
data)
|
data)
|
||||||
|
|
Reference in a new issue