Exemple #1
0
    //returns removed tiles
    public ISet <Tile> UpdateTrackedTiles()
    {
        var trackedTiles = new HashSet <Tile>();

        foreach (Unit unit in TrackedUnits)
        {
            var moveableTiles   = BattleMovementUtils.FindViableMoves(unit);
            var attackableTiles = BattleMovementUtils.FindAttackedTiles(moveableTiles, unit.GetWeaponsRanges());
            trackedTiles.UnionWith(attackableTiles);
        }

        TrackedTiles.ExceptWith(trackedTiles);
        var diff = new HashSet <Tile>(TrackedTiles);

        TrackedTiles = trackedTiles;
        return(diff);
    }
Exemple #2
0
    //disables overlays then if unit occupies the tile, calculates move overlays for it
    public void OnNewTile(Tile tile)
    {
        CurrentUnit = null;

        _overlaysManager.DisableTemporaryOverlays();

        if (tile.IsOccupied())
        {
            CurrentUnit = tile.Occupier;
            if (_battleTurnManager.IsInActiveGroup(CurrentUnit))
            {
                UnitMoveTiles = BattleMovementUtils.FindViableMoves(CurrentUnit);
                AttackedTiles = BattleMovementUtils.FindAttackedTiles(UnitMoveTiles, CurrentUnit.GetWeaponsRanges());
                _overlaysManager.EnablePlayerMoveOverlays(UnitMoveTiles);
                _overlaysManager.EnableAttackedOverlays(AttackedTiles);
            }
            else
            {
                EnemyTiles = BattleMovementUtils.FindViableMoves(CurrentUnit);
                EnemyTiles.UnionWith(BattleMovementUtils.FindAttackedTiles(EnemyTiles, CurrentUnit.GetWeaponsRanges()));
                _overlaysManager.EnableEnemyOverlays(EnemyTiles);
            }
        }
    }