Example #1
0
 protected override void Update(long timePassed)
 {
     if (BuffStack.Any() && timePassed > 0)
     {
         long diff     = timePassed;
         long leftOver = 0;
         if (_activeStack != null && _activeStack.Duration > 0)
         {
             var toAdd = new BuffSimulationItemDuration(_activeStack);
             GenerationSimulation.Add(toAdd);
             long timeDiff = _activeStack.Duration - timePassed;
             if (timeDiff < 0)
             {
                 diff     = _activeStack.Duration;
                 leftOver = timePassed - diff;
             }
             if (toAdd.End > toAdd.Start + diff)
             {
                 toAdd.OverrideEnd(toAdd.Start + diff);
             }
             _activeStack.Shift(0, diff);
         }
         foreach (BuffStackItemID buffStackItem in BuffStack)
         {
             buffStackItem.Shift(diff, 0);
         }
         Update(leftOver);
     }
 }
 protected override void Update(long timePassed)
 {
     if (BuffStack.Any() && timePassed > 0)
     {
         long diff     = timePassed;
         long leftOver = 0;
         if (_activeStack != null && _activeStack.Duration > 0)
         {
             var toAdd = new BuffSimulationItemDuration(BuffStack);
             GenerationSimulation.Add(toAdd);
             long timeDiff = _activeStack.Duration - timePassed;
             if (timeDiff < 0)
             {
                 diff     = _activeStack.Duration;
                 leftOver = timePassed - diff;
             }
             if (toAdd.End > toAdd.Start + diff)
             {
                 toAdd.OverrideEnd(toAdd.Start + diff);
             }
             _activeStack.Shift(0, diff);
             // keep current stack alive while waiting for stack active/ stack remove to arrive
             if (_activeStack.Duration == 0 && leftOver > 0 && leftOver < ParserHelper.BuffSimulatorStackActiveDelayConstant)
             {
                 _activeStack.Shift(0, -leftOver);
             }
         }
         foreach (BuffStackItemID buffStackItem in BuffStack)
         {
             buffStackItem.Shift(diff, 0);
         }
         Update(leftOver);
     }
 }
 protected override void Update(long timePassed)
 {
     if (BuffStack.Count > 0 && timePassed > 0 && _activeStack != null)
     {
         var toAdd = new BuffSimulationItemDuration(_activeStack);
         GenerationSimulation.Add(toAdd);
         long timeDiff = _activeStack.Duration - timePassed;
         long diff;
         long leftOver = 0;
         if (timeDiff < 0)
         {
             diff     = _activeStack.Duration;
             leftOver = timePassed - diff;
         }
         else
         {
             diff = timePassed;
         }
         if (toAdd.End > toAdd.Start + diff)
         {
             toAdd.OverrideEnd(toAdd.Start + diff);
         }
         BuffStackItem oldActive = _activeStack;
         _activeStack.Shift(diff, diff);
         for (int i = 0; i < BuffStack.Count; i++)
         {
             if (BuffStack[i] != oldActive)
             {
                 BuffStack[i].Shift(diff, 0);
             }
         }
         // that means the stack was not an extension, extend duration to match time passed
         if (_activeStack.Duration == 0)
         {
             _activeStack.Shift(0, -leftOver);
         }
         Update(leftOver);
     }
 }