public void UpdateGrid(List <TileData> tileData, TwoDCoordinate boardSize) { int index = 0; for (int y = 0; y < boardSize.y; y++) { for (int x = 0; x < boardSize.x; x++) { if (tileData[index].isFilled) { GridNode node = new GridNode(); node.x = tileData[index].coordinates.x / 2; node.y = tileData[index].coordinates.y / 2; node.isVisited = -1; node.hasPortal = tileData[index].hasPortal; node.portalX = tileData[index].portalX; node.portalY = tileData[index].portalY; grid[x, y] = node; } else { grid[x, y] = null; } index++; } } }
public List <GridNode> GetPath(List <TileData> tileData, TwoDCoordinate startPos, TwoDCoordinate endPos) { UpdateGrid(tileData, boardSize); grid[startPos.x / 2, startPos.y / 2].isVisited = 0; SetDistance(startPos.x, startPos.y); SetPath(endPos.x, endPos.y); path.Reverse(); return(path); }
GridNode FindClosest(int x, int y, List <GridNode> nodes) { int currentDistance = 999999; int indexNumber = 0; for (int i = 0; i < nodes.Count; i++) { if (TwoDCoordinate.Distance(new TwoDCoordinate(x, y), new TwoDCoordinate(nodes[i].x, nodes[i].y)) < currentDistance) { currentDistance = TwoDCoordinate.Distance(new TwoDCoordinate(x, y), new TwoDCoordinate(nodes[i].x, nodes[i].y)); indexNumber = i; } } return(nodes[indexNumber]); }
bool CanAttack(string playerUUID, int agentIndex, int targetAgentIndex, int attackIndex) { if (IsTurnAndPhase(playerUUID, TurnPhase.Battle)) { if (board.GetAgent(agentIndex).MonsterData != null && board.GetAgent(targetAgentIndex).MonsterData != null && GetPlayer(playerUUID).HasCrests(RequestedCrestData.GetRequestedCrestDatasFromCosts(board.GetAgent(agentIndex).MonsterData.SpecialAbilities[attackIndex].Costs))) { float distance = TwoDCoordinate.FlyDistance(board.GetAgent(agentIndex).TileData.coordinates, board.GetAgent(targetAgentIndex).TileData.coordinates); if (distance <= board.GetAgent(agentIndex).MonsterData.SpecialAbilities[attackIndex].Range) { return(true); } } } return(false); }
public void SetGrid(List <TileData> tileData, TwoDCoordinate boardSize) { this.boardSize = new TwoDCoordinate(boardSize.x, boardSize.y); grid = new GridNode[boardSize.x, boardSize.y]; UpdateGrid(tileData, boardSize); }