public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, (config as SabotageUnitConfig).Range); List <HexCell> unitCells = cells.FindAll(c => c.hexUnits.FindAll(d => d.HexUnitType == HexUnit.UnitType.COMBAT).Count != 0); return(unitCells); }
public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> targetCells = new List <HexCell>(); List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, (config as BribeConfig).Range); List <HexCell> cityCells = cells.FindAll(c => c.City); foreach (HexCell cityCell in cityCells) { CityState cityState = cityCell.City.GetCityState(); if (!cityState) { continue; } Player player = cityState.Player; if (player) { if (player != gameObject.GetComponent <Unit>().GetPlayer()) { continue; } if (cityState.GetInfluence(player) >= 100) { continue; } } targetCells.Add(cityCell); } return(targetCells); }
public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, (config as AssassinateAgentConfig).Range); List <HexCell> agentCells = cells.FindAll(c => c.hexUnits.FindAll(d => d.HexUnitType == HexUnit.UnitType.AGENT && d.GetComponent <Agent>().GetPlayer() != gameObject.GetComponent <Unit>().GetPlayer()).Count != 0); return(agentCells); }
public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, (config as AttackOpCentreConfig).Range); List <HexCell> opCentreCells = cells.FindAll(c => c.OpCentre && c.OpCentre.Player != gameObject.GetComponent <Unit>().GetPlayer()); return(opCentreCells); }
public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> possibleLocations = new List <HexCell>(); List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, 3).FindAll(c => c.OpCentre || c.OpCentre); if (cells.Count == 0) { possibleLocations.Add(target); } return(possibleLocations); }
public bool CreateMercenary(CombatUnitConfig mercConfig) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(Location, 2); foreach (HexCell cell in cells) { if (cell.CanUnitMoveToCell(HexUnit.UnitType.AGENT)) { gameController.CreateMercenary(mercConfig, cell, Player); return(true); } } return(false); }
public void StartTurn() { BuildingManager.DayPassed(1); BuildConfig buildConfig = BuildingManager.GetCompletedBuild(); while (buildConfig) { buildConfig = BuildingManager.GetCompletedBuild(); } foreach (HexCell cityCell in PathFindingUtilities.GetCellsInRange(Location, influenceRange).FindAll(c => c.City)) { cityCell.City.GetCityState().AdjustInfluence(Player, influence); } }
public List <HexUnit> GetUnitsInRange(HexCell hexCell, int range) { List <HexUnit> units = new List <HexUnit>(); List <HexCell> cells = PathFindingUtilities.GetCellsInRange(hexCell, range); foreach (HexCell cell in cells) { foreach (HexUnit hexUnit in cell.hexUnits) { units.Add(hexUnit); } } return(units); }
public bool CreateUnit(CombatUnitConfig combatUnitConfig) { List <HexCell> cells = PathFindingUtilities.GetCellsInRange(hexCell, 2); foreach (HexCell cell in cells) { if (cell.CanUnitMoveToCell(HexUnit.UnitType.COMBAT)) { HexUnit hexUnit = gameController.CreateCityStateUnit(combatUnitConfig, cell, cityStateOwner.CityStateID); hexUnit.Location.UpdateVision(); cityStateOwner.UpdateVision(); return(true); } } return(false); }
public HexCell Defend(City city) { HexCell target = null; List <HexUnit> units = hexGrid.GetUnitsInRange(city.GetHexCell(), 2); foreach (HexUnit unit in units) { if (unit.HexUnitType == HexUnit.UnitType.COMBAT) { if (unit.GetComponent <Unit>().CityState&& unit.GetComponent <Unit>().CityState.CityStateID != ActiveUnit.GetComponent <Unit>().CityState.CityStateID) { hexGrid.FindPath(ActiveUnit.HexUnit.Location, unit.Location, ActiveUnit.HexUnit, true, false); target = GetFirstCellFromPath(); if (target) { return(target); } } } } if (city.GetHexCell().CanUnitMoveToCell(ActiveUnit.HexUnit)) { hexGrid.FindPath(ActiveUnit.HexUnit.Location, city.GetHexCell(), ActiveUnit.HexUnit, true, false); target = GetFirstCellFromPath(); if (target) { return(target); } } foreach (HexCell cell in PathFindingUtilities.GetCellsInRange(city.GetHexCell(), 1)) { if (cell.CanUnitMoveToCell(ActiveUnit.HexUnit)) { hexGrid.FindPath(ActiveUnit.HexUnit.Location, city.GetHexCell(), ActiveUnit.HexUnit, true, false); target = GetFirstCellFromPath(); if (target) { return(target); } } } return(target); }
public override List <HexCell> IsValidTarget(HexCell target) { List <HexCell> targetCells = new List <HexCell>(); List <HexCell> cells = PathFindingUtilities.GetCellsInRange(target, (config as PropagandaConfig).Range); List <HexCell> cityCells = cells.FindAll(c => c.City); foreach (HexCell cityCell in cityCells) { CityState cityState = cityCell.City.GetCityState(); if (!cityState || cityState.Player == gameObject.GetComponent <Unit>().GetPlayer()) { continue; } targetCells.Add(cityCell); } return(targetCells); }
private HexCell CheckNearby(Unit unit) { List <HexCell> nearbyCells = PathFindingUtilities.GetMovableCells(unit); List <HexCell> enemyCells = new List <HexCell>(); foreach (HexCell hexCell in nearbyCells) { if (cityState.visibleCells.Keys.Contains(hexCell) && unit.HexUnit.IsValidAttackDestination(hexCell)) { enemyCells.Add(hexCell); } } if (enemyCells.Count == 0) { return(null); } enemyCells = enemyCells.OrderBy(c => c.coordinates.DistanceTo(unit.HexUnit.Location.coordinates)).ToList(); return(enemyCells[0]); }