diff options
author | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-05-14 10:10:15 +1200 |
---|---|---|
committer | Freeyorp <TheFreeYorp@NOSPAM.G.m.a.i.l.replace> | 2013-05-14 10:10:15 +1200 |
commit | 8804397ff39f142fec4ac13ee193928b639327cf (patch) | |
tree | 5748cec705a974513309c2e35d771c16ff388d87 | |
parent | b547523e1964d24c3e3e3e3598fdd67b208e2dfd (diff) | |
download | manavis-8804397ff39f142fec4ac13ee193928b639327cf.tar.gz manavis-8804397ff39f142fec4ac13ee193928b639327cf.tar.bz2 manavis-8804397ff39f142fec4ac13ee193928b639327cf.tar.xz manavis-8804397ff39f142fec4ac13ee193928b639327cf.zip |
Chart the number of attackers
-rw-r--r-- | public/index.html | 3 | ||||
-rw-r--r-- | public/js/mv/chart.js | 3 | ||||
-rw-r--r-- | public/js/mv/heap.js | 1 | ||||
-rw-r--r-- | public/js/mv/parse.js | 14 |
4 files changed, 18 insertions, 3 deletions
diff --git a/public/index.html b/public/index.html index e27c0e6..5d0a9a2 100644 --- a/public/index.html +++ b/public/index.html @@ -25,6 +25,9 @@ <div id="wpn-chart"> <h3>Instance breakdown by Weapon <a class="reset" style="display: none;" href="javascript:mv.charts.wpn.filterAll();dc.redrawAll();">clear</a></h3> </div> + <div id="num-attackers-chart"> + <h3>Instance breakdown by number of attackers <a class="reset" style="display: none;" href="javascript:mv.charts.numAttackers.filterAll();dc.redrawAll();">clear</a><h3> + </div> <div id="type-chart"> <h3>Instance breakdown by Type <a class="reset" style="display: none;" href="javascript:mv.charts.type.filterAll();dc.redrawAll();">clear</a></h3> </div> diff --git a/public/js/mv/chart.js b/public/js/mv/chart.js index be0740b..bb511b9 100644 --- a/public/js/mv/chart.js +++ b/public/js/mv/chart.js @@ -23,6 +23,9 @@ var mv = function(mv) { ; mv.charts.wpn = pie(monoGroup(dc.pieChart("#wpn-chart"), "wpn")) ; + mv.charts.numAttackers = pie(monoGroup(dc.pieChart("#num-attackers-chart"), "numAttackers")) + .sort(function(d1, d2) { return d3.descending(d1.key, d2.key); }) + ; mv.charts.map = monoGroup(margined(wide(dc.bubbleChart("#map-chart"))), "map") .height(500) .colorCalculator(d3.scale.category20c()) diff --git a/public/js/mv/heap.js b/public/js/mv/heap.js index b226d72..4ba5c06 100644 --- a/public/js/mv/heap.js +++ b/public/js/mv/heap.js @@ -16,6 +16,7 @@ var mv = function(mv) { monoGroup("type", function(d) { return d.type; }); monoGroup("target", function(d) { return d.target; }); monoGroup("wpn", function(d) { return d.wpn; }); + monoGroup("numAttackers", function(d) { return d.numAttackers; }); function sa(p, d) { if (!d.pcstat) return p; p.str[d.pcstat.str]++ || (p.str[d.pcstat.str] = 1); diff --git a/public/js/mv/parse.js b/public/js/mv/parse.js index ecef612..162739f 100644 --- a/public/js/mv/parse.js +++ b/public/js/mv/parse.js @@ -25,7 +25,7 @@ var mv = function(mv) { */ var killedMobID = 0; /* - * mob ID -> { mobClass, player IDs -> { total, weapon names -> { sum damage } } } + * mob ID -> { mobClass, numAttackers, player IDs -> { total, weapon names -> { sum damage } } } */ var combat = {}; function freeMob() { @@ -73,7 +73,8 @@ var mv = function(mv) { pcstat: pcstat[d[2]], target: "UNKNOWN", dmg: 0, - wpn: "UNKNOWN" + wpn: "UNKNOWN", + numAttackers: 0 }; if (pcstat[d[2]] == undefined && (!fullyDefinedCutoff || ts > fullyDefinedCutoff)) { /* Undefined, and newer than any existing definedness cutoff */ @@ -83,6 +84,7 @@ var mv = function(mv) { if (killedMobID && killedMobID in combat && rec.pc in combat[killedMobID]) { var mob = combat[killedMobID]; rec.target = mob.mobClass; + rec.numAttackers = mob.numAttackers || 0; var weapons = mob[rec.pc]; /* We have the needed information. */ rec.dmg = weapons.total; @@ -145,7 +147,13 @@ var mv = function(mv) { var damage = parseInt(d[9]); /* Update combat state */ var mobData = combat[target] || (combat[target] = { mobClass: mobClass }); - var pcData = mobData[pc] || (mobData[pc] = {}); + var pcData; + if (pc in mobData) { + pcData = mobData[pc]; + } else { + (++mobData.numAttackers) || (mobData.numAttackers = 1); + pcData = mobData[pc] = {}; + } (pcData[wpn] += damage) || (pcData[wpn] = damage); (pcData.total += damage) || (pcData.total = damage); return true; |