private void MakePhaseBoon(JsonBuffs boon, int phase, Statistics.FinalBoonUptime value) { boon.Overstack[phase] = value.Overstack; boon.Generation[phase] = value.Generation; boon.Uptime[phase] = value.Uptime; boon.Presence[phase] = value.Presence; }
private Dictionary <int, Statistics.FinalBoonUptime> getBoonsForList(List <Player> playerList, Player player, List <Boon> to_track, int phaseIndex) { PhaseData phase = phases[phaseIndex]; long fightDuration = phase.getEnd() - phase.getStart(); Dictionary <Player, BoonDistribution> boonDistributions = new Dictionary <Player, BoonDistribution>(); foreach (Player p in playerList) { boonDistributions[p] = p.getBoonDistribution(log, phases, to_track, phaseIndex); } Dictionary <int, Statistics.FinalBoonUptime> final = new Dictionary <int, Statistics.FinalBoonUptime>(); foreach (Boon boon in to_track) { long totalGeneration = 0; long totalOverstack = 0; long totalUptime = 0; foreach (BoonDistribution boons in boonDistributions.Values) { if (boons.ContainsKey(boon.getID())) { totalGeneration += boons.getGeneration(boon.getID(), player.getInstid()); totalOverstack += boons.getOverstack(boon.getID(), player.getInstid()); totalUptime += boons.getUptime(boon.getID()); } } Statistics.FinalBoonUptime uptime = new Statistics.FinalBoonUptime(); if (boon.getType() == Boon.BoonType.Duration) { uptime.uptime = Math.Round(100.0 * totalUptime / fightDuration / playerList.Count, 1); uptime.generation = Math.Round(100.0f * totalGeneration / fightDuration / playerList.Count, 1); uptime.overstack = Math.Round(100.0f * totalOverstack / fightDuration / playerList.Count, 1); } else if (boon.getType() == Boon.BoonType.Intensity) { uptime.uptime = Math.Round((double)totalUptime / fightDuration / playerList.Count, 1); uptime.generation = Math.Round((double)totalGeneration / fightDuration / playerList.Count, 1); uptime.overstack = Math.Round((double)totalOverstack / fightDuration / playerList.Count, 1); } uptime.boonType = boon.getType(); final[boon.getID()] = uptime; } return(final); }
private void CreateGenOGroupTable(List <Boon> listToUse, int phaseIndex) { //generate Uptime Table table WriteCell("Name"); foreach (Boon boon in listToUse) { WriteCell(boon.Name); WriteCell(boon.Name + " Overstack"); } NewLine(); int count = 0; foreach (Player player in _log.PlayerList) { Dictionary <long, Statistics.FinalBoonUptime> boons = _statistics.OffGroupBoons[player][phaseIndex]; WriteCell(player.Character); foreach (Boon boon in listToUse) { string rate = "0"; string overstack = "0"; Statistics.FinalBoonUptime uptime = boons[boon.ID]; if (uptime.Generation > 0 || uptime.Overstack > 0) { if (boon.Type == Boon.BoonType.Duration) { rate = uptime.Generation.ToString() + "%"; overstack = uptime.Overstack.ToString() + "%"; } else if (boon.Type == Boon.BoonType.Intensity) { rate = uptime.Generation.ToString(); overstack = uptime.Overstack.ToString(); } } WriteCell(rate); WriteCell(overstack); } NewLine(); count++; } while (count < 15)//so each graph has equal spacing { NewLine(); count++; } }
private void calculateBoons() { // Player Boons foreach (Player player in log.getPlayerList()) { List <Boon> boon_to_track = new List <Boon>(); boon_to_track.AddRange(statistics.present_boons); boon_to_track.AddRange(statistics.present_offbuffs); boon_to_track.AddRange(statistics.present_defbuffs); boon_to_track.AddRange(statistics.present_personnal[player.getInstid()]); Dictionary <int, Statistics.FinalBoonUptime>[] phaseBoons = new Dictionary <int, Statistics.FinalBoonUptime> [phases.Count]; for (int phaseIndex = 0; phaseIndex < phases.Count; phaseIndex++) { Dictionary <int, Statistics.FinalBoonUptime> final = new Dictionary <int, Statistics.FinalBoonUptime>(); PhaseData phase = phases[phaseIndex]; BoonDistribution selfBoons = player.getBoonDistribution(log, phases, boon_to_track, phaseIndex); long fightDuration = phase.getEnd() - phase.getStart(); foreach (Boon boon in Boon.getAllBuffList()) { Statistics.FinalBoonUptime uptime = new Statistics.FinalBoonUptime(); uptime.uptime = 0; uptime.generation = 0; uptime.overstack = 0; if (selfBoons.ContainsKey(boon.getID())) { if (boon.getType() == Boon.BoonType.Duration) { uptime.uptime = Math.Round(100.0 * selfBoons.getUptime(boon.getID()) / fightDuration, 1); uptime.generation = Math.Round(100.0f * selfBoons.getGeneration(boon.getID(), player.getInstid()) / fightDuration, 1); uptime.overstack = Math.Round(100.0f * selfBoons.getOverstack(boon.getID(), player.getInstid()) / fightDuration, 1); } else if (boon.getType() == Boon.BoonType.Intensity) { uptime.uptime = Math.Round((double)selfBoons.getUptime(boon.getID()) / fightDuration, 1); uptime.generation = Math.Round((double)selfBoons.getGeneration(boon.getID(), player.getInstid()) / fightDuration, 1); uptime.overstack = Math.Round((double)selfBoons.getOverstack(boon.getID(), player.getInstid()) / fightDuration, 1); } uptime.boonType = boon.getType(); } final[boon.getID()] = uptime; } phaseBoons[phaseIndex] = final; } statistics.selfBoons[player] = phaseBoons; } // Group Boons foreach (Player player in log.getPlayerList()) { List <Boon> boon_to_track = new List <Boon>(); boon_to_track.AddRange(statistics.present_boons); boon_to_track.AddRange(statistics.present_offbuffs); boon_to_track.AddRange(statistics.present_defbuffs); boon_to_track.AddRange(statistics.present_personnal[player.getInstid()]); List <Player> groupPlayers = new List <Player>(); foreach (Player p in log.getPlayerList()) { if (p.getGroup() == player.getGroup()) { groupPlayers.Add(p); } } Dictionary <int, Statistics.FinalBoonUptime>[] phaseBoons = new Dictionary <int, Statistics.FinalBoonUptime> [phases.Count]; for (int phaseIndex = 0; phaseIndex < phases.Count; phaseIndex++) { phaseBoons[phaseIndex] = getBoonsForList(groupPlayers, player, boon_to_track, phaseIndex); } statistics.groupBoons[player] = phaseBoons; } // Off Group Boons foreach (Player player in log.getPlayerList()) { List <Boon> boon_to_track = new List <Boon>(); boon_to_track.AddRange(statistics.present_boons); boon_to_track.AddRange(statistics.present_offbuffs); boon_to_track.AddRange(statistics.present_defbuffs); boon_to_track.AddRange(statistics.present_personnal[player.getInstid()]); List <Player> groupPlayers = new List <Player>(); foreach (Player p in log.getPlayerList()) { if (p.getGroup() != player.getGroup()) { groupPlayers.Add(p); } } Dictionary <int, Statistics.FinalBoonUptime>[] phaseBoons = new Dictionary <int, Statistics.FinalBoonUptime> [phases.Count]; for (int phaseIndex = 0; phaseIndex < phases.Count; phaseIndex++) { phaseBoons[phaseIndex] = getBoonsForList(groupPlayers, player, boon_to_track, phaseIndex); } statistics.offGroupBoons[player] = phaseBoons; } // Squad Boons foreach (Player player in log.getPlayerList()) { List <Boon> boon_to_track = new List <Boon>(); boon_to_track.AddRange(statistics.present_boons); boon_to_track.AddRange(statistics.present_offbuffs); boon_to_track.AddRange(statistics.present_defbuffs); boon_to_track.AddRange(statistics.present_personnal[player.getInstid()]); List <Player> groupPlayers = new List <Player>(); foreach (Player p in log.getPlayerList()) { groupPlayers.Add(p); } Dictionary <int, Statistics.FinalBoonUptime>[] phaseBoons = new Dictionary <int, Statistics.FinalBoonUptime> [phases.Count]; for (int phaseIndex = 0; phaseIndex < phases.Count; phaseIndex++) { phaseBoons[phaseIndex] = getBoonsForList(groupPlayers, player, boon_to_track, phaseIndex); } statistics.squadBoons[player] = phaseBoons; } }