// Public Methods public override void update(long time_passed) { if (boon_stack.Count > 0) { var toAdd = new BoonSimulationItemDuration(boon_stack[0]); if (simulation.Count > 0) { var last = simulation.Last(); if (last.getEnd() > toAdd.getStart()) { last.setEnd(toAdd.getStart()); } } simulation.Add(toAdd); boon_stack[0] = new BoonStackItem(boon_stack[0], time_passed, -time_passed); long diff = time_passed - Math.Abs(Math.Min(boon_stack[0].boon_duration, 0)); for (int i = 1; i < boon_stack.Count; i++) { boon_stack[i] = new BoonStackItem(boon_stack[i], diff, 0); } if (boon_stack[0].boon_duration <= 0) { // Spend leftover time long leftover = Math.Abs(boon_stack[0].boon_duration); boon_stack.RemoveAt(0); update(leftover); } } }
// 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); } }