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); } } }
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)); } }
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); } }
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); }