public void Update(GameTime gameTime) { ExplosionTest.Clear(); if (0 == ExplosionDict.Count) { return; } keys.Clear(); foreach (var key in ExplosionDict.Keys) { Explosion explosion = ExplosionDict[key]; if (null == explosion || !explosion.IsExploding) { continue; } // Update explosion but check to see if finished. explosion.Update(gameTime); if (!explosion.IsExploding) { ExplosionTest.Add((Byte)explosion.EnemyID); keys.Add(explosion.ID); } } // https://stackoverflow.com/questions/9892790/deleting-while-iterating-over-a-dictionary foreach (var key in keys) { ExplosionDict.Remove(key); } }
public void Explode(Byte enemyID, ExplodeType explodeType, Vector2 position) { Explosion explosion = ExplosionList[enemyID]; if (explosion.IsExploding) { return; } Vector2 newPosition = position; newPosition.X += Constants.EXPLODE_OFFSET_X[(Byte)explodeType]; newPosition.Y += Constants.EXPLODE_OFFSET_Y[(Byte)explodeType]; explosion.SetPosition(newPosition); explosion.Explode(enemyID); ExplosionDict.Add(enemyID, explosion); }
public void Clear() { ExplosionTest.Clear(); ExplosionDict.Clear(); }