public static List <int> getBoonStacksList(AbstractBoon boon, List <BoonLog> boon_logs, BossData b_data) { // Initialise variables int t_prev = 0; int t_curr = 0; List <int> boon_stacks = new List <int>(); boon_stacks.Add(0); // Loop: fill, update, and add to stacks foreach (BoonLog log in boon_logs) { t_curr = log.getTime(); boon.addStacksBetween(boon_stacks, t_curr - t_prev); boon.update(t_curr - t_prev); boon.add(log.getValue()); if (t_curr != t_prev) { boon_stacks.Add(boon.getStackValue()); } else { boon_stacks[boon_stacks.Count() - 1] = boon.getStackValue(); } t_prev = t_curr; } // Fill in remaining stacks boon.addStacksBetween(boon_stacks, b_data.getLastAware() - b_data.getFirstAware() - t_prev); boon.update(1); boon_stacks.Add(boon.getStackValue()); return(boon_stacks); }
public static double[] getBoonUptime(AbstractBoon boon, List <BoonLog> boon_logs, BossData b_data, int players) { double fight_duration = b_data.getLastAware() - b_data.getFirstAware(); double boonDur = 0.00; double os = 0.00; if (players <= 0) { players = 1; } foreach (BoonLog bl in boon_logs) { boonDur = boonDur + bl.getValue(); os = os + bl.getOverstack(); } double[] doubles = { (boonDur - os) / (fight_duration * players), boonDur / (fight_duration * players) }; return(doubles); }
public static List <Point> getBoonIntervalsList(AbstractBoon boon, List <BoonLog> boon_logs, BossData b_data)//Needs boonremoval added { // Initialise variables int t_prev = 0; int t_curr = 0; List <Point> boon_intervals = new List <Point>(); // Loop: update then add durations foreach (BoonLog log in boon_logs) { t_curr = log.getTime(); boon.update(t_curr - t_prev); boon.add(log.getValue()); int duration = t_curr + boon.getStackValue();//this may overload if (duration < 0) { duration = Int32.MaxValue; } boon_intervals.Add(new Point(t_curr, duration)); } // Merge intervals boon_intervals = Utility.mergeIntervals(boon_intervals); // Trim duration overflow int fight_duration = b_data.getLastAware() - b_data.getFirstAware(); int last = boon_intervals.Count() - 1; if (boon_intervals[last].Y > fight_duration) { Point mod = boon_intervals[last]; mod.Y = fight_duration; boon_intervals[last] = mod; } return(boon_intervals); }