// Public Methods protected override void Update(long timePassed) { if (BoonStack.Count > 0) { var toAdd = new BoonSimulationItemDuration(BoonStack[0]); if (GenerationSimulation.Count > 0) { var last = GenerationSimulation.Last(); if (last.End > toAdd.Start) { last.SetEnd(toAdd.Start); } } GenerationSimulation.Add(toAdd); BoonStack[0] = new BoonStackItem(BoonStack[0], timePassed, timePassed); long diff = timePassed - Math.Abs(Math.Min(BoonStack[0].BoonDuration, 0)); for (int i = 1; i < BoonStack.Count; i++) { BoonStack[i] = new BoonStackItem(BoonStack[i], diff, 0); } if (BoonStack[0].BoonDuration <= 0) { // Spend leftover time long leftover = Math.Abs(BoonStack[0].BoonDuration); BoonStack.RemoveAt(0); Update(leftover); } } }
// Public Methods protected override void Update(long timePassed) { if (BoonStack.Count > 0 && timePassed > 0) { _lastSrcRemove = 0; var toAdd = new BoonSimulationItemDuration(BoonStack[0]); if (GenerationSimulation.Count > 0) { var last = GenerationSimulation.Last(); if (last.End > toAdd.Start) { last.SetEnd(toAdd.Start); } } GenerationSimulation.Add(toAdd); long timeDiff = BoonStack[0].BoonDuration - timePassed; long diff = 0; long leftOver = 0; if (timeDiff < 0) { diff = BoonStack[0].BoonDuration; leftOver = timePassed - diff; } else { diff = timePassed; } BoonStack[0] = new BoonStackItem(BoonStack[0], diff, diff); for (int i = 1; i < BoonStack.Count; i++) { BoonStack[i] = new BoonStackItem(BoonStack[i], diff, 0); } if (BoonStack[0].BoonDuration == 0) { _lastSrcRemove = BoonStack[0].SeedSrc; BoonStack.RemoveAt(0); } Update(leftOver); } }