private float GetMyElfScore(VirtualGame virtualGame, VirtualInvisibility virtualInvisibility) { Elf myElf = (Elf)virtualInvisibility.realGameObject; float useRadius = radius; if (myElf.CurrentHealth < whatIsNotMuchHealth) { useRadius = radiusWhenDontHaveMuchHealth; } List <Elf> enemyElves = Constants.GameCaching.GetEnemyElvesInArea(new Circle(myElf.GetLocation(), useRadius)); if (enemyElves.Count == 0) { return(0); } Dictionary <int, GameObject> myElves = new Dictionary <int, GameObject>(); int enemyCombinedHealth = 0; foreach (Elf enemyElf in enemyElves) { enemyCombinedHealth += enemyElf.CurrentHealth; foreach (Elf elf in Constants.GameCaching.GetMyElvesInArea(new Circle(enemyElf.GetLocation(), useRadius))) { myElves[elf.UniqueId] = elf; } } float ourCombinedHealth = 0; foreach (KeyValuePair <int, GameObject> pair in myElves) { ourCombinedHealth += pair.Value.CurrentHealth; } if (ourCombinedHealth == enemyCombinedHealth) { foreach (GameObject enemyElf in enemyElves) { if (enemyElf.OnSameSideAsCastle()) //if enemy elf is our side of the map { return(0); } } } else if (ourCombinedHealth > enemyCombinedHealth) { return(0); } ourCombinedHealth = Mathf.Max(1f, myElf.CurrentHealth - 2); return(enemyCombinedHealth / ourCombinedHealth); }
private float GetElfScore(VirtualGame virtualGame, VirtualInvisibility virtualInvisibility) { return(Constants.GameCaching.GetEnemyIceTrollsInArea(new Circle(virtualInvisibility.location, Constants.Game.IceTrollAttackRange)).Count); }