示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public void Clear()
 {
     ExplosionTest.Clear();
     ExplosionDict.Clear();
 }