Esempio n. 1
0
        public MissileModel FireMissile(ActionDirections actionDirection)
        {
            StopWatching();
            ViewModel.IsAttacking = "True";

            var missile = new MissileModel(new MissileViewModel())
            {
                X         = this.X,
                Y         = this.Y,
                Range     = 6,
                Direction = actionDirection,
            };

            if (ViewModel.Image == AntViewModel.RedAntImage)
            {
                missile.ViewModel.Image = _redMissileImage;
            }
            else if (ViewModel.Image == AntViewModel.YellowAntImage)
            {
                missile.ViewModel.Image = _yellowMissileImage;
            }

            switch (actionDirection)
            {
            case ActionDirections.Up:
            {
                missile.Y -= 1;
                missile.ViewModel.Angle = 270;
                break;
            }

            case ActionDirections.Left:
            {
                missile.X -= 1;
                missile.ViewModel.Angle = 180;
                break;
            }

            case ActionDirections.Down:
            {
                missile.Y += 1;
                missile.ViewModel.Angle = 90;
                break;
            }

            case ActionDirections.Right:
            {
                missile.X += 1;
                missile.ViewModel.Angle = 0;
                break;
            }
            }

            return(missile);
        }
Esempio n. 2
0
        private void TurnMissileIntoExplosions(MissileModel missile)
        {
            missile.ViewModel.Image = _explosionImage;
            missile.Type = MovableObjectsTypes.Explosion;

            var movableObjectsToDestroy = _antWarsViewModel.MovableObjectsCollection.
                Where(mo => mo.Type == MovableObjectsTypes.Bot || mo.Type == MovableObjectsTypes.Missile).
                Where(mo => mo.X >= missile.X - 1 && mo.X <= missile.X + 1 && mo.Y >= missile.Y - 1 && mo.Y <= missile.Y + 1).
                Where(mo => mo != missile).
                Where(mo => mo.Type != MovableObjectsTypes.Explosion).ToList();

            var unmovableObjectsToDestroy = _antWarsViewModel.BattlefieldObjectsCollection.
                Where(mo => mo.X >= missile.X - 1 && mo.X <= missile.X + 1 && mo.Y >= missile.Y - 1 && mo.Y <= missile.Y + 1).
                Where(mo => mo.Type == UnmovableObjectTypes.Wood).ToList();

            foreach (var item in movableObjectsToDestroy)
            {
                switch (item.Type)
                {
                    case MovableObjectsTypes.Bot:
                        {
                            _listOfAntsToRemove.Add((AntModel)item);
                            break;
                        }
                    case MovableObjectsTypes.Missile:
                        {
                            TurnMissileIntoExplosions((MissileModel)item);
                            break;
                        }
                }
            }

            foreach (var item in unmovableObjectsToDestroy)
            {
                if (item.Type == UnmovableObjectTypes.Wood)
                {
                    _antWarsViewModel.BattlefieldObjectsCollection.Remove(item);
                }
            }
        }