Пример #1
0
        public void Effect()
        {
            switch (_type)
            {
                case AbilityList.DragonBreath:
                    {
                        List<Entity> enemyTeam;
                        if (_owner.team == Team.Red) enemyTeam = Teams.bluTeam;
                        else enemyTeam = Teams.redTeam;

                        var tmpGun = new DragonWeapon(_owner.damage, GameScene.Instance);
                        tmpGun.Move((int)_owner.Xcoord, (int)_owner.Ycoord);

                        foreach (Unit target in enemyTeam)
                        {
                            double Distance = (Math.Sqrt(Math.Pow(_owner.Xcoord - target.X, 2) + Math.Pow(_owner.Ycoord - target.Y, 2)));
                            if (Distance <= _range)
                            {
                                tmpGun.Shoot(target);
                            }
                        }
                    }
                    break;
                case AbilityList.HealingAura:
                    {
                        List<Entity> ownTeam;
                        if (_owner.team != Team.Red) ownTeam = Teams.bluTeam;
                        else ownTeam = Teams.redTeam;

                        foreach (Unit target in ownTeam)
                        {
                            double Distance = (Math.Sqrt(Math.Pow(_owner.Xcoord - target.X, 2) + Math.Pow(_owner.Ycoord - target.Y, 2)));
                            if (!target.isBuilding && Distance <= _range)
                            {
                                target.Heal(5);
                                for (var counter = 0; counter < 4; counter++)
                                    GameScene.Instance.Add(new Particle(target.X, target.Y, Assets.ParticleStar, 4, 4)
                                    {
                                        LifeSpan = 10,
                                        Angle = GoodRnd.gen.Next(-360, 360),
                                        FinalAlpha = 0,
                                        FinalX = target.X + GoodRnd.gen.Next(-50, 50) * (float)GoodRnd.gen.NextDouble(),
                                        FinalY = target.Y + GoodRnd.gen.Next(-50, 50) * (float)GoodRnd.gen.NextDouble(),
                                        FinalAngle = GoodRnd.gen.Next(-360, 360),
                                        FinalScaleX = 0.5f,
                                        LockScaleRatio = true
                                    });
                            }
                        }
                    }
                    break;
                case AbilityList.Vampirism:
                    break;
                case AbilityList.Demolisher:
                    break;
                default:
                    break;
            }
        }
Пример #2
0
        public override void Update()
        {
            if (!isInitialized)
            {

                _armor = 10;
                _range = 140;
                _hp = 1000;
                _damage = 3;
                _gun = new DragonWeapon(_damage, GameScene.Instance);//NoWeapon(GameScene.Instance);
                _cooldownValue = 5;
                _speed = 0;
            }
            base.Update();
            if (!Global.isGamePaused)
            {
                _creepsCD--;
                _siegeCD--;
                if (_creepsCD <= 0)
                {
                    spawnCreeps();
                }
            }
        }