Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 7
0
    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);
        }
    }
Ejemplo n.º 8
0
    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);
    }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
    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);
    }
Ejemplo n.º 11
0
    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);
    }
Ejemplo n.º 12
0
    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]);
    }