public List <Vector3Int> TilesInAttack(RangeDefined range) { if (range.IsTileValid == null) { range.IsTileValid = GridHelper.CanAttackThrough; } return(GridHelper.TilesInRange(Coords(), range)); }
public static List <Vector3Int> TilesInRange(Vector3Int startPos, RangeDefined range) { if (range.basicRange) { Debug.LogError("Invalid request in GridHelper.TilesInRange. You should request range.basicRange from a PlayerManager"); return(new List <Vector3Int>()); } if (range.allowedDirections == null) { range.allowedDirections = new List <int>(); } if (range.allowedDirections.Count == 0) { for (int i = 0; i < 6; ++i) { range.allowedDirections.Add(i); } } if (range.dist == -1) // i want to do this even if (range.straight == true) accidenatly { List <Vector3Int> tiles = TilesInDistance(startPos, -1, range.self); return(FilterInvalidTiles(tiles, range.IsTileValid)); } if (range.straight) { List <Vector3Int> tiles = new List <Vector3Int>(); foreach (int dir in range.allowedDirections) { List <Vector3Int> temp = TilesInDirection(startPos, dir, range.dist, range.piercing, range.IsTileValid); foreach (var tile in temp) { tiles.Add(tile); } } if (range.self) { tiles.Add(startPos); } return(tiles); //filtering must be done in TilesInDirection, so no need to do it here } List <Vector3Int> tiles1 = TilesInDistance(startPos, range.dist, range.self); return(FilterInvalidTiles(tiles1, range.IsTileValid)); }
public void CardSelectTile(Vector3Int start, RangeDefined range, SelectTileDel SelectTileFunction) { List <Vector3Int> tiles; if (range.basicRange) { tiles = TilesInBasic(range.allowedDirections); } else { tiles = GridHelper.TilesInRange(start, range); } StartCoroutine(CardSelectTileRoutine(tiles, SelectTileFunction)); }
public void CardAttack(int cardDmg, bool weaponAtk, RangeDefined range, CardActionExecutor cae, int currentAction) { CardAttack(cardDmg, weaponAtk, DamageTarget, range, cae, currentAction); }
public void CardAttack(int cardDmg, RangeDefined range, CardActionExecutor cae, int currentAction) { CardAttack(cardDmg, false, DamageTarget, range, cae, currentAction); }
public void CardAttack(int cardDmg, bool weaponAtk, DealDamageDel DamageFunction, RangeDefined range, CardActionExecutor cae, int currentAction) { if (range.IsTileValid == null) //this gets done in TilesInAttack anyway, but whatever { range.IsTileValid = GridHelper.CanAttackThrough; } List <Vector3Int> tiles; if (range.basicRange) { tiles = TilesInBasic(range.allowedDirections); } else { tiles = TilesInAttack(range); } foreach (var tile in tiles) { GridHelper.groundTilemap.SetColor(tile, atkRangeColor); } List <RaycastHit2D> hits = GridHelper.RaycastTiles(tiles); List <IAttackable> targets = new List <IAttackable>(); foreach (var hit in hits) { IAttackable target = hit.collider.gameObject.transform.parent.GetComponent <IAttackable>(); if (target != null) { target.SetAttackableOutline(true); targets.Add(target); } } StartCoroutine(CardAttackRoutine( tiles, (range.basicRange && playerInfo.basicIsPiercing && playerInfo.basicIsStraight) || (!range.basicRange && range.straight && range.piercing), cae, currentAction, cardDmg, weaponAtk, DamageFunction, targets)); }
public void CardSelectTile(RangeDefined range, SelectTileDel SelectTileFunction) { CardSelectTile(Coords(), range, SelectTileFunction); }
public List <Vector3Int> TilesInAnyMove(RangeDefined range) { range.IsTileValid = GridHelper.CanStandOn; return(GridHelper.TilesInRange(Coords(), range)); }