public string Upgrade(int upgradeType) { if (PlayerInfo.Position != PlayerInfo.HouseLocation) { return(MovementActions.MoveTo(GameMap, PlayerInfo.HouseLocation - PlayerInfo.Position)); } else { return(AIHelper.CreateUpgradeAction((UpgradeType)upgradeType)); } }
/// <summary> /// Move to rock and if close enough, collect /// </summary> public static string MoveToRock(Map map) { Point position = new Point(2000, 2000); if (PlayerInfo.CarriedResources == PlayerInfo.CarryingCapacity) { return(MovementActions.MoveTo(map, PlayerInfo.HouseLocation - PlayerInfo.Position)); } else { foreach (Tile t in map.GetVisibleTiles()) { if (t.TileType == TileContent.Resource) { if (Math.Pow(t.Position.X - PlayerInfo.Position.X, 2) + Math.Pow(t.Position.Y - PlayerInfo.Position.Y, 2) < Math.Pow(position.X - PlayerInfo.Position.X, 2) + Math.Pow(position.Y - PlayerInfo.Position.Y, 2)) { position = new Point(t.Position.X, t.Position.Y); } } } double distance = Math.Sqrt(Math.Pow((position.X - PlayerInfo.Position.X), 2) + (Math.Pow((position.Y - PlayerInfo.Position.Y), 2))); if (distance > 1) { if (map.GetTileAt(PlayerInfo.Position.X + 1, PlayerInfo.Position.Y) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(1, 0))); } else if (map.GetTileAt(PlayerInfo.Position.X - 1, PlayerInfo.Position.Y) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(-1, 0))); } else if (map.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y + 1) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(0, 1))); } else if (map.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y - 1) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(0, -1))); } return(MovementActions.MoveTo(map, position - PlayerInfo.Position)); } else { return(AIHelper.CreateCollectAction(position - PlayerInfo.Position)); } } }
public string Rechercher() { if (GameMap.GetTileAt(PlayerInfo.Position.X + 1, PlayerInfo.Position.Y) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(1, 0))); } else if (GameMap.GetTileAt(PlayerInfo.Position.X - 1, PlayerInfo.Position.Y) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(-1, 0))); } else if (GameMap.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y + 1) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(0, 1))); } else if (GameMap.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y - 1) == TileContent.Wall) { return(AIHelper.CreateMeleeAttackAction(new Point(0, -1))); } return(MovementActions.MoveTo(GameMap, PlayerInfo.HouseLocation - PlayerInfo.Position)); }