コード例 #1
0
        void CreateExplosion(GameModelBase gameModelHit) //The game piece that has been hit is passed in.
        {
            ExplosionModel explosionModel = new ExplosionModel();

            explosionModel.X              = gameModelHit.X;
            explosionModel.Y              = gameModelHit.Y;
            explosionModel.Height         = 30;
            explosionModel.Width          = 30;
            explosionModel.ExplosionState = 0;
            GameModels.Add(explosionModel);

            if (gameModelHit.ModelType == GameModelType.Saucer)
            {
                explosionModel.PointValue = ((SaucerModel)gameModelHit).PointValue;
            }
            if (gameModelHit.ModelType == GameModelType.Enemy)
            {
                explosionModel.PointValue = ((EnemyModel)gameModelHit).PointValue;
            }
            if (gameModelHit.ModelType == GameModelType.Player)
            {
                audioController.PlayPlayerExplosion();
            }
            else
            {
                audioController.PlayEnemyExplode();
            }
        }
コード例 #2
0
ファイル: SocketsService.cs プロジェクト: SuperSpasm/worms-io
 public static void SetExplosion(ExplosionModel explosion)
 {
     throw new NotImplementedException();
 }
コード例 #3
0
        public void PerformMissilesMove()
        {
            var listOfMissilesToRemove = new List <MissileModel>();

            foreach (var missileObject in _antWarsViewModel.MovableObjectsCollection.OfType <MissileModel>())
            {
                switch (missileObject.Direction)
                {
                case ActionDirections.Up:
                {
                    missileObject.Y -= 1;
                    break;
                }

                case ActionDirections.Left:
                {
                    missileObject.X -= 1;
                    break;
                }

                case ActionDirections.Down:
                {
                    missileObject.Y += 1;
                    break;
                }

                case ActionDirections.Right:
                {
                    missileObject.X += 1;
                    break;
                }
                }

                missileObject.Range--;

                if (missileObject.Range < 0)
                {
                    var explosion = new ExplosionModel(new ExplosionViewModel())
                    {
                        X         = missileObject.X,
                        Y         = missileObject.Y,
                        ViewModel =
                        {
                            Image = _explosionImage,
                        }
                    };

                    _antWarsViewModel.BattlefieldObjectsCollection.Add(explosion);
                    listOfMissilesToRemove.Add(missileObject);
                }

                //if missile meet some missile
                if (_antWarsViewModel.MovableObjectsCollection.OfType <MissileModel>().Any(missile => missile.X == missileObject.X && missile.Y == missileObject.Y))
                {
                    //detonate missileObject and make chain reaction if there are some missiles near
                }
            }

            foreach (var item in listOfMissilesToRemove)
            {
                _antWarsViewModel.MovableObjectsCollection.Remove(item);
            }
        }
コード例 #4
0
        public void PerformMissilesMove()
        {
            var listOfMissilesToRemove = new List<MissileModel>();

            foreach (var missileObject in _antWarsViewModel.MovableObjectsCollection.OfType<MissileModel>())
            {
                switch (missileObject.Direction)
                {
                    case ActionDirections.Up:
                        {
                            missileObject.Y -= 1;
                            break;
                        }
                    case ActionDirections.Left:
                        {
                            missileObject.X -= 1;
                            break;
                        }
                    case ActionDirections.Down:
                        {
                            missileObject.Y += 1;
                            break;
                        }
                    case ActionDirections.Right:
                        {
                            missileObject.X += 1;
                            break;
                        }
                }

                missileObject.Range--;

                if (missileObject.Range < 0)
                {
                    var explosion = new ExplosionModel(new ExplosionViewModel())
                    {
                        X = missileObject.X,
                        Y = missileObject.Y,
                        ViewModel =
                        {
                            Image = _explosionImage,
                        }
                    };

                    _antWarsViewModel.BattlefieldObjectsCollection.Add(explosion);
                    listOfMissilesToRemove.Add(missileObject);
                }

                //if missile meet some missile
                if (_antWarsViewModel.MovableObjectsCollection.OfType<MissileModel>().Any(missile => missile.X == missileObject.X && missile.Y == missileObject.Y))
                {
                    //detonate missileObject and make chain reaction if there are some missiles near
                }
            }

            foreach (var item in listOfMissilesToRemove)
            {
                _antWarsViewModel.MovableObjectsCollection.Remove(item);
            }
        }