Beispiel #1
0
        private static FightState GameBeginningDecision()
        {
            if (StaticValues.Player.Mana < GameHandling.Settings.ManaTillFirstAttack)
            {
                if (EnemyCharacterHandling.IsAnEnemyOnOurSide())
                {
                    GameBeginning = false;
                }

                return(FightState.START);
            }
            else
            {
                GameBeginning = false;

                if (PlaygroundPositionHandling.IsPositionOnTheRightSide(EnemyCharacterHandling.NearestEnemy.StartPosition))
                {
                    return(FightState.DRPT);
                }
                else
                {
                    return(FightState.DLPT);
                }
            }
        }
Beispiel #2
0
        public static bool IsAnEnemyOnOurSide()
        {
            var om    = ClashEngine.Instance.ObjectManager;
            var chars = om.OfType <Character>();

            return(chars.Select(c => new { c, data = c.LogicGameObjectData })
                   .Where(@t => @t.data != null &&
                          @t.data.IsValid)
                   .Select(@t => @t.c)
                   .Any(c => c.OwnerIndex != StaticValues.Player.OwnerIndex &&
                        PlaygroundPositionHandling.IsPositionOnPlayerSide(c.StartPosition)));
        }
        private static Vector2f DKT()
        {
            if (cardToDeploy is CardCharacter)
            {
                switch ((cardToDeploy as CardCharacter).Type)
                {
                case TroopType.GroundAttack:
                case TroopType.Flying:
                case TroopType.Tank:
                    Logger.Debug("DKT Troop-Name {0} ; CartType GroundAttack, Flying or Tank", cardToDeploy.Name);
                    if (PlaygroundPositionHandling.IsPositionOnTheRightSide(EnemyCharacterHandling.NearestEnemy.StartPosition))
                    {
                        return(PlayerCharacterHandling.KingTower.StartPosition + new Vector2f(1000, 0));
                    }
                    else
                    {
                        return(PlayerCharacterHandling.KingTower.StartPosition - new Vector2f(1000, 0));
                    }

                case TroopType.Ranger:
                case TroopType.AirAttack:
                case TroopType.AOEAttackGround:
                case TroopType.AOEAttackFlying:
                case TroopType.Damager:
                    Vector2f position = PositionHelper.AddYInDirection(PlayerCharacterHandling.KingTower.StartPosition, PlayerProperties.PlayerPosition);

                    if (PlaygroundPositionHandling.IsPositionOnTheRightSide(EnemyCharacterHandling.NearestEnemy.StartPosition))
                    {
                        return(position + new Vector2f(300, 0));
                    }
                    else
                    {
                        return(position - new Vector2f(300, 0));
                    }

                default:
                    break;
                }
            }

            if (PlaygroundPositionHandling.IsPositionOnTheRightSide(EnemyCharacterHandling.NearestEnemy.StartPosition))
            {
                return(PlayerCharacterHandling.KingTower.StartPosition + new Vector2f(1000, 0));
            }
            else
            {
                return(PlayerCharacterHandling.KingTower.StartPosition - new Vector2f(1000, 0));
            }
        }
Beispiel #4
0
 private static FightState EnemyHasCharsOnTheFieldDecision()
 {
     if (PlayerCharacterHandling.PrincessTower.Count() > 1)
     {
         if (PlaygroundPositionHandling.IsPositionOnTheRightSide(EnemyCharacterHandling.NearestEnemy.StartPosition))
         {
             return(FightState.DRPT);
         }
         else
         {
             return(FightState.DLPT);
         }
     }
     else
     {
         return(FightState.DKT);
     }
 }
Beispiel #5
0
        private static FightState DefenseDecision()
        {
            if (CurrentEnemyPrincessTowerState > 0)
            {
                return(FightState.DKT);
            }

            Character princessTower = EnemyCharacterHandling.GetEnemyPrincessTowerWithLowestHealth(StaticValues.Player.OwnerIndex);

            if (PlaygroundPositionHandling.IsPositionOnTheRightSide(princessTower.StartPosition))
            {
                return(FightState.DRPT);
            }
            else
            {
                return(FightState.DLPT);
            }
        }
        public static bool IsAnEnemyOnOurSide()
        {
            var om    = ClashEngine.Instance.ObjectManager;
            var chars = om.OfType <Character>();

            foreach (var @char in chars)
            {
                var data = @char.LogicGameObjectData;
                if (data != null && data.IsValid)
                {
                    //Logger.Debug("IsPositionOnOurSide: " + PositionHandling.IsPositionOnOurSide(@char.StartPosition));

                    if (@char.OwnerIndex != StaticValues.Player.OwnerIndex && PlaygroundPositionHandling.IsPositionOnPlayerSide(@char.StartPosition))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }