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);
     }
 }
Exemplo n.º 2
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);
     }
 }